xifenfei 发表于 2017-7-21 00:11:33

ORA-600 16703故障解析—tab$表被清空

最近连续遇到两次数据库启动报ORA-600 16703错误,而导致数据库无法正常启动的问题
ORA-600 16703报错Completed: ALTER DATABASE RECOVERdatabasealter database openBeginning crash recovery of 1 threads parallel recovery started with 32 processesStarted redo scanCompleted redo scan read 0 KB redo, 0 data blocks need recoveryStarted redo application at Thread 1: logseq 993752, block 2, scn 14872376881763Recovery of Online Redo Log: Thread 1 Group 6 Seq 993752 Reading mem 0Mem# 0: /oracle/oradata/xifenfei/redo06.logCompleted redo application of 0.00MBCompleted crash recovery at Thread 1: logseq 993752, block 3, scn 14872376901765 0 data blocks read, 0 data blocks written, 0 redo k-bytes readTue Jul 04 23:13:29 2017Thread 1 advanced to log sequence 993753 (thread open)Thread 1 opened at log sequence 993753Current log# 7 seq# 993753 mem# 0: /oracle/oradata/xifenfei/redo07.logSuccessful open of redo thread 1MTTR advisory is disabled because FAST_START_MTTR_TARGET is not setTue Jul 04 23:13:29 2017SMON: enabling cache recoveryErrors in file /oracle/diag/rdbms/xifenfei/xifenfei/trace/xifenfei_ora_15886.trc(incident=163595):ORA-00600: internal error code, arguments: , , , [], [], [], [], [], [], [], [], []Incident details in: /oracle/diag/rdbms/xifenfei/xifenfei/incident/incdir_163595/xifenfei_ora_15886_i163595.trcTue Jul 04 23:13:30 2017Use ADRCI or Support Workbench to package the incident.See Note 411.1 at My Oracle Support for error and packaging details.Errors in file /oracle/diag/rdbms/xifenfei/xifenfei/trace/xifenfei_ora_15886.trc:ORA-00704: bootstrap process failureORA-00704: bootstrap process failureORA-00600: internal error code, arguments: , , , [], [], [], [], [], [], [], [], []Errors in file /oracle/diag/rdbms/xifenfei/xifenfei/trace/xifenfei_ora_15886.trc:ORA-00704: bootstrap process failureORA-00704: bootstrap process failureORA-00600: internal error code, arguments: , , , [], [], [], [], [], [], [], [], []Error 704 happened during db open, shutting down databaseUSER (ospid: 15886): terminating the instance due to error 704Instance terminated by USER, pid = 15886ORA-1092 signalled during: alter database open...opiodr aborting process unknown ospid (15886) as a result of ORA-1092这里报错比较明显ORA-600 16703,而且是在启动时bootstrap$中的对象出现该问题.

