有一个朋友和我说,他们数据库出现了以下错误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丢失.