转载:http://blog.sina.com.cn/s/blog_406d9bb00100fxag.html
OnlineRedoLogFile的主要作用是为了提高数据库性能,有变动的数据信息不直接写入磁盘而是先通过LGWR把数据写入到OnlineRedoLogFile里面,然后再用DBWR写进磁盘。大概的流程是写满第一组后写第二组再写第三组然后转回来继续写第一组。每写完一组再转到下一组的时候会发生log switch, 这时也会自动启动check point, 所谓check point 就是把当前的 redo文件通过DBWR写入到磁盘中去,这样的话下次转到继续写他的时候以前的数据才不会丢失。最少要有两个组,每个组最少要有一个成员,当然为了数据安全不丢失,一般都要弄至少两到三个成员分别放到不同的磁盘上去。
SQL> alter system checkpoint;
System altered
SQL> show parameter fast
NAME
------------------------------------ ----------- ------------------------------
fast_start_io_target
fast_start_mttr_target
fast_start_parallel_rollback
SQL> alter system set fast_start_mttr_target=2000 scope=both;
System altered.
SQL> show parameter fast
NAME
------------------------------------ ----------- ------------------------------
fast_start_io_target
fast_start_mttr_target
fast_start_parallel_rollback
下面介绍一下怎么在组之间进行手工切换的操作
SQL> desc V$controlfile
SQL> col name format a35;
SQL> select * from V$controlfile;
STATUS
------- ----------------------------------- --- ---------- --------------
SQL> desc v$log;
SQL> select group#,thread#,sequence#,status from v$log;
---------- ---------- ---------- ----------------
SQL> alter system switch logfile;
System altered.
SQL> select group#,thread#,sequence#,status from v$log;
---------- ---------- ---------- ----------------
SQL> desc v$logfile;
SQL> col member format a40
SQL> select * from v$logfile;
---------- ------- ------- ---------------------------------------- ---
SQL> alter database add logfile group 4
SQL> !
[oracle@oracle11g ~]$ cd /u01/oradata/yofee
[oracle@oracle11g yofee]$ ll
total 1777220
-rw-r-----
-rw-r-----
-rw-r-----
-rw-r-----
-rw-r-----
-rw-r-----
-rw-r-----
-rw-r-----
-rw-r-----
-rw-r-----
-rw-r-----
-rw-r-----
-rw-r-----
-rw-r-----
-rw-r-----
[oracle@oracle11g yofee]$ exit
exit
SQL> alter database add logfile member
---------- ------- ------- ---------------------------------------- ---
下面介绍一下怎么删除一个组里面其中一个成员(前提是他不是当前激活状态组的成员并且要保证他里面的数据已经归档了,否则会丢失上面的数据)
SQL> select * from v$logfile;
---------- ------- ------- ---------------------------------------- ---
SQL> alter database drop logfile member '/u01/oradata/yofee/redo04a.log';
Database altered.
下一步自然就是切换到Linux环境,然后找到他的目录将其删除(RM -f)
走到这一步的时候,group 4里面也就只有一个log文件了,我们必须通过删除组来达到这个目的,因为每个组里面必须得有一个成员嘛。
删除组:
// 状态是Inactive表示已经发生checkpoint,已经被DBWR写入进磁盘了,可以删除掉,如果是active表示已经存在脏数据,DBWR还没有运行。一般都会让group连续,现在要删的话就删4 。如果他当前是current状态的话就切换一下组。
Alter system switch logfile;
SQL> select group#,members,archived,status from v$log;
---------- ---------- --- ----------------
Alter database drop logfile group 4;
当然,和以前一样,我们还得在对就的目录去把这个组的成员物理地删除掉便大功告成了。
The End
谢谢观看!
update:
alter database add logfile group 4
('/app/oracle/product/oradata/test/redo04.log') size 50M;
alter database add logfile member
SQL> select group#,members,archived,status from v$log;
---------- ---------- --- ----------------
这个unused 的状态不用手动去改,当下一次日志切换的时候就会变成current,
SQL> alter system switch logfile;
System altered.
SQL> select group#,members,archived,status from v$log;
---------- ---------- --- ----------------