重做日志(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/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/12035968/viewspace-566974/