afliao
作者afliao·2010-11-19 13:19
数据库管理员·南大通用

IDS9.4到IDS11.5升级过程以及前期需要考虑的问题

字数 7873阅读 2018评论 0赞 0

升级背景:

2009IBM先后对Informix V9.4V10版本停止了技术支持,对于停止技术支持的版本中的深层次问题、产品bug等将不提供解决和修正方案,IBM 建议客户升级至IDS V11版。

 

平台:SunOS
 
升级的前期准备工作:
1,做好数据库的备份。对要进行升级的数据库实例要进行完全的0级备份,以及确保备份后能够成功恢复!在升级的过程中,如果完成了对数据库的检验而在数据格式的转换过程中出现失败,会导致数据不一致。这种情况下需要从备份进行恢复
2. 操作系统补丁。如果系统比较老,补丁不足,IDS11.5可能无法运行,造成升级失败;
3. 现数据库中表的extent数目,因为升级时数据转换的要求,需要每个表至少可用的extent数目为8.Solaris平台,缺省2k页,一般最大extent数目为230左右,具体数字与表的行宽有关,曾遇到的一个情况,一个超宽的表甚至最大extent数目可能只有150左右。如果数据表升级时占用的extent数目接近表最大extent数目,即>最大extent数目-8,那么数据转换会报告失败。这种情况需要重新安装旧版本的数据库程序文件即可退回旧版本,解决extent数目过大的问题后,再继续升级。
4,对老版本的informix安装目录进行备份。如果在升级过程中IDS11.5已经成功安装(假设是覆盖安装,即安装在老版本的目录),但升级过程中发现第三步的extent检查失败,这时候需要回到旧版本中,解决表的extent问题。因此这里需要从老的安装目录备份文件中还原informix的安装目录。
e.g: tar cvf  informix9.4.tar /opt/informix  (注意:如果这里用root用户tar起来的文件,解包时必须也是root,否则文件权限可能不正确,导致回退失败!)
5,对数据库实例和关键的数据库进行数据的一致性检查:
oncheck -cr   //检验数据库实例的系统保留页
oncheck -ce //检验实例中的extents
oncheck -cc <dbname> //检验数据库的系统目录表
oncheck -cDI <dbname> //检验数据库中数据以及索引的完好性
6,检查操作系统内核参数是否正确
solaris的内核配置文件为/etc/system
eg:

set semsys:seminfo_semmap=64  

       set semsys:seminfo_semmni=4096

       set semsys:seminfo_semmns=4096

       set semsys:seminfo_semmnu=4096

       set semsys:seminfo_semume=64

       set semsys:seminfo_semmsl=500

       set shmsys:shminfo_shmmax=4398046511104

       set shmsys:shminfo_shmmin=100

       set shmsys:shminfo_shmmni=500

       set shmsys:shminfo_shmseg=100

7,对数据备份恢复时间与升级失败所导致的回退时间进行评估,对升级失败要有应急预案。
 
实际升级过程中,问题2是出现比较多。所以建议列出所有数据库中extent数目超过100的表,并对其中接近最大extent数目的表提前进行数据整理或者重建,如果该表可以删除,直接删除表也可以避免升级过程中的数据转换失败的情况。
以下为计算表后续能够增加的extent数目的方法:
 
1.通过oncheck -pt 获取的物理地址 e.g:
 oncheck -pt userdb:user
TBLspace Report for userdb:informix.user
    Physical Address               2:513
    Creation date                  09/27/2010 17:00:02
    TBLspace Flags                 801        Page Locking
                                              TBLspace use 4 bit bit-maps
    Maximum row size               24       
    Number of special columns      0        
    Number of keys                 0        
    Number of extents              1        
    Current serial value           1        
    Current SERIAL8 value          1        
    Current BIGSERIAL value        1        
    Current REFID value            1        
    Pagesize (k)                   2        
    First extent size              8        
    Next extent size               8        
    Number of pages allocated      8        
    Number of pages used           2        
    Number of data pages           1        
    Number of rows                 1        
    Partition partnum              2097214  
    Partition lockid               2097214  
    Extents                      
         Logical Page     Physical Page        Size Physical Pages
                    0            2:1223           8          8
2.转换物理地址为 16 进制数 e.g:
echo "2"|nawk '{printf "%xn",$1}'
2
echo "513"|nawk '{printf "%xn",$1}'
201
3,通过onchek -pP 来获取frcnt.
oncheck -pP 0x2 0x201|more
addr             stamp    chksum nslots flag type         frptr frcnt next     prev
2:513            1546551  9b23   5      802  PARTN        172   1852  0        0  
 
4,计算后续能够增加的extent数目:
freeexts=`expr 1852  / 8`
建议对freeexts小于8的表进行重建。
进行extent数量的检查最好是通过脚本检验,因为如果数据库中表的数量非常多,手工检查的话这个工作量是很大,而且说不好就有漏网之鱼。
 
简单介绍下升级步骤:
1,上传IDS11.5安装介质
 
2,安装IDS11.5。
这一步进行覆盖安装,即安装在IDS9.4的目录,覆盖原版本的安装文件。将安装介质拷贝到$INFORMIXDIR目录,tar开,su到root用户下(利用informix的环境变量),运行:ids_install命令。
 
3,IDS11.5安装好以后,根据IDS9.4的$ONCONFIG配置文件修改新的配置文件。
 
4,启动数据库:oninit -v   并监控message log内容:
tai -f /opt/informix/log/online.log
这一步可能出现的问题:
  (1)如果在日志中发现extent检验没过关,这时候还没有开始数据的转换,则需要从原先的安装目录备份文件进行安装文件的还原(如果当初tar安装目录的时候用的是root用户,解包也要root,确保安装文件的权限正确),如果还存在原来IDS9.4的安装介质也可以,将IDS9.4重装一遍,启动数据库(oninit -v),对日志中所列出的表进行重建,适当增大extent size以及next size。
  (2)如果数据格式的转换已经开始,但在中途由于某些原因而导致转换失败,这是个比较麻烦的事情:首先需要将安装目录文件恢复到IDS9.4,然后从升级前的数据库备份中还原数据库实例。如果数据库数据量很大的话,这个时间可能要好几个小时。恢复完成后对日志进行分析,发现问题的源头后,升级从头开始。
 
对于存在双机的系统,升级前需要检查sqlhosts文件中的hostname列是否修改为浮动ip。
如果用的实际物理ip,升级完成后会出现用程序用实际ip(按理程序中也应为浮动ip)访问数据库出现权限不足的问题。这点非常重要。
 
升级后的验证工作:
1,对所有数据库(包括系统库)做低模式的统计更新: update statistics
2,使用dbaccess等工具进行验证
3,启动应用程序验证
 
数据库版本升级的过程并不复杂,但是在升级过程中所需要考虑的问题比如对升级失败的恢复工作,升级过程对业务的影响等等,却需要有一个很全面的考虑。
 
 

 

如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!

0

添加新评论0 条评论

Ctrl+Enter 发表

作者其他文章

  • GBase 8t SQLIDEBUG跟踪ODBC,JDBC调用过程
    评论 0 · 赞 0
  • GBase 8t OAT安装使用
    评论 0 · 赞 0
  • 理解aio和kaio
    评论 0 · 赞 0
  • 乱写一通
    评论 0 · 赞 0
  • 今天注册了informixchina
    评论 0 · 赞 0
  • 相关文章

    相关问题

    相关资料

    X社区推广