current online redo logfile 丢失的处理方法(3)

Total System Global Area  285212672 bytes
 Fixed Size                  1218992 bytes
 Variable Size            100664912 bytes
 Database Buffers          180355072 bytes
 Redo Buffers                2973696 bytes
 Database mounted.
 ORA-01589: must use RESETLOGS or NORESETLOGS option for database open
 

--最后用resetlogs打开数据库
 SQL> alter database open resetlogs;
 

Database altered.
 

SQL>
 

[oracle@ora10g ora10g]$ ll
 total 1051020
 -rw-r----- 1 oracle oinstall  7061504 Aug 26 16:03 control01.ctl
 -rw-r----- 1 oracle oinstall  7061504 Aug 26 16:03 control02.ctl
 -rw-r----- 1 oracle oinstall  7061504 Aug 26 16:03 control03.ctl
 -rw-r----- 1 oracle oinstall 104865792 Aug 26 16:03 example01.dbf
 -rw-r----- 1 oracle oinstall  52429312 Aug 26 16:03 redo01.log
 -rw-r----- 1 oracle oinstall  52429312 Aug 26 16:03 redo02.log
 -rw-r----- 1 oracle oinstall  52429312 Aug 26 16:03 redo03.log
 -rw-r----- 1 oracle oinstall 251666432 Aug 26 16:03 sysaux01.dbf
 -rw-r----- 1 oracle oinstall 503324672 Aug 26 16:03 system01.dbf
 -rw-r----- 1 oracle oinstall  20979712 Aug 26 16:03 temp01.dbf
 -rw-r----- 1 oracle oinstall  31465472 Aug 26 16:03 undotbs01.dbf
 -rw-r----- 1 oracle oinstall  5251072 Aug 26 16:03 users01.dbf
 [oracle@ora10g ora10g]$
 

再次查看数据文件,发现重新生成了3个online redo logfile了
 

--resetlogs把SEQUENCE#序列号重新变成1
 SQL> select group#,sequence# from v$log;
 

GROUP#  SEQUENCE#
 ---------- ----------
          1          0
          2          1
          3          0
 

--测试表只留下了原来的数据库,因为没有commit,新插入的第3条记录丢失,就算commit,也是会丢数据的,因为redo logfile也被删除了 

SQL> select * from aaron8219.test1; 

INT
 ----------
          1
          2


注意,最后要把刚才设置的隐含参数_allow_resetlogs_corruption = true去掉,并重新创建spfile,否则数据库将来会有引起不一致的风险,设置该隐含参数只是下下策,为了能让数据库open而不得已为之,丢失数据库是肯定的了,因为这是在极端情况下得测试,通常只有在丢失了状态为current的online redo logfile才会丢失数据,如果只是inactive的redo logfile,就算使用alter database open resetlogs;也不意味着100%丢数据。另外,要注意的是,当使用using backup controlfile关键词时,必须要配合使用open resetlogs来打开数据库。以resetlogs方式open数据库后,必须重新做一次数据库全备,因为一旦incarnation改变之后,数据库原来的备份集就失效了。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/5a4e08cb5aeb0a5a7748b38c837e0b25.html