最近数据库突然出现RECO进程不停的报ORA-02068和ORA-03113的错误:
Errors in file /oracle/admin/UBISP/bdump/ubisp_reco_23401.trc:
ORA-02068: following severe error from DBNAME
ORA-03113: end-of-file on communication channel
检查trace文件发行tran号总是那几个,执行语句:
select * from dba_2pc_pending;
可以看到记录的所有LOCAL_TRAN_ID与trace中的一样,这太奇怪了,从现象上看只能问题RECO进程无法清除这些失败后的事物,这个问题在RAC环境有可能出现,但单节点上为什么出现这个问题还不清楚。解决方法如下:
1. select * from dba_2pc_pending;
2. alter system disable distributed recovery ;
3. alter system set "_smu_debug_mode" = 4 ;
4. execute DBMS_TRANSACTION.PURGE_LOST_DB_ENTRY('');
5. select * from dba_2pc_pending;
6. alter system enable distributed recovery;
如果有多个事物,需要在第四步后面执行commit;
_smu_debug_mode缺省是0,可以在完成之后改回来,查看该隐藏参数的命令是:
set linesize 132
column name format a30
column value format a25
select
x.ksppinm name,
y.ksppstvl value,
y.ksppstdf isdefault,
decode(bitand(y.ksppstvf,7),1,'MODIFIED',4,'SYSTEM_MOD','FALSE') ismod,
decode(bitand(y.ksppstvf,2),2,'TRUE','FALSE') isadj
from
sys.x$ksppi x,
sys.x$ksppcv y
where
x.inst_id = userenv('Instance') and
y.inst_id = userenv('Instance') and
x.indx = y.indx and
x.ksppinm like '%_smu_debug_mode%'
order by
translate(x.ksppinm, ' _', ' ')
阅读(12728) | 评论(2) | 转发(0) |