最近几日在评估和测试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]
--转自