试验五:丢失当前日志组的成员1、SQL>; select * from v$logfile;
GROUP# STATUS TYPE
---------- ------- -------
MEMBER
--------------------------------------------------------------------------------
3 ONLINE /T3/ORACLE/oradata/ORA9/redo03.log
2 ONLINE /T3/ORACLE/oradata/ORA9/redo02.log
1 ONLINE /T3/ORACLE/oradata/ORA9/redo01.log
GROUP# STATUS TYPE
---------- ------- -------
MEMBER
--------------------------------------------------------------------------------
1 ONLINE /T3/ORACLE/oradata/ORA9/redo01a.log
2 ONLINE /T3/ORACLE/oradata/ORA9/redo02a.log
3 ONLINE /T3/ORACLE/oradata/ORA9/redo03a.log
SQL>; select * from v$log;
GROUP# THREAD# SEQUENCE# BYTES MEMBERS ARC STATUS
---------- ---------- ---------- ---------- ---------- --- ----------------
FIRST_CHANGE# FIRST_TIME
------------- ----------
1 1 2 104857600 2 YES INACTIVE 554599 02-9月 -05
2 1 3 104857600 2 YES INACTIVE 554601 02-9月 -05
3 1 4 104857600 2 NO CURRENT 554603 02-9月 -05 SQL>;3、 模拟插入数据SQL>; conn test/test Connected. SQL>; select * from test;
TEL
----------
1 2 3 4
SQL>; insert into test values(5);
1 row created.
SQL>; commit 2 ;
Commit complete. 4、shutdown db,模拟删除一个当前日志成员$ cd oradata/ORA9 $ ls redo03* redo03.log redo03a.log $ rm redo03a.log 5、启动db,表面没有错误SQL>; startup ORACLE instance started.
Total System Global Area 353862792 bytes Fixed Size 730248 bytes Variable Size 285212672 bytes Database Buffers 67108864 bytes Redo Buffers 811008 bytes Database mounted. Database opened. SQL>;6、 查看日至成员SQL>; select * from v$logfile;
GROUP# STATUS TYPE
---------- ------- -------
MEMBER
--------------------------------------------------------------------------------
3 ONLINE /T3/ORACLE/oradata/ORA9/redo03.log
2 ONLINE /T3/ORACLE/oradata/ORA9/redo02.log
1 ONLINE /T3/ORACLE/oradata/ORA9/redo01.log
GROUP# STATUS TYPE
---------- ------- -------
MEMBER
--------------------------------------------------------------------------------
1 ONLINE /T3/ORACLE/oradata/ORA9/redo01a.log
2 ONLINE /T3/ORACLE/oradata/ORA9/redo02a.log
3 INVALID ONLINE /T3/ORACLE/oradata/ORA9/redo03a.log 7、删除出问题的联机日志文件SQL>; alter database drop logfile member '/T3/ORACLE/oradata/ORA9/redo03a.log';alter database drop logfile member '/T3/ORACLE/oradata/ORA9/redo03a.log' * ERROR at line 1:ORA-01609: log 3 is the current log for thread 1 - cannot drop members ORA-00312: online log 3 thread 1: '/T3/ORACLE/oradata/ORA9/redo03.log' ORA-00312: online log 3 thread 1: '/T3/ORACLE/oradata/ORA9/redo03a.log'
SQL>;看来当前日志成员是不允许删除的SQL>; alter system switch logfile;
System altered.
SQL>; select * from v$log;
GROUP# THREAD# SEQUENCE# BYTES MEMBERS ARC STATUS
---------- ---------- ---------- ---------- ---------- --- ----------------
FIRST_CHANGE# FIRST_TIME
------------- ----------
1 1 5 104857600 2 NO CURRENT 557687 02-9月 -05
2 1 3 104857600 2 YES INACTIVE 554601 02-9月 -05
3 1 4 104857600 2 YES ACTIVE 554603 02-9月 -05
SQL>; alter database drop logfile member '/T3/ORACLE/oradata/ORA9/redo03a.log';
Database altered.
SQL>; alter database add logfile member '/T3/ORACLE/oradata/ORA9/redo03a.log' to group 3;
Database altered. SQL>; select * from v$logfile;
GROUP# STATUS TYPE
---------- ------- -------
MEMBER
--------------------------------------------------------------------------------
3 ONLINE /T3/ORACLE/oradata/ORA9/redo03.log
2 ONLINE /T3/ORACLE/oradata/ORA9/redo02.log
1 ONLINE /T3/ORACLE/oradata/ORA9/redo01.log
GROUP# STATUS TYPE
---------- ------- -------
MEMBER
--------------------------------------------------------------------------------
1 ONLINE /T3/ORACLE/oradata/ORA9/redo01a.log
2 ONLINE /T3/ORACLE/oradata/ORA9/redo02a.log
3 INVALID ONLINE /T3/ORACLE/oradata/ORA9/redo03a.log看来还得切换一下日至SQL>; alter system switch logfile;
System altered. SQL>; select * from v$logfile;
GROUP# STATUS TYPE
---------- ------- -------
MEMBER
--------------------------------------------------------------------------------
3 ONLINE /T3/ORACLE/oradata/ORA9/redo03.log
2 ONLINE /T3/ORACLE/oradata/ORA9/redo02.log
1 ONLINE /T3/ORACLE/oradata/ORA9/redo01.log
GROUP# STATUS TYPE
---------- ------- -------
MEMBER
--------------------------------------------------------------------------------
1 ONLINE /T3/ORACLE/oradata/ORA9/redo01a.log
2 ONLINE /T3/ORACLE/oradata/ORA9/redo02a.log
3 ONLINE /T3/ORACLE/oradata/ORA9/redo03a.log
至此,大功告成……………。
结论:
只要日志组的member不是一个,出现前面的4种可能性是非常小的,即使出现了也有相应的恢复方法,所以不必惊慌;如果memer多于1个,即使坏了其中的几个,也不会 影响数据库的正常启动,启动后,再进行相应的操作即可, 所以这个时候每天察看alert.log就显得非常重要了。[@more@]
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/18921899/viewspace-1017277/
,如需转载,请注明出处,否则将追究法律责任。