用户在用adop 打补丁的时候,出现数据字典损坏的报错:
Dictionary Corrupted:
Details are as follows:
OWBSYS HAB_RT_EXEC_PROC_RUN_METRICS OWBSYS WB_RT_VERSION TS mismatch: 16-SEP-10 09:13:44 26-NOV-12 18:48:19
OWBSYS WB_RTI_OBJECT_CATALOG OWBSYS WB_RT_VERSION TS mismatch: 16-SEP-10 09:13:44 26-NOV-12 18:48:19
OWBSYS UAB_RT_EXEC_PROCESS OWBSYS WB_RT_VERSION TS mismatch: 16-SEP-10 09:13:44 26-NOV-12 18:48:19
OWBSYS UAB_RT_EXEC_PROCESS_RUNS OWBSYS WB_RT_VERSION TS mismatch: 16-SEP-10 09:13:44 26-NOV-12 18:48:19
OWBSYS UAB_RT_EXEC_PROC_RUN_COUNTS OWBSYS WB_RT_VERSION TS mismatch: 16-SEP-10 09:13:44 26-NOV-12 18:48:19
OWBSYS UAB_RT_EXEC_PROC_RUN_METRICS OWBSYS WB_RT_VERSION TS mismatch: 16-SEP-10 09:13:44 26-NOV-12 18:48:19
PUBLIC WB_OLAP_AW_PRECOMPUTE OWBSYS WB_OLAP_AW_PRECOMPUTE TS mismatch: 23-SEP-10 05:17:34 26-NOV-12 18:48:25
OWBSYS ALL_RT_INSTALLATIONS OWBSYS WB_RT_VERSION TS mismatch: 16-SEP-10 09:13:44 26-NOV-12 18:48:19
OWBSYS RAB_RT_INSTALLATIONS OWBSYS WB_RT_VERSION TS mismatch: 16-SEP-10 09:13:44 26-NOV-12 18:48:19
OWBSYS HAB_RT_EXEC_PROCESS OWBSYS WB_RT_VERSION TS mismatch: 16-SEP-10 09:13:44 26-NOV-12 18:48:19
OWBSYS HAB_RT_EXEC_PROCESS_RUNS OWBSYS WB_RT_VERSION TS mismatch: 16-SEP-10 09:13:44 26-NOV-12 18:48:19
OWBSYS HAB_RT_EXEC_PROC_RUN_COUNTS OWBSYS WB_RT_VERSION TS mismatch: 16-SEP-10 09:13:44 26-NOV-12 18:48:19
please contact Oracle Support and
request them to open a bug against Oracle Application Install(166), Component Online Patching(OP)
[ERROR] Prepare phase completed with errors/warnings. Please check logfiles
Log file: /erpodpa1/erpapp/fs_ne/EBSapps/log/adop/3/adop_20140306_005850.log
经过网上查找,找到如下解决办法:
Do not follow the document 1576086.1. I followed it and increased my invalid counts from 1000 to 100,000 and wasted 10 hours to get back to where I started. Instead follow these instructions:
使用sqlplus dev查询上面出现的对象名称结果如下:
select owner,object_type,object_name
from dba_objects
where object_name in
(
'HAB_RT_EXEC_PROC_RUN_METRICS',
'WB_RTI_OBJECT_CATALOG',
'UAB_RT_EXEC_PROCESS',
'UAB_RT_EXEC_PROCESS_RUNS',
'UAB_RT_EXEC_PROC_RUN_COUNTS',
'UAB_RT_EXEC_PROC_RUN_METRICS',
'WB_OLAP_AW_PRECOMPUTE',
'ALL_RT_INSTALLATIONS',
'RAB_RT_INSTALLATIONS',
'HAB_RT_EXEC_PROCESS',
'HAB_RT_EXEC_PROCESS_RUNS',
'HAB_RT_EXEC_PROC_RUN_COUNTS'
);
Select against a view fails with following error.
SQL> Select * from . ;
ORA-04023: could not be validated or authorized
This is issue is due to a timestamp inconsistency in the data dictionary. This timestamp inconsistency will lead to the problem when we populate the relevant cached objects and later try to select from the affected views.
通过utldtchk.sql脚本,查看时间戳不一致的对象:
Run following script to find out the objects which are having timestamp discrepencies.
Connect as / as sysdba
SQL> @?/rdbms/admin/utldtchk.sql
This script is available from 11g onwards.
通过这个脚本,会返回所有时间戳不一致的对象。我们需要重新手工编译这写对象。
Recompile all the objects manually returned by this script.
手工写个脚本,比如名字叫:rp.sql里面的内容如下:
Conn owbsys/owbsys
alter view ALL_RT_INSTALLATIONS compile;
alter view RAB_RT_INSTALLATIONS compile;
alter view HAB_RT_EXEC_PROCESS compile;
alter view HAB_RT_EXEC_PROCESS_RUNS compile;
alter view HAB_RT_EXEC_PROC_RUN_COUNTS compile;
alter view HAB_RT_EXEC_PROC_RUN_METRICS compile;
alter view UAB_RT_EXEC_PROCESS compile;
alter view UAB_RT_EXEC_PROCESS_RUNS compile;
alter view UAB_RT_EXEC_PROC_RUN_COUNTS compile;
alter view UAB_RT_EXEC_PROC_RUN_METRICS compile;
alter function WB_OLAP_AW_PRECOMPUTE compile;
drop public synonym WB_OLAP_AW_PRECOMPUTE;
CREATE PUBLIC SYNONYM WB_OLAP_AW_PRECOMPUTE
FOR OWBSYS.WB_OLAP_AW_PRECOMPUTE;
貌似这个脚本作者少了一句话,我后续自己执行了:
alter package WB_RTI_OBJECT_CATALOG complie;
It will remove the timestamp inconsistency in data dictionary and resolve this issue.
Verify by re-running the script, it should return zero rows.
SQL> @?/rdbms/admin/utldtchk.sql
If you still see occurances, bounce the database and rerun the above script.
只要返回0行,就可以重新运行prepare过程了。