联机重做日志文件至少需要两组,oracle建议每组的成员至少要两个,也需要多路复用的。因为每组的成员的内容的都是一样的。同一组内只要有一个成员还存在就可以保证不丢数据的。
1、在open状态下非活动组所有成员全部损坏,可以重建一个成员。
SQL> conn /as sysdba 已连接到空闲例程。 SQL> startup ORACLE 例程已经启动。 Total System Global Area 167772160 bytes Fixed Size 1266392 bytes Variable Size 62917928 bytes Database Buffers 100663296 bytes Redo Buffers 2924544 bytes 数据库装载完毕。 数据库已经打开。 SQL> select * from v$log; GROUP# THREAD# SEQUENCE# BYTES MEMBERS ARC STATUS FIRST_CHANGE# FIRST_TIME ---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- -------------- 1 1 13 52428800 1 YES INACTIVE 474583 10-10月-11 2 1 14 52428800 1 NO CURRENT 474585 10-10月-11 3 1 12 52428800 1 YES INACTIVE 474581 10-10月-11 SQL> select member from v$logfile; MEMBER -------------------------------------------------------------------------------- /u01/app/oracle/oradata/orcl/redo03.log /u01/app/oracle/oradata/orcl/redo02.log /u01/app/oracle/oradata/orcl/redo01.log SQL> ! rm -rf /u01/app/oracle/oradata/orcl/redo03.log SQL> alter system switch logfile; 系统已更改。 SQL> alter system archive log current; alter system archive log current * 第 1 行出现错误: ORA-16038: 日志 3 sequence# 15 无法归档 ORA-00312: 联机日志 3 线程 1: '/u01/app/oracle/oradata/orcl/redo03.log' SQL> alter database clear unarchived logfile group 3; 数据库已更改。 SQL> alter system archive log current; 系统已更改。
2、在关闭状态下非活动组所有成员全部损坏,可以添加一个新组,删除旧组。
SQL> conn /as sysdba 已连接到空闲例程。 SQL> startup ORACLE 例程已经启动。 Total System Global Area 167772160 bytes Fixed Size 1266392 bytes Variable Size 62917928 bytes Database Buffers 100663296 bytes Redo Buffers 2924544 bytes 数据库装载完毕。 数据库已经打开。 SQL> select * from v$log; GROUP# THREAD# SEQUENCE# BYTES MEMBERS ARC STATUS FIRST_CHANGE# FIRST_TIME ---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- -------------- 1 1 13 52428800 1 YES INACTIVE 474583 10-10月-11 2 1 14 52428800 1 NO CURRENT 474585 10-10月-11 3 1 12 52428800 1 YES INACTIVE 474581 10-10月-11 SQL> select member from v$logfile; MEMBER -------------------------------------------------------------------------------- /u01/app/oracle/oradata/orcl/redo03.log /u01/app/oracle/oradata/orcl/redo02.log /u01/app/oracle/oradata/orcl/redo01.log SQL> shutdown immediate 数据库已经关闭。 已经卸载数据库。 ORACLE 例程已经关闭。 SQL> ! rm -rf /u01/app/oracle/oradata/orcl/redo03.log SQL> startup ORACLE 例程已经启动。 Total System Global Area 167772160 bytes Fixed Size 1266392 bytes Variable Size 62917928 bytes Database Buffers 100663296 bytes Redo Buffers 2924544 bytes 数据库装载完毕。 ORA-00313: 无法打开日志组 3 (用于线程 1) 的成员 ORA-00312: 联机日志 3 线程 1: '/u01/app/oracle/oradata/orcl/redo03.log' SQL> alter database add logfile group 4('/u01/app/oracle/oradata/orcl/redo04.log') size 50m; 数据库已更改。 SQL> alter database drop logfile group 3; 数据库已更改。 SQL> select * from v$log; GROUP# THREAD# SEQUENCE# BYTES MEMBERS ARC STATUS FIRST_CHANGE# FIRST_TIME ---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- -------------- 1 1 13 52428800 1 YES INACTIVE 474583 10-10月-11 4 1 0 52428800 1 YES UNUSED 0 2 1 14 52428800 1 NO CURRENT 474585 10-10月-11 SQL> select member from v$logfile; MEMBER -------------------------------------------------------------------------------- /u01/app/oracle/oradata/orcl/redo02.log /u01/app/oracle/oradata/orcl/redo01.log /u01/app/oracle/oradata/orcl/redo04.log SQL> alter database open; 数据库已更改。 SQL> select status from v$instance; STATUS ------------ OPEN