ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 重做日志

重做日志

原创 Linux操作系统 作者:jerryhui 时间:2009-03-12 14:22:11 0 删除 编辑

重做日志(Online Redo Log)

重做日志用于记录数据库变化,当执行例程恢复或介质恢复时需要使用重做日志。当执行DDL和DML操作时,事物变化会被写到重做日志缓冲区,而在特定时刻LGWR会将重做日志缓冲区的内容写入重做日志。每个重做线程至少需要包含两个重做日志组,并且这些重做日志组是循环使用的。假定当前重做线程包含三个日志组,初始阶段LGWR会将事务变化写入到日志组一,当日志组一写满之后,Oracle 自动进行日志切换,并且LGWR会将事务变化写入到日志组二;当日志组二写满之后,LGWR会将事务变化写入到日志组三;当日志组三写满之后,LGWR又会将事物变化写回到日志组一,依此类推:

1)日志组。在单例程环境中,只有一个重做线程:在RAC(Real Application Cluster)环境中,包括多个重做线程。每个重做线程至少要包含两个日志组,通过查询动态性能视图V$LOG,可以显示重做线程的所有日志组信息,包括日志组编号,日志成员个数,日志组状态,尺寸,日志序列号等。下面以显示重做线程1的所有日志组信息为例说明使用V$LOG的方法。示例如下:

SQL> col  status format a8

SQL> col group#  format 999999

SQL> SELECT group#,members,sequence#,status,bytes,first_change# from v$log where thread#=1;

Group#       MEMBERS    SEQUENCES#        STATUS   BYTES FIRST_CHANGE#

1                    1                        176                      INACTIVE   10485760      1034933

2                     1                       177                      INACTIVE    10485760      1058173

3                     1                        178                      CURRENT  10485760     1081806

如上所示,group#用于标识日志组编号,members用于标识每个日志组的日志成员个数,sequence#用于标识日志序列号,status用于标识日志组状态,bytes用于标识日志组尺寸,first_change#用于标识日志组的起始SCN值。

(2)日志成员。日志组是由一个或多个日志成员组成的。通过查询动态性能视图V$LOGFILE,可以显示当前重做线程的所有日志成员信息。下面现实日志组1所包含的日志成员为例说明使用V$LOGFILE的方法。示例如下:

SQL> col member    format   a30

SQL> SELECT member,status from V$logfile where group#=1;

MEMBER                                    STATUS

D:\DEMO\REDO01.LOG           STALE

如上所示,member用于标识日志组的日志成员文件名,status用于标识日志成员的状态(STALE:许久未用-----日志组太大)

 

 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/12035968/viewspace-566974/,如需转载,请注明出处,否则将追究法律责任。

上一篇: 数据文件
请登录后发表评论 登录
全部评论

注册时间:2009-03-12

  • 博文量
    18
  • 访问量
    61751