0

使用ERRORSTACK进行错误跟踪

Eygle 2019-07-24
23
摘要:使用ERRORSTACK进行错误跟踪

ERRORSTACK是Oracle提供的接口,用于诊断Oracle的错误信息。

诊断事件可以在Session级设置,也可以在系统级设置,通常如果要诊断全局错误,最好在系统级设置。设置了ERRORSTACK事件之后,Oracle会将出错时的信息记入跟踪文件之中,然后再出现错误时就可以通过跟踪文件进行错误诊断和排查了。

继续上边的测试,尝试通过ERRORSTACK事件来跟踪ORA-01555错误:

SQL> ALTER SYSTEM SET EVENTS '1555 TRACE NAME ERRORSTACK LEVEL 4';
System altered.
SQL> select * from emp as of scn 8903471356235 where empno in (7788,7782,7698);
select * from emp as of scn 8903471356235 where empno in (7788,7782,7698)
              *
ERROR at line 1:
ORA-01555: snapshot too old: rollback segment number 6 with name "_SYSSMU6$" too small

检查告警日志文件,可以得到如下信息:

Wed Apr 19 16:46:51 2006
OS Pid: 1274 executed alter system set events '1555 TRACE NAME ERRORSTACK LEVEL 4'
Wed Apr 19 16:47:06 2006
ORA-01555 caused by SQL statement below (Query Duration=0 sec, SCN: 0x0819.003f594b):
Wed Apr 19 16:47:06 2006
select * from emp as of scn 8903471356235 where empno in (7788,7782,7698)
Wed Apr 19 16:47:06 2006
Errors in file /opt/oracle/admin/conner/udump/conner_ora_1274.trc:
ORA-01555: snapshot too old: rollback segment number 6 with name "???" too small

注意以上日志信息,触发ORA-01555错误的语句被记录,出现错误的SCN也被纪录,这个SCN: 0x0819.003f594b正是之前提到的ctl max scn: 0x0819.003f594b,进一步的,找到conner_ora_1274.trc 跟踪文件,从中可以获得关于这次错误的相信信息用于诊断。下面从跟踪文件中摘录一点点重要信息,简要说明:

1. 错误信息

*** 2006-04-19 16:47:06.606
ksedmp: internal or fatal error
ORA-01555: snapshot too old: rollback segment number 6 with name "???" too small
Current SQL statement for this session:
select * from emp as of scn 8903471356235 where empno in (7788,7782,7698)

2. 数据块信息

这里的块头就包含了ITL信息,根据这个ITL信息中的UBA,Oracle可以去定位回滚段,查询前镜像信息,如果不存在,就可能出现ORA-01555错误。

Block header dump:  0x00405c5a
 Object id on Block? Y
 seg/obj: 0x1f19  csc: 0x819.407961  itc: 2  flg: O  typ: 1 - DATA
     fsl: 0  fnx: 0x0 ver: 0x01
 
 Itl           Xid                  Uba         Flag  Lck        Scn/Fsc
0x01   0x0009.02e.000036b0  0x00800081.0302.11  C---    0  scn 0x0819.0036f205
0x02   0x0006.018.000036ce  0x00800055.02de.3f  C---    0  scn 0x0819.0040791b

根据这里的Xid,可以进一步的获得回滚段号,事务槽等信息,主动查询或转储回滚段信息进行研究观察。


「喜欢文章,快来给作者赞赏墨值吧」

评论

0
0
Oracle
订阅
欢迎订阅Oracle频道,订阅之后可以获取最新资讯和更新通知。
墨值排行
今日本周综合
近期活动
全部
相关课程
全部