现在的位置: 首页 > 综合 > 正文

REDO日志的删除添加实验

2014年03月22日 ⁄ 综合 ⁄ 共 6997字 ⁄ 字号 评论关闭

1.重做日志组及MEMBER:

重做日志组可以控制了日志文件不至于太大,提高系统效率。

每个重做日志文件REDOLOG叫做成员 MEMBER,多个重做日志文件为一个重做日志组GROUP,ORACLE数据库正常工作需要至少两个重做日志组默认一个组只有一个成员

LGWR在任意时刻只能写一组重做日志组,LGWR后台 进程正在写的重做日志组称当前CURRENT重做日志组,LGWR把完全相同的信息从重做日志缓冲区REDO LOG BUFFER中复制到组中的每个重做日志文件中。

以循环方式 写重做日志组,LGWR写满一组重做日志,就开始下一组重做日志,称为日志切换SWITCH。最后一组写满,开始重写第一组。

以循环方式 写重做日志组导致日志信息被覆盖,引入了归档日志模式archived;

ORACLE默认是非归档模式当归档模式时,LGWR的写操作从一个重做日志组切换到另一个重做日志组后,ARCH就将上一个重做日志文件中信息复制到归档日志文件中。  归档日志文件是重做日志文件的备份。

归档模式时归档写进程 没将重做日志文件中信息复制到归档日志文件之前,LGWR不能再写这组重做日志文件。归档日志文件是脱机日志文件。除了ARCH运行时,不需要管理。

如ORACLE当前正操作的重做日志组中一个成员坏了,ORACLE继续使用组中其它没问题的成员并将错误信息定稿报警文件。当切换到的组中所有成员都坏,ORACLE会关闭系统

关于REDO日志的大小的最低要求:

REDO日志的大小:REDO日志大小不能低于4M,因为一个REDO 的一个BLOCK为512 bytes,日志文件要求不低于8192个 blocks,所以REDO日志大小不低于4M。
如果低于4M-即小于8192个blocks,会报错: ORA-00336: log file size 2048blocks is less than minimum 8192 blocks

关于REDO日志切换的顺序:

使用语句"alter system switch logfile"进行日志切换时,下一个变为CURRENT状态的一定是当前状态下,序列号最低的那个日志组.
补充:其实这很好理解,oracle的日志本来就是循环使用的,只不过这里的循环不是首尾相接式的,而是根据日志序列号判断,将最老的日志给覆盖掉而已.

2.日志切换和检查点

reod日志文件以一种循环方式使用,当一组redo日志文件被写满,LGWR开始写下一组日志文件称为日志切换,此时要产生检查点校验点。一些信息被写到控制文件。

强制性产生重做日志切换命令:

alter system switch logifle;

强制产生检查点命令:

alter system checkpoint;

设置FAST_START_MTTR_TARGET=900 强制900秒即15分钟产生一个检查点。这样实例 恢复时间不会超过900秒。

 

SQL> select group#,status,type,memberfrom v$logfile;

   GROUP# STATUS  TYPE    MEMBER

---------- ------- ---------------------------------------------------------

        3         ONLINE C:\APP\ADMINISTRATOR\ORADATA\ORCL\REDO03.LOG

        2         ONLINE  C:\APP\ADMINISTRATOR\ORADATA\ORCL\REDO02.LOG

        1         ONLINE  C:\APP\ADMINISTRATOR\ORADATA\ORCL\REDO01.LOG

每个redo日志组中的成员个数可以不同,每个redo日志组中成员可以大小不同。但是实际应用中应该使用相同成员个数,相同大小。

3.REDO日志特殊情况下的处理:

当前重做日志组不能删除,如要删除,先用alter system switch logfile切换。

每个重做日志组至少有一个成员才能正常工作,归档模式时要删除的成员未被归档完时无法删除。从系统中删除成员后,操作系统文件除OMF方式管理外都存在,要从操作系统层面删除。

用在redo日志文件崩溃系统挂起,清除redo日志文件使用 alter database clear logfile group 3;

如崩溃的redo日志文件已不能归档,使用命令清除已崩溃的redo日志文件   
alter database clear unarchived logfilegroup 3;

4.添加删除重做日志文件组和添加重做日志文件

步骤有:1.直接增加重做日志文件组并查看是否已经增加上

2.删除原有重做日志文件组,并在新位置增加重做日志文件组。

3.从数据库中查看数据字典验证是否修改成功,在操作系统层面查看是否生成相应重做日志文件。

一、增加日志文件组。默认是顺序增加,比如原来3组,现在新增加的为第4组。

SQL> alter database add logfile group 4  ('d:\disk3\redo04a.log','d:\disk6\redo04b.log','d:\disk9\redo04c.log')  size 15M;

数据库已更改。 ---group 4 ,如果不指定GROUP号,则顺序增加。

SQL> alter  database add logfile group 5  ('d:\disk3\redo05a.log','d:\disk6\redo05b.log','d:\disk9\redo05c.log')  size 15M;

数据库已更改。

SQL> alter  database add logfile group 6  ('d:\disk3\redo06a.log','d:\disk6\redo06b.log','d:\disk9\redo06c.log')  size 15M;

数据库已更改。

数据库在非归档模式下,新加入的日志为什么ARCYES,重启后为NO???

SQL> select  group#,sequence#,members,bytes/1024/1024 M,status,archived from v$log;

    GROUP# SEQUENCE#    MEMBERS          M STATUS           ARC

