代码改变世界

[转载]—Health Check Reports Problem: Dependency$ p_timestamp mismatch for VALID objects (文档 ID 781959.1)

2019-06-25 20:46  潇湘隐者  阅读(...)  评论(... 编辑 收藏

Health Check Reports Problem: Dependency$ p_timestamp mismatch for VALID objects (文档 ID 781959.1)

 

 

APPLIES TO:

Oracle Database - Enterprise Edition - Version 9.2.0.5 to 12.1.0.2 [Release 9.2 to 12.1]
Information in this document applies to any platform.
***Checked for relevance on 18-Jan-2014***




SYMPTOMS

Health check output reports

 

Problem: Dependency$ p_timestamp mismatch for VALID objects?
May be Ok - needs checking, (Warning: [W], Error: [E]).

[W] - P_OBJ#=37817 D_OBJ#=38416 
[W] - P_OBJ#=38014 D_OBJ#=38605
 
[W] - P_OBJ#=38020 D_OBJ#=38611
 
[W] - P_OBJ#=38043 D_OBJ#=38634
 
[W] - P_OBJ#=38061 D_OBJ#=38652
 
[W] - P_OBJ#=38064 D_OBJ#=38655
 
[W] - P_OBJ#=38087 D_OBJ#=38678
 

[W] - P_OBJ#=38090 D_OBJ#=38681

.

CAUSE

This issue is caused due to mismatch in timestamp information with the dependent objects.

It may not be an actual dictionary corruption.

This can cause problems during upgrade and PLSQL validation

 

SOLUTION

Please Note : Its advisable to run the script during non business hours or when the load in the database is less.

 

The Solution is applicable only for D_TYPE with value 5(synonyms) returned  from the below query

 

 

select

do.obj# d_obj,do.name d_name, do.type# d_type,

po.obj# p_obj,po.name p_name,

to_char(p_timestamp,'DD-MON-YYYY HH24:MI:SS') "P_Timestamp",

to_char(po.stime ,'DD-MON-YYYY HH24:MI:SS') "STIME",

decode(sign(po.stime-p_timestamp),0,'SAME','*DIFFER*') X

from sys.obj$ do, sys.dependency$ d, sys.obj$ po

where P_OBJ#=po.obj#(+)

and D_OBJ#=do.obj#

and do.status=1 /*dependent is valid*/

and po.status=1 /*parent is valid*/

and po.stime!=p_timestamp /*parent timestamp not match*/

order by 2,1;

 

 

 

Check if the d_type is reported as 5.

Compile the synonyms using the following script

 

 

set pagesize 10000 
set trimspool on
 
set head off
 
set echo off
 
spool /tmp/compiling.lst
 

select 'alter public synonym "'||synonym_name||'" compile;'
 
from dba_synonyms where owner='PUBLIC';
 
select 'alter synonym "'||owner||'"."'||synonym_name||'" compile;'
 
from dba_synonyms where owner!='PUBLIC';
 


SQL> Spool off


Now run this spooled file

SQL> Spool /tmp/compiling_result.lst

SQL>@/tmp/compiling.lst

SQL> Spool off

Now re-run the following query and check if the number of objects have reduced as compared to output

 

select

do.obj# d_obj,do.name d_name, do.type# d_type,

po.obj# p_obj,po.name p_name,

to_char(p_timestamp,'DD-MON-YYYY HH24:MI:SS') "P_Timestamp",

to_char(po.stime ,'DD-MON-YYYY HH24:MI:SS') "STIME",

decode(sign(po.stime-p_timestamp),0,'SAME','*DIFFER*') X

from sys.obj$ do, sys.dependency$ d, sys.obj$ po

where P_OBJ#=po.obj#(+)

and D_OBJ#=do.obj#

and do.status=1 /*dependent is valid*/

and po.status=1 /*parent is valid*/

and po.stime!=p_timestamp /*parent timestamp not match*/

order by 2,1;