Run the American English upgrade patch driver (required)
这一步耗时最长,问题也最多。在我的测试环境中,因为机器内存小(有两套克隆环境),patching 过程经常报java错误,需要留意检查adworkxxx.log日志,若发现错误可以尝试用adctrl去failed该job等待其重新处理即可通过。该步骤会把测试机拖得非常慢,每个adworker会带出一个java进程,占用内存非常大,所以将worker设定为一个比较小的数值会更好,比如8个,等之后运行sql等占用内存较少的步骤时,再将adworker数目调大。
错误:
CREATE OR REPLACE SYNONYM APPS.CST_ACCRUAL_ACCOUNTS FOR
BOM.CST_ACCRUAL_ACCOUNTS
AD Worker error:
The following ORACLE error:
ORA-00955: name is already used by an existing object
同义词和一个视图名称一样了。这个错误很低级,我的解决办法是 DROP VIEW APPS.CST_ACCRUAL_ACCOUNTS。
错误:
A database error occurred:
ORA-24816: Expanded non LONG bind data supplied after actual LONG or LOB column
The error occurred while executing the following statement:
INSERT INTO FND_SEED_STAGE_ENTITY (SEQ, CONFIG_ID, TOP_ENTITY_SEQ, LAST_DB_UPDATED_BY, LAST_DB_UPDATE_DATE, LAST_FILE_UPDATED_BY, LAST_FILE_UPDATE_DATE, ACTION, EXEC_STATUS, COMMIT_FLAG, BIND_VAR_METADATA, PARENT_PK_VALUE ,BIND_VALUE0 ,BIND_VALUE1 ,BIND_VALUE2 ,BIND_VALUE3 ,BIND_VALUE4 ,BIND_VALUE5 ,BIND_VALUE6,BIND_VALUE7 ,BIND_VALUE8 ,BIND_VALUE9 ,BIND_VALUE10 ,BIND_VALUE11 ,BIND_VALUE12 ,BIND_VALUE13 ,BIND_VALUE14 ,BIND_VALUE15 ,BIND_VALUE16 ,BIND_VALUE17 ,BIND_VALUE18 ,BIND_VALUE19 ,BIND_VALUE20 ,BIND_VALUE21 ,BIND_VALUE22 ,BIND_VALUE23 ,BIND_VALUE24 ,BIND_VALUE25 ,BIND_VALUE26 ,BIND_VALUE27 ,BIND_VALUE28 ,BIND_VALUE29 ,BIND_VALUE30) VALUES (:seq, :config_id, :top_entity_seq, NULL, NULL, NULL, NULL, 'IGNORE', '0', NULL, :bvar_metadata, :parent_pk_value ,:bind_value0 ,
:bind_value1 ,:bind_value2 ,:bind_value3 ,:bind_value4 ,:bind_value5 ,:bind_value6 ,:bind_value7 ,:bind_value8 ,:bind_value9 ,:bind_value10 ,:bind_value11 ,:
bind_value12 ,:bind_value13 ,:bind_value14 ,:bind_value15 ,:bind_value16 ,:bind_value17 ,:bind_value18 ,:bind_value19 ,:bind_value20 ,:bind_value21 ,:bind_va
lue22 ,:bind_value23 ,:bind_value24 ,:bind_value25 ,:bind_value26 ,:bind_value27 ,:bind_value28 ,:bind_value29 ,:bind_value30)
旧的NLS_LANG是American_America.ZHS16GBK,新的NLS_LANG是American_America.UTF8(这是rapidwiz默认赋值的),如果在安装就设置NLS_LANG和旧的一致,则不会出现问题,但是也无法转换form等编码了。
解决办法:用另一用户登录,修改NLS_LANG,手工执行fndload,然后adctrl用隐藏选项8来跳过该步骤。
错误:
如果升级数据库时没有升级OLAP,则会出现一个OLAP相关的错误,此时需要升级OLAP到64位。也可以通过重建AW来解决:
exec dbms_aw.execute('aw delete zpb.zpbcode')
exec dbms_aw.execute('aw delete zpb.zpbdata')
exec dbms_aw.execute('aw delete zpb.zpbannot')
@appl_top/zpb/12.0.0/patch/115/SQL/zpbmakeaws.sql
Note:
EPB AW’s Cannot Be Attached Or Do Not Exist [ID 795247.1]
错误4:
eamsnupd.sql 步骤出错,此步进行前需要预先设置好Installed Base中相关参数和配置文件。
Note:
Enterprise asset Management (EAM) Upgrade Notes to R12 – Integration and Licence [ID 884201.1]
注:自R12起,IB和eAM将紧密集成。Oracle 真应当将这部分内容写到升级文档中,不了解Installed Base就尝试升级是个悲剧。
phase=A232 eamdffup.sql出错:
sqlplus -s APPS/***** @.../apps/apps_st/appl/eam/12.0.0/patch/115/sql/eamdffup.sql
DECLARE
*
ERROR at line 1:
ORA-06501: PL/SQL: program error
ORA-06512: at "APPS.FND_FLEX_DSC_API", line 1626
ORA-06501: PL/SQL: program error
ORA-06512: at "APPS.FND_FLEX_DSC_API", line 298
ORA-01403: no data found
ORA-06512: at line 177
仔细检查问题sql,发现由以下数据引起的:
SELECT *
FROM fnd_descr_flex_contexts_tl f
WHERE f.application_id = 426
AND f.descriptive_flex_context_code IN ('PE', 'PG');
解决办法:将弹性域名称从中文(能源计量:电能/能源计量:气体)修改为英文。
phase=A250 apilnupg.sql有严重的性能问题,1天都跑不完
解决办法:
create index AP_INVOICE_DISTRIBUTIONS_N25 on AP_INVOICE_DISTRIBUTIONS_ALL(PARENT_REVERSAL_ID);
Note:
R12 : Performance Issue While Runing apilnupg.sql (Upgrade to 12.1.1) [ID 942694.1]
phase=A260 appdstln.sql 报错
sqlplus -s APPS/***** @.../apps/apps_st/appl/ap/12.0.0/patch/115/sql/appdstln.sql &un_ap &batchsize 7 16
DECLARE
*
ERROR at line 1:
ORA-01400: cannot insert NULL into
("AP"."AP_PAYMENT_HIST_DISTS"."INVOICE_DISTRIBUTION_ID")
ORA-06512: at line 38
解决办法:修改AP_PAYMENT_HIST_DISTS.INVOICE_DISTRIBUTION_ID 和 AP_PAYMENT_HIST_DISTS.AMOUNT 允许为空,找到那些为空的数据查明原因。正式环境升级时应当避免该情况发生。
注:这其实不是真正意义上的“解决”办法,关键是找到哪些数据有问题,为什么有问题。
phase=A322 csxruprf.sql 报错
sqlplus -s APPS/***** @.../apps/apps_st/appl/cs/12.0.0/patch/115/sql/csxruprf.sql
DECLARE
*
ERROR at line 1:
ORA-20002: ORA-20001: -28102-ORA-28102: policy does not exist.
ORA-06512: at line 146
解决办法:
SELECT nvl(sr_agent_security, 'XXXX') FROM cs_system_options;
如果查询结果为ANONE,那么它认为已经创建policy,此处只需要生效即可,而实际上系统中并未存在这些policy。通过手工执行相关sql,并跳过该job继续。
phase=A327 FNDFFVGN 报错
.../apps/apps_st/appl/fnd/12.0.0/bin/FNDFFVGN &ui_apps 0 Y 2 401 'MTLL' 'MTL_ITEM_LOCATIONS_KFV' 'Y'
Log filename : .../apps/apps_st/appl/admin/TEST/log/l9017672.req
Report filename : .../apps/apps_st/appl/admin/TEST/out/o9017672.out
Segmentation Fault - core dumped
AD Worker error:
The above program failed with error code -117.
See the AD Worker log file and/or the program log file for details.
解决办法:这个只是编译弹性域,可以跳过该步骤,应用起来后重新编译弹性域。