10046分析启动过程=====================select rowcnt,blkcnt,empcnt,avgspc,chncnt,avgrln,nvl(degree,1), nvl(instances,1) from tab$ where obj# = :1END OF STMTPARSE #140048443935120:c=0,e=390,p=0,cr=0,cu=0,mis=1,r=0,dep=1,og=4,plh=0,tim=1499185905161433=====================select blevel, leafcnt, distkey, lblkkey, dblkkey, clufac,      nvl(degree,1), nvl(instances,1) from ind$ where bo# = :1 and obj# = :2END OF STMTPARSE #140048443934176:c=1000,e=601,p=0,cr=0,cu=0,mis=1,r=0,dep=1,og=4,plh=0,tim=1499185905162088=====================PARSING IN CURSOR #140048443933232 len=70 dep=1 uid=0 oct=3 lid=0 tim=1499185905162444 hv=3377894161 ad='84f13d70' sqlid='32d4jrb4pd4sj'select charsetid, charsetform from col$where obj# = :1 and col# = :2END OF STMTPARSE #140048443933232:c=0,e=294,p=0,cr=0,cu=0,mis=1,r=0,dep=1,og=4,plh=0,tim=1499185905162443=====================PARSING IN CURSOR #140048443932288 len=52 dep=1 uid=0 oct=3 lid=0 tim=1499185905247020 hv=429618617 ad='84f0f2d0' sqlid='4krwuz0ctqxdt'select ctime, mtime, stime from obj$ where obj# = :1END OF STMTPARSE #140048443932288:c=0,e=549,p=0,cr=0,cu=0,mis=1,r=0,dep=1,og=4,plh=0,tim=1499185905247019BINDS #140048443932288:select blevel, leafcnt, distkey, lblkkey, dblkkey, clufac,      nvl(degree,1), nvl(instances,1) from ind$ where bo# = :1 and obj# = :2END OF STMTPARSE #140048443934176:c=1000,e=601,p=0,cr=0,cu=0,mis=1,r=0,dep=1,og=4,plh=0,tim=1499185905162088=====================PARSING IN CURSOR #140048443933232 len=70 dep=1 uid=0 oct=3 lid=0 tim=1499185905162444 hv=3377894161 ad='84f13d70' sqlid='32d4jrb4pd4sj'select charsetid, charsetform from col$where obj# = :1 and col# = :2END OF STMTPARSE #140048443933232:c=0,e=294,p=0,cr=0,cu=0,mis=1,r=0,dep=1,og=4,plh=0,tim=1499185905162443=====================PARSING IN CURSOR #140048443932288 len=52 dep=1 uid=0 oct=3 lid=0 tim=1499185905247020 hv=429618617 ad='84f0f2d0' sqlid='4krwuz0ctqxdt'select ctime, mtime, stime from obj$ where obj# = :1END OF STMTPARSE #140048443932288:c=0,e=549,p=0,cr=0,cu=0,mis=1,r=0,dep=1,og=4,plh=0,tim=1499185905247019BINDS #140048443932288: Bind#0oacdty=02 mxl=22(22) mxlc=00 mal=00 scl=00 pre=00oacflg=00 fl2=0001 frm=00 csi=00 siz=24 off=0kxsbbbfp=7f5f91b87bd0bln=22avl=02flg=05value=20EXEC #140048443932288:c=2000,e=2686,p=0,cr=0,cu=0,mis=1,r=0,dep=1,og=4,plh=1218588913,tim=1499185905249810WAIT #140048443932288: nam='db file sequential read' ela= 6205 file#=1 block#=337 blocks=1 obj#=36 tim=1499185905256132WAIT #140048443932288: nam='db file sequential read' ela= 3739 file#=1 block#=338 blocks=1 obj#=36 tim=1499185905266704WAIT #140048443932288: nam='db file sequential read' ela= 4966 file#=1 block#=241 blocks=1 obj#=18 tim=1499185905271761FETCH #140048443932288:c=0,e=21976,p=3,cr=3,cu=0,mis=0,r=1,dep=1,og=4,plh=1218588913,tim=1499185905271820STAT #140048443932288 id=1 cnt=1 pid=0 pos=1 obj=18 op='TABLE ACCESS BY INDEX ROWID OBJ$ (cr=3 pr=3 pw=0 time=21993 us)'STAT #140048443932288 id=2 cnt=1 pid=1 pos=1 obj=36 op='INDEX RANGE SCAN I_OBJ1 (cr=2 pr=2 pw=0 time=16923 us)'CLOSE #140048443932288:c=0,e=63,dep=1,type=0,tim=1499185905271941BINDS #140048443935120: Bind#0oacdty=02 mxl=22(22) mxlc=00 mal=00 scl=00 pre=00oacflg=08 fl2=0001 frm=00 csi=00 siz=24 off=0kxsbbbfp=7f5f91c07de8bln=22avl=02flg=05value=20EXEC #140048443935120:c=1000,e=795,p=0,cr=0,cu=0,mis=1,r=0,dep=1,og=4,plh=2970138452,tim=1499185905272802WAIT #140048443935120: nam='db file sequential read' ela= 3197 file#=1 block#=169 blocks=1 obj#=3 tim=1499185905276069WAIT #140048443935120: nam='db file sequential read' ela= 3459 file#=1 block#=170 blocks=1 obj#=3 tim=1499185905404084WAIT #140048443935120: nam='db file sequential read' ela= 6358 file#=1 block#=145 blocks=1 obj#=4 tim=1499185905410548FETCH #140048443935120:c=999,e=137805,p=3,cr=3,cu=0,mis=0,r=0,dep=1,og=4,plh=2970138452,tim=1499185905410635STAT #140048443935120 id=1 cnt=0 pid=0 pos=1 obj=4 op='TABLE ACCESS CLUSTER TAB$ (cr=3 pr=3 pw=0 time=137810 us)'STAT #140048443935120 id=2 cnt=1 pid=1 pos=1 obj=3 op='INDEX UNIQUE SCAN I_OBJ# (cr=2 pr=2 pw=0 time=131330 us)' *** 2017-07-05 00:31:46.094Incident 176395 created, dump file: /oracle/diag/rdbms/xifenfei/xifenfei/incident/incdir_176395/xifenfei_ora_51261_i176395.trcORA-00600: internal error code, arguments: , , , [], [], [], [], [], [], [], [], []报错信息明显,由于select rowcnt,blkcnt,empcnt,avgspc,chncnt,avgrln,nvl(degree,1), nvl(instances,1) from tab$ where obj# = :1无法正常执行.从而出现了ORA-600 16703的错误,更加直接一点的解释就是obj#=20的对象在tab$中找不到记录,从而出现此类报错.和官方解释ORA-600 TAB$和obj$不匹配一致.
分析system文件
通过dul等工具分析system文件发现tab$表记录为空Data UnLoader: 11.2.0.1.5 - Internal Only - on Wed Jul 05 01:28:53 2017with 64-bit io functions and the decompression option Copyright (c) 1994 2017 Bernard van Duijnen All rights reserved. Strictly Oracle Internal Use Only Found db_id = 1334610369Found db_name = xifenfeiDUL> unload table TAB$( OBJ# number, DATAOBJ# number,2      TS# number, FILE# number, BLOCK# number,3      BOBJ# number, TAB# number, COLS number, CLUCOLS number,4      PCTFREE$ ignore, PCTUSED$ ignore, INITRANS ignore, MAXTRANS ignore,5      FLAGS ignore, AUDIT$ ignore, ROWCNT ignore, BLKCNT ignore,6      EMPCNT ignore, AVGSPC ignore, CHNCNT ignore, AVGRLN ignore,7      AVGSPC_FLB ignore, FLBCNT ignore,8      ANALYZETIME ignore, SAMPLESIZE ignore,9      DEGREE ignore, INSTANCES ignore, 10      INTCOLS ignore, KERNELCOLS number, PROPERTY number) 11      clusterC_OBJ#(OBJ#) 12      storage ( tablespace 0 segobjno 2 tabno 1 file 1 block 144);. unloading table                      TAB$       0 rows unloadedDUL> unload table OBJ$( OBJ# number, DATAOBJ# number, OWNER# number,2      NAME clean varchar2(30), NAMESPACE ignore, SUBNAME clean varchar2(30),3      TYPE# number, CTIME ignore, MTIME ignore, STIME ignore,4      STATUS ignore, REMOTEOWNER ignore, LINKNAME ignore,5      FLAGS ignore, OID$ hexraw)6      storage ( tablespace 0 segobjno 18 file 1 block 240);. unloading table                      OBJ$   89804 rows unloadedDUL>发现在obj$中有创建表ORACHKBEC66CBE055000000000001(ORACHK+16进制24位)的一个表名字http://www.xifenfei.com/wp-content/uploads/2017/07/orachk.jpg
该表用途通过分析数据库日志发现
create table ORACHKBEC66CBE055000000000001 tablespace system as select * from sys.tab$;
也就是说,这个orachk的表是用来备份tab$的,然后进一步发现有delete from tab$.至此基本上分析清楚,tab$表备份到ORACHK表中,然后delete tab$表数据.实现数据库破坏以及难以恢复的效果.有点类似plsql dev引起的数据库被黑勒索比特币实现原理分析和解决方案的破坏案例
通过最近案例的分析,我们已经具备了恢复这种破坏的能力,实现业务数据0丢失的恢复,如果需要请联系我们,提供技术支持
Phone:13429648788    Q Q:107644445http://www.orasos.com/wp-content/themes/img/site_qq.jpg    E-Mail:dba@xifenfei.com
由于接触的case都存在不完整行,目前该种破坏源头未分析情况,请尽可能保护好现场,防止二次破坏
页: [1]
查看完整版本: ORA-600 16703故障解析—tab$表被清空