联系:手机/微信(+86 17813235971) QQ(107644445)
标题:ORA-600 16703直接把orachk备份表插入到tab$恢复
作者:惜分飞©版权所有[未经本人同意,不得以任何形式转载,否则有进一步追究法律责任的权利.]
有一个朋友和我说,他们数据库出现了以下错误ORA-600 16703 错误
他们是在虚拟化环境中,可以恢复到上一个快照点,但是主机启动之后,数据库依旧异常,让我们进行处理
C:\Users\Administrator>sqlplus / as sysdba SQL*Plus: Release 11.2.0.4.0 Production on Wed Mar 24 17:04:01 2021 Copyright (c) 1982, 2013, Oracle. All rights reserved. Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production With the Partitioning, OLAP, Data Mining and Real Application Testing options SQL> select open_mode from v$database; OPEN_MODE -------------------- READ WRITE SQL> select count(1) from tab$; COUNT(1) ---------- 0
很明显tab$已经被清空,数据库无法正常使用.因为库没有crash,尝试把备份的orachk表插入进来
SQL> insert into tab$ select * from ORACHKB514061BDCB10EBA9CF58F3; 6318 rows created. SQL> commit; Commit complete. SQL> select 'DROP TRIGGER '||owner||'."'||TRIGGER_NAME||'";' from dba_triggers w here TRIGGER_NAME like 'DBMS_%_INTERNAL% ' 2 union all 3 select 'DROP PROCEDURE '||owner||'."'||a.object_name||'";' from dba_procedu res a where a.object_name like 'DBMS_%_INTERNAL% ' 4 union all 5 select 'drop '||object_type||' '||owner||'.'||object_name||';' from dba_obj ects where object_name in('DBMS_SUPPORT_DBMONITOR','DBMS_SUPPORT_DBMONITORP'); 'DROPTRIGGER'||OWNER||'."'||TRIGGER_NAME||'";' -------------------------------------------------------------------------------- drop PROCEDURE SYS.DBMS_SUPPORT_DBMONITORP; drop TRIGGER SYS.DBMS_SUPPORT_DBMONITOR; SQL> drop PROCEDURE SYS.DBMS_SUPPORT_DBMONITORP; Procedure dropped. SQL> drop TRIGGER SYS.DBMS_SUPPORT_DBMONITOR; Trigger dropped. SQL> commit; Commit complete. SQL>
重启数据库,该故障恢复完成,数据完美恢复0丢失.