资源预览内容
第1页 / 共10页
第2页 / 共10页
第3页 / 共10页
第4页 / 共10页
第5页 / 共10页
第6页 / 共10页
第7页 / 共10页
第8页 / 共10页
第9页 / 共10页
第10页 / 共10页
亲,该文档总共10页全部预览完了,如果喜欢就下载吧!
资源描述
Informix 数据库升级指南 谢烨, 软件工程师, IBM孙国荣, 软件工程师, IBM谭永贻, 高级技术经理, IBM简介: Informix 数据库升级是 Informix 管理员的一项重要且具有挑战性的工作。本文主要介绍 Informix 数据库升级前的准备工作、升级的操作过程、升级后的调优工作、升级的注意事项,使读者对 Informix 数据库升级有较为全面的理解。引言Informix 11 与之前版本的 Informix 相比,新增了很多特性,如 SQL 语句跟踪、非阻断的检查点、SDS 辅节点、星型连接、自动存储扩展、图形界面的管理工具 OAT 等,并且在性能上有了很大的提升。另外,由于 Informix 版本 7、9、10 已进入 EOS (End Of Support) 状态,所以很多 Informix 用户纷纷选择将 Informix 升级到版本 11。回页首Informix 数据库升级简介Informix 数据库升级是指把使用的 Informix 数据库从低版本转化为高版本。对 Informix 数据库进行升级是一项系统工程,包括升级前的测试、升级前的检查、升级操作过程、升级后的测试、升级后的调优等。Informix 数据库升级有两种类型:in-place 和 non-in-place。In-place 升级中,新版本的 Informix 使用的数据文件与旧版本的 Informix 相同,数据库管理员无需导出导入数据。Non-in-place 升级中,新版本的 Informix 使用的数据文件与旧版本的 Informix 不同,数据库管理员需要导出导入数据。In-place 升级比较简单,升级操作时间短。non-in-place 升级比较复杂,升级操作时间长,所需的硬件资源多,风险较小。在一些情况下我们只能使用 non-in-place 升级,例如改变了硬件或操作系统。两种类型的 Informix 数据库升级的示意图如图 1 所示。图 1. 两种类型的 Informix 数据库升级的示意图 回页首Informix 数据库升级的测试计划在升级前和升级后,我们需要对 Informix 数据库进行测试,然后比较升级前的测试结果和升级后的测试结果,以确保现有的数据库应用程序在新版本数据库上运行的结果与在旧版本数据库上运行的结果相同,在新版本数据库上运行的性能好于在旧版本数据库上运行的性能。于是,我们必须预先制定周密的测试计划。测试计划中应收集的信息主要包括以下这些方面:升级前后每个数据库的 schema 我们可以使用 dbschema 命令得到升级前后每个数据库的 schema,并比较它们。我们需要验证升级前后数据库的 schema 没有被改变。升级前后磁盘空间的分配情况,如 dbspace、chunk 、extent 等的情况 可使用 onstat -d 查看 dbspace 和 chunk 的情况。可使用 oncheck -pe 查看 extent 的情况。升级前后每个数据表的行数 我们需要验证升级前后数据表的行数是一样的。可使用如下的 SQL 语句:select count(*) from ;升级前后一些列的总和或平均值 可使用如下的 SQL 语句:select sum( ) from ; select avg( ) from ;升级前后一些 SQL 语句的结果 我们可以挑选出一些较复杂(比如涉及到多表查询)的 SQL 语句,然后在升级前后运行这些 SQL 语句。我们需要验证升级前后这些 SQL 语句的运行结果是一样的。升级前后一些重要 SQL 语句的查询计划 (query plan) 和运行时间 在某一个 session 中运行如下 SQL 语句后,Informix 将把该 session 中后续的 SQL 语句的查询计划记录在 sqexplain.out 文件中。SET EXPLAIN ON;可使用如下方式得到 SQL 语句的运行时间:1. 将 SQL 语句写在一个后缀名为 sql 的文件中,例如 my.sql2. 在 shell 上运行如下命令:time dbaccess 例如 : time dbaccess crmdb my.sql升级前后数据库(不包括应用程序)关于典型事务的吞吐量 在 dbaccess 中使用存储过程产生大量典型事务,测试数据库(不包括应用程序)在单位时间内最多能处理多少典型事务。升级前后业务系统(包括数据库和应用程序)关于典型业务的吞吐量 测试业务系统在单位时间内最多能处理多少典型业务。升级前后正常负载下系统资源(CPU、内存、硬盘等)的使用情况 可使用 onstat、iostat 等命令。升级前后较大负载下系统资源(CPU、内存、硬盘等)的使用情况 可使用 onstat、iostat 等命令。在对生产系统进行升级前,我们应在模拟系统中对“Informix 数据库升级”进行演练。在对模拟系统、生产系统进行升级的前后,我们都应执行测试计划。在对生产系统进行升级前,我们还应在模拟系统中对“数据库升级失败时的应对方案”进行演练。如果在“数据库升级失败时的应对方案”中使用“onmode -b”的数据库回退方案,那么我们还需制定“验证数据库回退的正确性”的测试计划并在模拟系统中执行。回页首Informix 数据库升级前的检查检查是否有足够的用于升级的磁盘空间如果是 non-in-place 升级,一般应使新的存储空间比旧的存储空间大 10% 以上。如果是 in-place 升级,应确保: Root Chunk (Chunk 0) 至少要有 10% 的空间是可用的。 足够的逻辑日志空间以重建 sysmaster、sysadmin 、sysutils 数据库。 Partition header pages 必须有一些可用空间。( 这些可用空间供 Informix 11 中的某些描述符或新特性使用。) 如果一个 dbspace 上有 n 个 database,则这个 dbspace 还需要 (n * 2000) KB 的可用空间。 可用下面的 SQL 语句计算每个数据库空间 (dbspace) 需要多少空间。(free_space_req 的单位是 KB。)DATABASE sysmaster; SELECT partdbsnum(partnum) dbspace_num, trunc(count(*) * 2000) free_space_req FROM sysdatabases GROUP BY 1 ORDER BY 1;可用下面的 SQL 语句计算每个数据库空间 (dbspace) 还有多少可用空间。(free_space_avail 的单位是 page。)DATABASE sysmaster; SELECT dbsnum dbspace_num, sum(nfree) free_space_avail FROM syschunks GROUP BY 1 ORDER BY 1;检查是否有数据表的 extent 数目大于 200为了使升级更顺利的进行,如果一个数据表的 extent 数目大于 200,那么我们最好重建该数据表。在重建时为该数据表选择更大的 extent size,从而使该数据表的 extent 数目小于 200。可用下面的 SQL 语句查找 extent 数目大于 200 的数据表:DATABASE sysmaster; SELECT dbsname, tabname, nextns FROM systabnames t, sysptnhdr p WHERE t.partnum = p.partnum AND p.nextns 200 ORDER BY 3 DESC;检查新增关键字在对数据库进行升级前,管理员应先检查数据库的 schema 中和数据库应用程序的 SQL 语句中是否含有新版本数据库中新增的关键词 (keyword)。例如要将 Informix 9.40 数据库升级到 Informix 11.50,管理员应先检查 Informix 9.40 数据库中是否含有 Informix 10.00、Informix 11.00、Informix 11.50 数据库中新增的关键词。如果含有的话,应先将 Informix 9.40 数据库中的这些“新增关键词” 进行修改,直到 Informix 9.40 数据库中不含有这些“新增关键词”。“ 新增关键词” 的列表请参阅 Informix Migration Guide。检查是否有“outstanding in-place table alters”检查数据库中是否有“outstanding in-place table alters”,如果有则需要先消除“outstanding in-place table alters”。(具体过程请参见“Download”中的“检查和消除 OutstandingInPlaceTableAlters.doc”)Informix 数据库升级操作过程Informix 数据库升级有两种类型:in-place 和 non-in-place。下面将分别介绍这两种类型升级的具体操作过程。in-place 升级操作过程in-place 升级操作过程主要包括:1. 安装配置新版本 Informix 数据库服务器2. 检查旧版本 Informix 数据库的正确性3. 备份旧版本 Informix 数据库4. 对 Informix 数据库里的数据结构等进行转换5. 检查新版本 Informix 数据库的正确性下面通过一个 in-place 升级操作过程的示例使读者对 in-place 升级操作过程有更好的掌握。在这个示例中,我们将 Informix 数据库从版本 9.40 升级到版本 11.50。1. 将 Informix 9.40 数据库服务器的各个配置文件(如 onconfig、sqlhosts 等)拷贝到备份文件夹。假设初始时 Informix 9.40 数据库服务器的一些配置如下: 操作系统的环境变量 INFORMIXSERVER 为 bankserver 操作系统的环境变量 INFORMIXDIR 为 /opt/informix940 onconfig.bank 文件里的三个参数: SERVERNUM 33 DBSERVERNAME bankserver DBSERVERALIASES bankserverdr,bankservershm sqlhosts.bank 文件: bankserver onsoctcp localhost 6784 bankserverdr drsoctcp localhost 6785 bankservershm onipcshm localhost 67862.3. 安装 Informix 11.50 数据库服务器。4. 配置 Informix 11.50 数据库服务器。管理员可参考 Informix 9.40 数据库服务器的配置参数,来对 Informix11.50 数据库服务器进行配置。(特别要注意的是:如果一些配置参数是文件路径,由于 Informix 9.40 数据库服务器和 Informix 11.50 数据库服务器的 INFORMIXDIR 不同,这些配置参数有可能需要修改。)为了避免应用程序在 Informix 升级过程中连接上 Informix 11.50 数据库服务器,我们可对 Informix 11.50 数据库服务器采取“ 切断网络连接” 或“修改数据库实例的名字和端口号”等措施。(“修改数据库实例的名字和端口号”指将 Informix 11.50 数据库实例的名字和端口号修改得与 Informix 9.40 数据库实例不同。)(在后面的步骤中,Informix 9.40 数据库服务器是以 oninit -s 的方式启动的,启动后处于 quiesce
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号