适用环境
本升级手册适用于EBS系统的数据库版本升级。APP版本为 12.1.3,DB版本为11.2.0.2,操作系统为SOLARIS 10,CPU类型为SPARC 64。操作完成后将使DB版本升级为11.2.0.4,并且本地脚本可以继续正常使用。
文档中标注为 [本地] 的项目为定制化的非标准操作流程。适用于需要兼容特定公司的脚本。
准备工作
- [建议] 配置本地X11-forwarding,可以降低数据库软件安装,examples安装,DBUA执行等过程的操作复杂度。
- [建议] 对EBS数据库及应用进行一次冷全备;
- [必要] 准备升级所必须的文件:适用于Solaris SPARC 64 的数据库升级包(编号13390677),OPATCH补丁包(编号6880880),最新PSU补丁包,EBS补丁包p12686610_R12.TXK.B_R12_GENERIC;
- [必要] 安装EBS APP AUTOCONFIG补丁p12686610_R12.TXK.B_R12_GENERIC;
- 安装过程需要用到原数据库的SYSTEM,APPS用户密码以及相关服务器的ROOT密码。
文件备份
需要额外进行备份的文件清单: - [本地] 数据库节点:数据库参数文件:$ORACLE_HOME/dbs/*
- [本地] 数据库节点:oraInst.loc文件:/var/opt/oracle/oraInst.loc
- [本地] 数据库节点:脚本配置文件:/corpoem/etc/dbtab
- [本地] 应用节点:客户化FORM环境文件:$INST_TOP/ora/10.1.2/forms/server/default.env
- 数据库节点:数据库OPatch文件: $ORACLE_HOME/OPatch/*
升级过程
一、切换产品清单文件(数据库节点) [本地]
预计用时:5分钟
将当前DBA用户对应的实例名(如oagci1p 对应的实例名为 GCI1P)的oraInst.loc文件配置为当前调用的oraInst.loc文件。
例如,现在进行GCI1P实例的数据库升级,须使用ROOT账号将/var/opt/oracle/路径下的oraInst.loc_GCI1P重命名为oraInst.loc(原oraInst.loc文件进行重命名备份)
示例:1
2
3# cd /var/opt/oracle/
# mv oraInst.loc oraInst.loc.20190416
# mv oraInst.loc_GCI1P oraInst.loc
如此便完成对实例进行升级所需要的产品清单文件配置。(安装完成后还需要切换回来)
二、安装准备(数据库节点)
预计用时:20分钟
2.1 创建新的ORACLE_HOME。一般在原ORACLE_HOME目录的上一级目录进行创建。
示例:1
2
3
4
5oagci1p(oagci1p) on gcicsspdb01 (GCI1P):
$ echo $ORACLE_HOME
/fd01/GCI1P/db/tech_st/11.2.0.2
oagci1p(oagci1p) on gcicsspdb01 (GCI1P):
$ mkdir -r /fd01/GCI1P/db/tech_st/11.2.0.4
2.2 规划和测试新的数据库监听端口(非必须)
可以另外使用一个监听端口,以便于回滚。也可以继续使用原监听端口。若使用新的端口,则需要测试该端口是否有其他程序在使用。
2.3 更新context内的监听端口(应用服务器节点)
若选择使用新的监听端口,则需要更新应用服务器节点上的CONTEXT文件的s_dbport标签为新的监听端口。
context文件位于$INST_TOP/appl/admin。
- 注意,修改该文件后,直到数据库升级完成之前,不要运行AUTOCONFIG。
三、安装11.2.0.4数据库软件(数据库节点)
预计用时:30分钟
上传相关安装文件,(p13390677_112040_SOLARIS64_1of7.zip和p13390677_112040_SOLARIS64_2of7.zip)解压并将软件安装至新的ORACLE_HOME。相关注意事项: - 安装时选择“仅安装软件”,不另外创建数据库实例;
- 安装时选择安装“企业版”数据库软件;
- 安装用户和数据库所有者全部选择当前旧实例的DBA账号,如oagci1p,oagci1d等等。
具体安装步骤略。
配置好XSERVER直接调用GUI界面安装,手动安装则自行参考Oracle® Database Installation Guide 11g Release 2 (11.2) for Oracle Solaris。四、更新OPatch文件(数据库节点)
预计用时:10分钟
上传OPatch文件(p6880880_112000_SOLARIS64.zip)至新ORACLE_HOME,备份原来的OPatch文件夹,解压p6880880_112000_SOLARIS64.zip后,将上传的压缩包删除。
示例:1
2
3mv OPatch OPatch_20190416
unzip p6880880_112000_SOLARIS64.zip
rm p6880880_112000_SOLARIS64.zip
五、安装PSU(数据库节点)
预计用时:30分钟
上传并解压PSU文件(p28204707_112040_SOLARIS64.zip)并进入解压出来的文件夹中,进行安装.(注意,此时需要加载新的ORACLE_HOME变量)
示例:1
2
3
4
5
6
7unzip p28204707_112040_SOLARIS64.zip
cd 28204707
ORACLE_HOME=/fh01/GCI1P/db/tech_st/11.2.0.4
export ORACLE_HOME
PATH=$ORACLE_HOME/bin:$PATH
export PATH
$ORACLE_HOME/OPatch/opatch apply
六、安装Examples CD(数据库节点)
预计用时:30分钟
上传相关安装文件(p13390677_112040_SOLARIS64_6of7.zip),并将软件安装至新的ORACLE_HOME。
具体安装步骤略。
配置好XSERVER直接调用GUI界面安装,手动安装则自行参考Oracle® Database Examples Installation Guide 11g Release 2 (11.2)。
七、创建nls/data/9idata 文件夹(数据库节点)
预计用时:5分钟
直接执行语句:(注意,ORACLE_HOME需要配置为新ORACLE_HOME)1
perl $ORACLE_HOME/nls/data/old/cr9idata.pl
创建完成后,配置环境变量:1
2ORA_NLS10=$ORACLE_HOME/nls/data/9idata
expore ORA_NLS10
八、数据库实例升级(数据库节点)
预计用时:450分钟
8.1 关闭实例的应用节点的所有进程,关闭数据库监听;
示例:1
2
3#应用节点
ebsenv GCI1P
$ADMIN_SCRIPTS_HOME/adstpall.sh
1 | #数据库节点 |
注意:
- 从本步骤开始,直到整个升级全部完成,EBS将不可访问;
- 需要确认原数据库监听完全关闭,并且没有本地连接连入数据库。
8.2 准备升级
8.2.1 清理回收站
升级前必须清理数据库回收站,导入旧的ORACLE_HOME,使用SYSDBA进行:1
2
3
4
5
6
7
8
9
10
11
12#导入数据库SID和ORACLE_HOME
ORACLE_SID=GCI1P
export ORACLE_SID
ORACLE_HOME=/fh01/GCI1P/db/tech_st/11.2.0.2
export ORACLE_HOME
PATH=$ORACLE_HOME/bin:$PATH
export PATH
PATH=$ORACLE_HOME/bin:$ORACLE_HOME/perl/bin:$PATH
export PATH
#使用SQLPLUS连接数据库清理回收站
sqlplus / as sysdba
SQL> PURGE DBA_RECYCLEBIN;
8.2.2 重新编译失效对象
先统计当前数据库内的失效对象,若不存在失效对象,则可以不进行重新编译。1
2
3
4SELECT owner,object_type,status,COUNT(*) FROM dba_objects
WHERE status = 'INVALID'
GROUP BY owner,object_type,status
ORDER BY owner,object_type
重新编译所有失效对象。以SYSDBA连接数据库,执行:1
sqlplus / as sysdba @$ORACLE_HOME/rdbms/admin/utlrp.sql
8.3 执行实例升级
运行DBUA进行实例升级。配置XSERVER可以大大简化升级操作,若希望进行手动升级,请参考Oracle Database Upgrade Guide, 11g Release 2 (11.2) 。
注意事项:
- 不需要移动数据库文件目录;
- 不需要启用闪回区。
具体操作步骤略。
如果出现下面的错误,请点击忽略: - ISSUE01:ORA-04043 object DROP_AW_ELIST_ALL does not exist
- ISSUE02: ORA-02303 & ORA-00955
以上报错是源于11.2.0.4升级包的BUG,对于不使用OGG的数据库无影响,可以安全忽略。
我们的数据库未使用OGG,所以无需做额外处理。如果今后需要使用OGG,则需要安装补丁:Patch:21131412、Patch: 22457613、Patch:22576728 (文档 1557031.1)
8.4 执行其余的PSU补丁步骤
导入新ORACLE_HOME,并使用SQLPLUS连接实例,执行相关脚本:1
2
3
4
5
6
7
8
9
10
11
12#导入数据库SID和ORACLE_HOME
ORACLE_SID=GCI1P
export ORACLE_SID
ORACLE_HOME=/fh01/GCI1P/db/tech_st/11.2.0.4
export ORACLE_HOME
PATH=$ORACLE_HOME/bin:$PATH
export PATH
PATH=$ORACLE_HOME/bin:$ORACLE_HOME/perl/bin:$PATH
export PATH
#使用SQLPLUS连接数据库
sqlplus / as sysdba
SQL> @$ORACLE_HOME/rdbms/admin/catbundle.sql psu apply
九、实例升级后需要进行的操作
预计用时:200分钟
9.1 启动监听
将原TNS_ADMIN内的文件全部复制至新TNS_ADMIN目录,并检查每个文件内的端口号,文件路径为新的端口号和路径。
例如,可以将所有文件内的 1521端口替换为新1522端口,将所有的11.2.0.2,替换为11.2.0.4。全部替换完成后,加载新路径的TNS_ADMIN变量,并启动监听:1
2
3TNS_ADMIN=/fh01/GCI1P/db/tech_st/11.2.0.4/network/admin/GCI1P_gcicssddb01
export TNS_ADMIN
lsnrctl start GCI1P
9.2 执行adgrants.sql
拷贝应用节点内的$APPL_TOP/admin/adgrants.sql文件至数据库节点,使用SYSDBA账号运行该脚本,相关参数为 APPS。
9.3 授予创建过程的权限给 CTXSYS
使用SYSDBA账号运行下面的语句:1
SQL> exec ctxsys.ctx_adm.set_parameter('file_access_role', 'public');
9.4 验证工作流规则集
拷贝应用节点内的$FND_TOP/patch/115/sql
/wfaqupfix.sql文件至数据库节点,使用apps账号连接数据库,并执行该脚本。1
sqlplus apps/[apps的密码] @wfaqupfix.sql
所需要的参数为APPLSYS和APPS。
9.5 取消注册当前数据库服务器
使用APPS用户连接数据库,并执行下面的语句:1
2sqlplus apps/[apps的密码]
SQL> exec fnd_conc_clone.setup_clean;
9.6 数据库节点运行AUTOCONFIG
在应用服务器节点执行语句生成新的AUTOCONFIG包:1
perl <AD_TOP>/bin/admkappsutil.pl
将生成的包复制到数据库节点的新ORACLE_HOME,并解压。1
unzip -o appsutil.zip
执行下面的语句生成数据库节点专用的CONTEXT文件:1
perl $ORACLE_HOME/appsutil/bin/adbldxml.pl
数据库节点执行AUTOCONFIG:(CONTEXT文件在上一步会显示路径和文件名,下面的为示例)1
$ORACLE_HOME/appsutil/bin/adconfig.sh contextfile=$ORACLE_HOME/appsutil/GCI1P_gcicsspdb01.xml
9.7 应用服务器节点运行AUTOCONFIG
在应用服务器上执行:1
sh $INST_TOP/admin/scripts/adautocfg.sh
9.8 还原原来的参数文件 (数据库节点) [本地]
升级完成后,数据库会切换到SPFILE,且原来配置的隐藏参数全部被去除。因此需要还原之前备份的参数文件。
9.8.1 关闭数据库实例和监听
1 | sqlplus / as sysdba |
1 | lsnrctl stop GCI1P |
9.8.2 删除当前的SPFILE
进入新$ORACLE_HOME/dbs/,删除SPFILE,示例:1
rm $$ORACLE_HOME/dbs/GCI1P_gcicsspdb01_spfile.ora
9.8.3 还原备份的PFILE
将之前备份的参数文件(旧$ORACLE_HOME/dbs/*)覆盖现在的参数文件。
9.8.4 修改PFILE
修改initGCI1P.ora中的下列内容:
diagnostic_dest
原值:
diagnostic_dest= /fd01/GCI1P/db/tech_st/11.2.0.2/admin/GCI1P_gcicsspdb01
新值:
diagnostic_dest= /fd01/GCI1P/db/tech_st/11.2.0.4/admin/GCI1P_gcicsspdb01
IFILE
原值:
IFILE=/fd01/GCI1P/db/tech_st/11.2.0.2/dbs/GCI1P_gcicsspdb01_ifile.ora
新值:
IFILE=/fd01/GCI1P/db/tech_st/11.2.0.4/dbs/GCI1P_gcicsspdb01_ifile.ora
修改GCI1P_gcicsspdb01_ifile.ora中的下列内容:
utl_file_dir
原值:
utl_file_dir = /fd01/GCI1P/db/tech_st/11.2.0.2/appsutil/outbound/GCI1P_gcicsspdb01
新值:
utl_file_dir = /fd01/GCI1P/db/tech_st/11.2.0.4/appsutil/outbound/GCI1P_gcicsspdb01
注意,修改时还要检查新值的路径是否存在,若不存在,则手动创建。
9.8.5 启动监听和数据库实例
1 | lsnrctl start GCI1P |
1 | sqlplus / as sysdba |
9.9 还原客户化FORM环境配置(应用节点) [本地]
编辑应用节点的环境文件:1
vi $INST_TOP/ora/10.1.2/forms/server/default.env
将下面的内容添加至文件末尾:
XXPAY_TOP=/fh01/GCI1P/applcust/12App/xxpay
XXKIT_TOP=/fh01/GCI1P/applcust/12App/xxkit
XXPER_TOP=/fh01/GCI1P/applcust/12App/xxper
XXPO_TOP=/fh01/GCI1P/applcust/12App/xxpo
XXONT_TOP=/fh01/GCI1P/applcust/12App/xxont
XXMRP_TOP=/fh01/GCI1P/applcust/12App/xxmrp
XXINV_TOP=/fh01/GCI1P/applcust/12App/xxinv
XXGL_TOP=/fh01/GCI1P/applcust/12App/xxgl
XXFA_TOP=/fh01/GCI1P/applcust/12App/xxfa
XXAR_TOP=/fh01/GCI1P/applcust/12App/xxar
XXDBA_TOP=/fh01/GCI1P/applcust/12App/xxdba
XXCST_TOP=/fh01/GCI1P/applcust/12App/xxcst
XXBOM_TOP=/fh01/GCI1P/applcust/12App/xxbom
XXAP_TOP=/fh01/GCI1P/applcust/12App/xxap
XXPOS_TOP=/fh01/GCI1P/applcust/12App/xxpos
XXWIP_TOP=/fh01/GCI1P/applcust/12App/xxwip
9.10 修改本地脚本配置文件(数据库节点) [本地]
修改下列路径下的文件:
/corpoem/etc/dbtab
对下列内容进行修改:
GCI1P:/fd01/GCI1P/db/tech_st/11.2.0.2:oagci1p:11.2.0.2:N:EBS:Y:A
修改为:
GCI1P:/fd01/GCI1P/db/tech_st/11.2.0.4:oagci1p:11.2.0.4:N:EBS:Y:A
十、收集SYS模式的统计信息 (数据库节点)
预计用时:240分钟
从应用节点中的以下路径复制脚本文件至数据库节点:
$APPL_TOP/admin/adstats.sql
使用SYSDBA连接至数据库实例,将数据库切换至estricted模式,执行脚本,然后关闭estricted模式。
示例:1
2
3
4
5
6sqlplus "/ as sysdba"
SQL> alter system enable restricted session;
SQL> @adstats.sql
$ sqlplus "/ as sysdba"
SQL> alter system disable restricted session;
SQL> exit;
十一、重新创建客户化DBLINK (数据库节点) [本地]
预计用时:20分钟
对所有在使用的定制化DBLINK进行重新创建操作,语句示例:
查看当前DBLINK1
2sqlplus apps/[apps password]
SQL> select db_link from all_db_links;
注意,EDW_APPS_TO_WH 和 APPS_TO_APPS 正常情形下已在之前AUTOCONFIG中重新创建,仅验证有效性即可,其他DBLINK需要手动重新创建。
重建客户化 DBLINK1
2
3
4
5
6sqlplus apps/[apps password]
SQL> drop database link [custom database link];
SQL> create database link [custom database link] connect to
[user] identified by [password] using
'(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=[hostname])
(PORT=[port number]))(CONNECT_DATA=(SID=[ORACLE_SID])))';
十二、启动应用节点 (应用节点)
预计用时:20分钟
在应用服务器上使用DBA账号登录服务器,加载环境变量后启动应用节点:1
2
3sudo su - oagci1p
ebsenv GCI1P
$ADMIN_SCRIPTS_HOME/adstrtal.sh
十三、官方已知问题的处理
13.1 PLS-00306: wrong number or types of arguments in call to ‘SYNCRN’is encountered when trying to create sales contacts. More information may be found in bug 17441178.
为解决该问题,需要重新创建相关过程,参考代码:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28connect / as sysdba
alter session set current_schema=CTXSYS;
create or replace procedure syncrn (
ownid IN binary_integer,
oname IN varchar2,
idxid IN binary_integer,
ixpid IN binary_integer,
rtabnm IN varchar2,
srcflg IN binary_integer,
smallr IN binary_integer
)
authid definer
as external
name "comt_cb"
library dr$lib
with context
parameters(
context,
ownid ub4,
oname OCISTRING,
idxid ub4,
ixpid ub4,
rtabnm OCISTRING,
srcflg ub1,
smallr ub1
);
/
13.2 FRM-99999: Error 408 occurs when trying to modify HRMS contact information. More information may be found 2. in bug 17446933.
未有解决方案,可能已被最新PSU修复,若遇到该问题,需要提交SR处理。
十四、参考文档
- Interoperability Notes EBS 12.0 and 12.1 with Database 11gR2 (文档 ID 1058763.1)
- Oracle Database Upgrade Guide, 11g Release 2 (11.2)
- Using AutoConfig to Manage System Configurations in Oracle E-Business Suite Release 12 (文档 ID 387859.1)
本作品采用知识共享署名-相同方式共享 4.0 国际许可协议进行许可。