分类: DB2/Informix
2008-04-13 22:28:17
新的数据库产品的发布,伴随着许多新的功能和新的支持,如果新版本的数据库能解决困扰企业平时头痛的技术问题,升级是最好的选择了。Ids10.0在安全性,服务器可用性,性能方面,SQL,备份和恢复,应用程序开发等方面都有所增强。下面简单介绍一下ids9.4升级到ids10.0步骤。
[关键字]
数据库,Informix,ids10.0,ids9.4,升级,
1,1, 验证数据库空间大小。确保rootdbs有10%的可用数据空间,plogdbs,llogdbs有3000个可用页,每个数据空间每个数据库有2000可用数据空间。
2,2,确保没有用户需要使用数据库,关闭数据库。
3,3,修改informix用户下面的etc/sqlhosts文件,把需要升级的数据库服务器名称(DBSERVERNAME)所对应的服务器名(servicename)修改为暂时没有用的端口。或者修改/etc/services文件中对应服务器名的端口号。两者的目的是一样的,就是重起数据库后更改服务的端口,防止其他用户连接到数据库。
4,4, 重起数据库,此时数据库的服务端口已改,做数据库的全备。(备份大于一切呀,在升级的过程中很肯定会出现问题的)
5,5, 执行onmode -yuk关闭数据库
6,6,把老的Informix文件改名。例如:mv Informix Informix.old
7, 7,检查/etc/nsswitch.conf文件。确保hosts那一行只有files字段,没有dns字段。不知道是不是Informix10.0的安全性提高的的缘故,如果nsswitch.conf文件中hosts那一行中有dns字段的话,会先通过dns查找informix目录下的etc/sqlhosts文件中对应的主机名,如果dns查询不到,初始化informix会失败。
8,8,新建一个Informix的文件夹,把文件夹用户,属组改为Informix,并把老文件夹中的环境变量等信息复制到新文件中。
Mkdir Informix ; chown Informix:Informix Informix ; cp Informix.old/.* Informix
9, 安装10.0版本的informix.
10,设置Informix/etc目录下面的sqlhosts文件,sm_versions文件,$ONCONFIG文件和老配置文件一样。设置$ONCONFIG文件的时候,可以先把TAPEDEV,LTAPEDEV选项置为空,防止转换期间日志过多。
11,执行oninit –v 开始数据库升级。升级的过程和平时启动差不多,不过通过日志文件可以具体看出系统都在执行那些步骤。
日志信息:
Event alarms enabled. ALARMPROG = '/home/informix/etc/alarmprogram.sh'
Booting Language
Loading Module
Booting Language
Loading Module
DR: DRAUTO is 0 (Off)
IBM Informix Dynamic Server Version 10.00.UC4
Conversion from version 9.40 Started
Conversion control block initialization
Succeeded
Initialization of Conversion Session
Conversion waiting for physical recovery to complete
Initialization of Conversion Session Succeeded
Conversion Disabling Client Connections
IBM Informix Dynamic Server Initialized -- Shared Memory Initialized.
Physical Recovery Started at Page (2:99695).
Physical Recovery Complete: 0 Pages Examined, 0 Pages Restored.
Logical Recovery Started.
10 recovery worker threads will be started.
Converting Partition Header Page 1:14.
Converting Partition Header from version 9.40
Succeeded
Converting Partition Header Page 1:15.
Converting Partition Header from version 9.40
Succeeded
。。。。。。中间省略
Converting Partition Header from version 9.40
Succeeded
Logical Recovery has reached the transaction cleanup phase.
Logical Recovery Complete.
0 Committed, 0 Rolled Back, 0 Open, 0 Bad Locks
。。。。。。
日志显示继续转换参数等信息,从这里可以看出informix9.4和informix10.0之间的参数都有那些改变等等:
Onconfig parameter JVPJAVAVM modified from hpi:server:verify:java:net:zip:jpeg to jsig:hpi:jvm:java:net:zip:jpeg.
Onconfig parameter JVPJAVALIB modified from /lib/i386/ to /bin.
Onconfig parameter JVPCLASSPATH modified from /home/informix/extend/krakatoa/krakatoa.jar:/home/informix/extend/krakatoa/jdbc.jar to /home/informix/extend/krakatoa/krakatoa.jar:/usr/informix/extend/krakatoa/jdbc.jar.
Onconfig parameter LOGSIZE modified from 4000 to 2000.
Onconfig parameter TAPEDEV modified from /dev/st0 to /dev/null.
Onconfig parameter TAPESIZE modified from 73728000 to 10240.
Onconfig parameter LTAPEDEV modified from /dev/st0 to /dev/null.
Onconfig parameter LTAPESIZE modified from 73728000 to 10240.
Onconfig parameter DUMPDIR modified from /tmp to /home/informix/tmp.
Onconfig parameter SHMVIRTSIZE modified from 64000 to 32000.
Onconfig parameter SHMADD modified from 8192 to 16000.
Onconfig parameter ALARMPROGRAM modified from /home/informix/etc/log_full.sh to /home/informix/etc/alarmprogram.sh.
中间还有很多有用的信息,有兴趣的可以自己查看日志。
日志的接近最后出后出现:
Conversion Completed Successfully
说明转换完成
一直到最后显示:
Maximum server connections 0
On-Line Mode
说明升级完成,此时数据库已经是10.0了,不过还有一下后续的工作需要继续。
升级中遇到的问题(先在这里写出来吧)
1, 第一个错误是kaio错误,升级时候的日志信息提示:
23:35:33 IBM Informix Dynamic Server Version 10.00.UC4
23:35:33 Assert Failed: initializing KAIO failed
23:35:33 IBM Informix Dynamic Server Version 10.00.UC4
23:35:33 Who: Session(1, informix@Test, 0, (nil))
Thread(11, kaio, 0, 1)
File: kaioapi.c Line: 246
23:35:33 Results: io_queue_init(32768) failed returning -22, errno = 0
23:35:33 stack trace for pid 5195 written to /home/informix/tmp/af.3f364c5
23:35:33 See Also: /home/informix/tmp/af.3f364c5, shmem.3f364c5.0
23:35:35 initializing KAIO failed
23:35:36 io_queue_init(32768) failed returning -22, errno = 0
23:35:36 Assert Failed: kaiothread() ERROR
23:35:36 IBM Informix Dynamic Server Version 10.00.UC4
23:35:36 Who: Session(1, informix@test, 0, (nil))
Thread(11, kaio, 0, 1)
File: kaio.c Line: 2063
23:35:36 stack trace for pid 5195 written to /home/informix/tmp/af.3f364c5
23:35:36 See Also: /home/informix/tmp/af.3f364c5
23:35:38 kaio.c, line 2063, thread 11, proc id 5195, kaiothread() ERROR.
23:35:38 PANIC: Attempting to bring system down
23:35:38 semctl: errno = 22
23:35:38 semctl: errno = 22
通过查看以日志,已经上网检查,发现是redhat as4u1 默认安装的时候没有kaioapi.c文件,简单的解决方法是在informix用户的环境变量中增加:export KAIOOFF=1
2, 转换出错,提示存放数据文件的raw文件权限不对,这个是10.0版本的安全性比较高造成的,在9.4版本中,只要是Informix用户和组的权限是读写的就可以了,不强求其它用户的权限。但是在10.0中,数据空间的权限必须是660,把文件修改为660就可以了。
3, Redhat as3u6的系统,转换完成后执行onmonitor,ontape等命令会出现“段错误”。
[informix@test etc]$ onmonitor
段错误
暂时发现应该是系统版本兼容性的原因,对内存的支持性不好,修改informix参数只能解决部分问题,这个问题暂时没有得到解决。
接着上面的转换继续:
12,更新统计信息。用dbaccess命令每个库运行update statistics语句。执行这个语句的时候大库的时候运行的时间很长,请耐心等待。
13,执行oncheck -me压缩扩展数据块减少分区头中使用的存储量。
14,检查数据库是否正常,然后停数据库,把上面提到的TAPEDEV,LTAPEDEV选项重新该过来,把sqlhosts文件中的服务器名(servicename)修改为系统正式的信息。
15,启动数据库,做一次全备。数据库升级完成。