Oracle数据库中基于用户管理的备份与恢复之重做日志的恢复过程,接下来我们就一一介绍。
因为日志组的某个日志成员损坏,如下:
SQL> select group#,status,member from v$logfile;
GROUP# STATUS MEMBER
---------- ------- ----------------------------------------------------------------------
3 F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO03.LOG
2 F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO02.LOG
1 F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO01.LOG
1 F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO01_ADD.LOG
2 F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO02_ADD.LOG
3 F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO03_ADD.LOG
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
- 13.
- 14.
- 15.
- 16.
- 17.
已选择6行。
--使用360强力删除REDO01_ADD.LOG文件,以模拟日志成员损坏。
--多次切换日志,以使刚删除的redo文件处于invalid状态。
SQL> alter system switch logfile;
系统已更改。
SQL> alter system switch logfile;
系统已更改。
......
SQL> select group#,status from v$log;
GROUP# STATUS
---------- ----------------
1 CURRENT
2 ACTIVE
3 ACTIVE
SQL> select group#,status,member from v$logfile;
GROUP# STATUS MEMBER
---------- ------- ----------------------------------------------------------------------
3 F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO03.LOG
2 F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO02.LOG
1 F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO01.LOG
1 INVALID F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO01_ADD.LOG
2 F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO02_ADD.LOG
3 F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO03_ADD.LOG
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
- 13.
- 14.
- 15.
- 16.
- 17.
- 18.
- 19.
- 20.
- 21.
- 22.
- 23.
- 24.
- 25.
- 26.
- 27.
- 28.
- 29.
- 30.
- 31.
已选择6行。
--如果为为当前日志组成员,则不能被删除,这时需要切换日志,才能够删除成员。
SQL> alter database drop logfile member 'F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO01_ADD.LOG';
alter database drop logfile member 'F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO01_ADD.LOG'
*
- 1.
- 2.
- 3.
- 4.
- 5.
第1 行出现错误:
ORA-01609: 日志 1 是线程 1 的当前日志 - 无法删除成员
ORA-00312: 联机日志 1 线程 1: 'F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO01.LOG'
ORA-00312: 联机日志 1 线程 1: 'F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO01_ADD.LOG'
SQL> alter system switch logfile;
系统已更改。
SQL> select group#,status from v$log;
GROUP# STATUS
---------- ----------------
1 ACTIVE
2 CURRENT
3 ACTIVE
SQL> alter database drop logfile member 'F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO01_ADD.LOG';
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
- 13.
- 14.
数据库已更改。
--添加日志组成员
SQL> alter database add logfile member 'F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO01_ADD_NEW.LOG' to group 1;
数据库已更改。
SQL> select group#,status,member from v$logfile;
GROUP# STATUS MEMBER
---------- ------- ----------------------------------------------------------------------
3 F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO03.LOG
2 F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO02.LOG
1 F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO01.LOG
1 INVALID F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO01_ADD_NEW.LOG
2 F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO02_ADD.LOG
3 F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO03_ADD.LOG
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
- 13.
- 14.
- 15.
- 16.
- 17.
已选择6行。
注意,新增加的日志组成员状态也为invalid。
关于Oracle数据库基于用户管理的备份与恢复之重做日志的恢复就介绍到这里了,希望本次的介绍能够给您带来一些收获!
【编辑推荐】