ORA-04065和ORA-06508的一个bug
2010-12-05 11:13
477 查看
环境为:HP-UX ORACLE 10.2.0.3 RAC,系统在使用过程中反复出现类似如下错误:
Errors in file /opt/oracle/product/admin/orcl/udump/orcl1_ora_15627.trc:
ORA-12012: error on auto execute of job 61
ORA-04065: not executed, altered or dropped
ORA-04065: not executed, altered or dropped stored procedure "ZLHIS.ZL1_AUTOCPTONE"
ORA-06508: PL/SQL: could not find program unit being called: "ZLHIS.ZL1_AUTOCPTONE"
ORA-06512: at "ZLHIS.ZL1_AUTOCPTALL", line 27
ORA-06512: at line 1
将共享池flush或重新编译相关过程后,又可以使用一段时间;且相关指向procedure的同义词都是无效状态。经查询metalink是Oracle的一个bug,bug编号605008:
Applies to:
Oracle Server - Enterprise Edition - Version: 10.2.0.3
This problem can occur on any platform.
Symptoms
When loading certain PL/SQL packages the database continuously reports ORA-04068 errors.
Restarting database does not help. Flushing shared pool does not help.
We can see timestamp discrepancies exist for valid objects.
打了patch后,使用
1. 用sys登录数据库
2. 执行下列脚本,重新编译相关同义词
declare
cursor cur_syn is select do.name d_name, u.name owner
from sys.obj$ do, sys.dependency$ d, sys.obj$ po, user$ u
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*/
and do.owner#=u.user#
and do.type# = 5
order by 2,1;
v_syn_name obj$.name%TYPE;
v_tab_own user$.name%TYPE;
begin
OPEN cur_syn;
loop
FETCH cur_syn INTO v_syn_name,v_tab_own;
exit when cur_syn%notfound;
if v_tab_own = 'PUBLIC' then
execute immediate 'alter public synonym '||v_syn_name|| ' compile';
else
execute immediate 'alter synonym '||v_tab_own||'.'||v_syn_name|| ' compile';
end if;
end loop;
CLOSE cur_syn;
end;
/
3. 检查编译后的情况:
set pagesize 10000
set linesize 140
column d_name format a20
column p_name format a20
select do.obj# d_obj,do.name d_name, u.name owner, 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, user$ u
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*/
and do.owner#=u.user#
and do.type# = 5
order by 2,1;
Errors in file /opt/oracle/product/admin/orcl/udump/orcl1_ora_15627.trc:
ORA-12012: error on auto execute of job 61
ORA-04065: not executed, altered or dropped
ORA-04065: not executed, altered or dropped stored procedure "ZLHIS.ZL1_AUTOCPTONE"
ORA-06508: PL/SQL: could not find program unit being called: "ZLHIS.ZL1_AUTOCPTONE"
ORA-06512: at "ZLHIS.ZL1_AUTOCPTALL", line 27
ORA-06512: at line 1
将共享池flush或重新编译相关过程后,又可以使用一段时间;且相关指向procedure的同义词都是无效状态。经查询metalink是Oracle的一个bug,bug编号605008:
Applies to:
Oracle Server - Enterprise Edition - Version: 10.2.0.3
This problem can occur on any platform.
Symptoms
When loading certain PL/SQL packages the database continuously reports ORA-04068 errors.
Restarting database does not help. Flushing shared pool does not help.
We can see timestamp discrepancies exist for valid objects.
打了patch后,使用
1. 用sys登录数据库
2. 执行下列脚本,重新编译相关同义词
declare
cursor cur_syn is select do.name d_name, u.name owner
from sys.obj$ do, sys.dependency$ d, sys.obj$ po, user$ u
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*/
and do.owner#=u.user#
and do.type# = 5
order by 2,1;
v_syn_name obj$.name%TYPE;
v_tab_own user$.name%TYPE;
begin
OPEN cur_syn;
loop
FETCH cur_syn INTO v_syn_name,v_tab_own;
exit when cur_syn%notfound;
if v_tab_own = 'PUBLIC' then
execute immediate 'alter public synonym '||v_syn_name|| ' compile';
else
execute immediate 'alter synonym '||v_tab_own||'.'||v_syn_name|| ' compile';
end if;
end loop;
CLOSE cur_syn;
end;
/
3. 检查编译后的情况:
set pagesize 10000
set linesize 140
column d_name format a20
column p_name format a20
select do.obj# d_obj,do.name d_name, u.name owner, 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, user$ u
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*/
and do.owner#=u.user#
and do.type# = 5
order by 2,1;
相关文章推荐
- ORA-04065和ORA-06508的一个bug
- Oracle Bug 6136074 - ORA-04068 / ORA-04065 / ORA-06508
- Oracle 11.2.0.1的又一个隐藏在ORA-03113后的bug: 通信通道的文件结尾
- Oracle异常 ORA-04068: ORA-04061: ORA-04065: ORA-06508 解决办法 (一)
- ORA-04068 / ORA-04065 / ORA-06508 详细说明
- Oracle异常 ORA-04068: ORA-04061: ORA-04065: ORA-06508 解决办法 (一)
- 由ORA-00979错误发现ORACLE一个BUG
- Oracle Workflow异常 ORA-04068: ORA-04061: ORA-04065: ORA-06508 解决办法 (二)
- Oracle 11.2.0.1的一个Bug,客户端报ORA-03113: 通信通道的文件结尾
- ORA-04063和ORA-06508两个Oracle程序错误的一个解决办法
- ORA-01791: not a SELECTed expression 一个不是 bug 的 bug!
- Hive中LIKE查询使用通配符'%'的一个BUG--当转义符'\'遇到通配符'%'或'_'
- php7下的opcache特性导致的一个bug排查
- 关于一个交叉引用Bug:“can not find interface declaration”
- VC6 DEBUG版下内存控制的一个BUG,导致debug版程序必将崩溃
- 很好的一个分析bug的文章,供以后疑难bug参考,转一下:一次segfault错误的排查过程
- 用牛刀在杀鸡, 一直把td当成一个简单的bug管理工具在使用
- android上libevent dns解析的一个bug修复
- 一个BUG引起的一件小事 [ 光影人像 东海陈光剑 的博客 ]
- Oracle Database的一个bug