-------------------- ---------- ---------- ---------------- ---

         1         10          1         50 CURRENT          NO

         2          8          1         50 INACTIVE         NO

         3          9          1         50 INACTIVE         NO

         4          0          3         15 UNUSED           YES

         5          0          3         15 UNUSED           YES

         6          0          3         15 UNUSED           YES

SQL> selectgroup#,status,type,member from v$logfile;

    GROUP# STATUS  TYPE   MEMBER

---------- -------------- --------------------------------------------------

         3         ONLINE C:\APP\ADMINISTRATOR\ORADATA\ORCL\REDO03.LOG

         2         ONLINE C:\APP\ADMINISTRATOR\ORADATA\ORCL\REDO02.LOG

         1         ONLINE C:\APP\ADMINISTRATOR\ORADATA\ORCL\REDO01.LOG

         4         ONLINE D:\DISK3\REDO04A.LOG

         4         ONLINE D:\DISK6\REDO04B.LOG

         4         ONLINE D:\DISK9\REDO04C.LOG

         5         ONLINE D:\DISK3\REDO05A.LOG

         5         ONLINE D:\DISK6\REDO05B.LOG

         5         ONLINE D:\DISK9\REDO05C.LOG

         6         ONLINE D:\DISK3\REDO06A.LOG

         6         ONLINE D:\DISK6\REDO06B.LOG

         6         ONLINE D:\DISK9\REDO06C.LOG

二、删除第3组重做日志文件,STATUSINACTIVE可删除。

SQL> alter database drop logfile group 3;

数据库已更改。

SQL> alter database drop logfile group 2;

数据库已更改

SQL> alter system switch logfile;

系统已更改。

SQL> selectgroup#,sequence#,members,bytes/1024/1024 M,status,archived from v$log;

 

    GROUP# SEQUENCE#    MEMBERS          M STATUS           ARC

-------------------- ---------- ---------- ---------------- ---

         1         10          1         50 ACTIVE           NO

         4         11          3         15 ACTIVE           NO

         5         12          3         15 CURRENT          NO

         6         0          3         15 UNUSED           YES

SQL> alter system switch logfile;

系统已更改。

SQL> selectgroup#,sequence#,members,bytes/1024/1024 M,status,archived from v$log;

    GROUP# SEQUENCE#    MEMBERS          M STATUS           ARC

-------------------- ---------- ---------- ---------------- ---

         1         10          1         50 ACTIVE           NO

         4         11          3         15 ACTIVE           NO

         5         12          3         15 ACTIVE           NO

         6         13          3         15 CURRENT          NO

SQL> selectgroup#,status,type,member from v$logfile;

    GROUP# STATUS  TYPE   MEMBER

---------- -------------- --------------------------------------------------

         1         ONLINE C:\APP\ADMINISTRATOR\ORADATA\ORCL\REDO01.LOG

         4         ONLINE D:\DISK3\REDO04A.LOG

         4         ONLINE D:\DISK6\REDO04B.LOG

         4         ONLINE D:\DISK9\REDO04C.LOG

         5         ONLINE D:\DISK3\REDO05A.LOG

         5        ONLINE  D:\DISK6\REDO05B.LOG

         5         ONLINE D:\DISK9\REDO05C.LOG

         6         ONLINE D:\DISK3\REDO06A.LOG

         6         ONLINE D:\DISK6\REDO06B.LOG

         6         ONLINE D:\DISK9\REDO06C.LOG

切换后STATUS仍为ACTIVE,不能删除重做日志组,可以重启数据库,就可以删除了。或者手工检查点 alter system checkpoint;

SQL> shutdownimmediate;

SQL> startup;

SQL> select group#,status,type,member from v$logfile;

    GROUP# STATUS  TYPE   MEMBER

---------- -------------- --------------------------------------------------

         1        ONLINE C:\APP\ADMINISTRATOR\ORADATA\ORCL\REDO01.LOG

         4         ONLINE D:\DISK3\REDO04A.LOG

         4         ONLINE D:\DISK6\REDO04B.LOG

         4         ONLINE D:\DISK9\REDO04C.LOG

         5         ONLINE D:\DISK3\REDO05A.LOG

         5         ONLINE D:\DISK6\REDO05B.LOG

         5         ONLINE D:\DISK9\REDO05C.LOG

         6         ONLINE D:\DISK3\REDO06A.LOG

         6         ONLINE D:\DISK6\REDO06B.LOG

         6         ONLINE D:\DISK9\REDO06C.LOG

SQL> selectgroup#,sequence#,members,bytes/1024/1024 M,status,archived from v$log;

    GROUP# SEQUENCE#    MEMBERS          M STATUS           ARC

-------------------- ---------- ---------- ---------------- ---

         1         14          1         50 INACTIVE         NO

         4         15          3         15 CURRENT          NO

         5         12          3         15 INACTIVE         NO

         6         13          3         15 INACTIVE         NO

现在可以删除未重启前为ACTIVE状态的GROUP 1了。

SQL> alter database drop logfile group 1;

数据库已更改。

 

三.修改后相关信息的检查

SQL> selectgroup#,sequence#,members,bytes/1024/1024 M,status,archived from v$log;

   GROUP#  SEQUENCE#    MEMBERS          M STATUS           ARC

---------- ---------- ---------- -------------------------- ---

        4         15          3         15 CURRENT          NO

        5         12          3         15 INACTIVE         NO

        6         13          3         15 INACTIVE         NO

 

 

【上篇】
【下篇】

抱歉!评论已关闭.