EBS 11i数据库升级(9i->10g)几点事项
Posted on June 9, 2010
最近几日在评估和测试EBS的系统升级(11i升级到R12),虽然官方的升级文档里介绍的比较详细了,但是依旧会出现一些容易疏忽的问题,这里做一些记录。这里并不是单纯的数据库升级,需要考虑EBS的特殊应用。对于升级方案,标准的有三种:
- 同时升级数据库和应用。
- 先升级数据库到10gR2,然后升级应用到R12。
- 先升级数据库到11gR2,然后升级应用到R12。
其中第2和第3种方案有点类似,都是将整个升级方案划分为两个阶段,只是数据库版本不同。实际上,从技术上看,第1种方案也是两步走,只是在应用层跳过一些过渡性的补丁直接升级到R12。
在数据库升级方面,升级路线主要有下面两种:
- 路线1: 9.2.0.6 -> 9.2.0.8 -> 11.2.0.1
如果是Solaris系统,则要求系统版本至少为 Solaris 10 Update 6。 - 路线2: 9.2.0.6 -> 10.2.0.1 -> 10.2.0.4
注:最新patchset是10.2.0.5,只是升级文档依旧停留在10.2.0.4。
从一般认识上讲,Oracle数据库在下一个大版本出来后,上一个版本才被认为是相对更稳定的,所以此处选择第二条路线。
数据库升级方式简单而言有以下几种:
- DBUA,直接通过图形化工具升级,这个最简单。
- Manual,类似于上一种方式,只是手工进行各个步骤的升级操作。
- Export/Import
有利于数据表的整理,重构数据库,比如修改字符集、数据文件、表空间参数等,在升级时间上,比DBUA和Manual两种方式都要长。 - 利用数据复制等技术,升级备用环境后再切换。
由于允许停机,并且暂无特殊的要求,所以这里使用DBUA做升级操作。
在升级之前,建议卸载statspack,并且先解决Invalid Objects的问题。此外,数据库升级后DBLINK需要重建,所以先准备相关重建脚本。下面按照文档步骤升级数据库9.2.0.6 至 10.2.0.4,每个步骤都列在下面,对几个步骤中需要额外关注的地方做了备注。
- Verify software versions
检查现在软件版本,基本上应该不会有问题的,留意一下AD版本,最新版本是11i.AD.I.7,不过要求11i.AD.I.6就可以了。 - Migrate to Oracle Portal 10g (conditional)
- Deregister the current database server (conditional)
- Update application tier context file with new database listener port number (conditional)
- Export OLAP analytical workspaces (conditional)
- Prepare to create the 10.2.0 Oracle home
设置ORACLE_HOME环境变量,如 export ORACLE_HOME=/u08/test/proddb/10.2.0 - Install the base 10.2.0 software
安装10gR2软件,不要选择升级现有数据库,因为要先打一些补丁。这个过程最后会写oraclehomproperties.xml,要保证对应目录有可写权限。比如我曾遭遇了这个错误
inventory/ContentsXML/oraclehomproperties.xml (Permission denied). - Install Oracle Database 10g Products from the 10g Companion CD
- Perform 10.2.0.4 patch set pre-installation tasks
这是正常的打数据库补丁操作,留意几个环境变量的修改就可以了。如:export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/perl/bin:$PATH export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH export PERL5LIB=$ORACLE_HOME/perl/lib:$ORACLE_HOME/perl/lib/site_perl:$PERL5LIB
- Perform 10.2.0.4 patch set installation tasks
- Create nls/data/9idata directory
- Apply additional 10.2.0.4 RDBMS patches
- Shut down Applications server processes and database listener
- Prepare to upgrade
- Upgrade the database instance
执行utlu102i.sql查看升级后的变动情况,然后执行DBMS_STATS.GATHER_SCHEMA_STATS 收集统计数据以加快升级速度。在升级的时候如果没有列出所需的ORACLE_HOME,则需要检查并整理一下oratab。 - Modify initialization parameters
对于sga_target等参数,最好先计算以下之前的SGA大小再设置,其余的参考文档设置即可。 - Additional database configuration
- Perform 10.2.0.4 patch set post-installation tasks
- Install Oracle Data Mining and OLAP
- Natively compile PL/SQL code (optional)
- Fix Korean lexers
升级韩语分词,对于简体中文用户不必进行。
注意:如果将来需要升级EBS至R12,则这一步是必须的,否则升级过程中会出错:Uploading from staging tables Error loading seed data for CS_KB_SOLN_CATEGORIES_VL: CATEGORY_ID = 1, ORA-29877: failed in the execution of the ODCIINDEXUPDATE routine ORA-20000: Oracle Text error: DRG-50857: oracle error in textindexmethods.ODCIIndexUpdate ORA-20000: Oracle Text error: DRG-10602: failed to queue DML change to column for primary key DRG-13201: KOREAN_LEXER is desupported ORA-30576: ConText Option dictionary loading error
- Import OLAP analytical workspaces (conditional)
同上,如果将来需要升级EBS至R12,则这一步是必须的,稍微不同的时,到时可以不必做“升级”操作,而是直接删除重建:exec dbms_aw.execute('aw delete zpb.zpbcode'); exec dbms_aw.execute('aw delete zpb.zpbdata'); exec dbms_aw.execute('aw delete zpb.zpbannot'); sqlplus '/ as sysdba' @$APPL_TOP/zpb/12.0.0/patch/115/SQL/zpbmakeaws.sql - Start the new database listener (conditional)
- Run adgrants.sql (conditional)
- Grant create procedure privilege on CTXSYS
- Implement and run AutoConfig
先检查TNS_ADMIN变量是否指向新的路径,并检查listener.ora,看SID_LIST_TEST中是否已经添加了相应的SID,netca创建的listener.ora可能会缺少这个信息。
这里尤其需要留意的是,adbldxml.pl 创建配置文件后,如果做adconfig.pl会报错:Can't locate object method "runPipedCmd" via package "ADX::util::Sysutil" at /u08/test/proddb/10.2.0/appsutil/bin/adconfig.pl line 806.
这是由于PERL5LIB没有包含新的appsutil中的perl lib所致,手工加上再执行就可以了。
afdbprf.sh 这一步还会报错:ORA-12504: TNS:listener was not given the SID in CONNECT_DATA
手工执行可以通过,可能是afdbprf.sh 中传递变量有问题。
- Gather statistics for SYS schema
dbms_stats.gather_schema_stats这一步没有问题,但是执行dbms_stats.gather_fixed_objects_stats时会报错:declare * ERROR at line 1: ORA-00600: internal error code, arguments: [1350], [1], [13], [], [], [], [], [] ORA-06512: at "SYS.DBMS_STATS", line 13210 ORA-06512: at "SYS.DBMS_STATS", line 13517 ORA-06512: at "SYS.DBMS_STATS", line 14039 ORA-06512: at line 3 ORA-06512: at line 33
这应该是个BUG,据说在11gR2中被修复了。
- Re-create custom database links (conditional)
升级之前就已经准备好了DBLINK的重建脚本,直接重建即可。 - Re-create grants and synonyms
- Apply Oracle Receivables patch
- Restart Applications server processes (conditional)
按标准步骤做完后,数据库成功升级到10.2.0.4,升级后需要留意以下事项:
- 检查 .profile ,使用使用新的环境变量。
- 如果有快速启动脚本之类的,看是否指向了新的路径。
- 检查AutoConfig新创建的env文件,看PATH变量是否正确,删除指向旧数据库的路径。
- 用adadmin重新生成messages并编译包,否则Web页面登录可能会报错:
oracle.apps.fnd.framework.OAException: Application: FND, Message Name: FND_GENERIC_MESSAGE. Tokens: MESSAGE = java.sql.SQLException: ORA-00003: Message 3 not found; product=RDBMS; facility=ORA ORA-06512: ? "SYS.DBMS_UTILITY", line 70 ORA-06512: ? line 1
- 最好转换SYSTEM表空间到Local Management。
主要参考文档
Database Preparation Guidelines for an E-Business Suite Release 12.1.1 Upgrade [ID 761570.1]
Oracle Applications Release 11i with Oracle 10g Release 2 (10.2.0) [ID 362203.1]
Related Posts
» Filed Under Database, E-Business Suite
Print This Post
Comments
Leave a Reply
