SQL> SHOW PARAMETER UNDO
NAME TYPE VALUE
------------------------------------ ----------- --------------
undo_management string AUTO
undo_retention integer 10800
undo_suppress_errors boolean FALSE
undo_tablespace string UNDOTBS2
SQL> SELECT COUNT(*) FROM YANGTK.T;
COUNT(*)
----------
1273614
由于数据库处于逻辑损害的状态,而且使用了隐含参数,很可能造成未知的危害,因此这个时候应该对数据库中的全部数据执行导出操作,然后重建数据库,再导入回去。
即使采用了上面的操作,也无法确保数据库中数据的一致性。这是由于采用了上面的恢复方法,导致UNDO表空间中记录的需要回滚的信息丢失,而这部分对应的数据会被认为是已经提交的数据,从而破坏了数据库的事务性。
上一篇文章采用恢复的方法打开数据库后,查询T表的记录是:
SQL> SELECT COUNT(*) FROM YANGTK.T;
COUNT(*)
----------
636807
这里不难看出二者的差别有多大。因此,这种方法的恢复,只是没有备份时不得已而为之。