redo日志文件组的三种状态(current,active,inactive)
2014-10-01 11:29
411 查看
以下内容是我从自己的测试环境中查询出来的在线重做日志信息:
SQL> select * from v$log;
GROUP# THREAD# SEQUENCE# BYTES
MEMBERS ARC STATUS FIRST_CHANGE#
FIRST_TIM
---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- ---------
1 1
11 52428800 1
NO CURRENT 535890
19-MAY-12
2 1
9 52428800 1
YES INACTIVE 523266
18-MAY-12
3 1
10 52428800 1
NO ACTIVE 525309
18-MAY-12
可以看到在这里日志文件有三个状态:
CURRENT,当前的
INACTIVE,不活动的
ACTIVE,活动的
以下信息摘自Oracle官方手册Database Administrator's Guide:what is redo log?
Active (Current) and Inactive Redo Log Files
Oracle Database uses only one redo log files at a time to store redo records written from the redo log buffer. The redo log file that LGWR is actively writing to is called the current redo log file.
Redo log files that are required for instance recovery are called active redo log files. Redo log files that are no longer required for instance recovery are called inactive redo log files.
If you have enabled archiving (the database is in ARCHIVELOG mode), then the database cannot reuse or overwrite an active online log file until one of the archiver background processes (ARCn) has archived its contents. If archiving is disabled (the database
is in NOARCHIVELOG mode), then when the last redo log file is full, LGWR continues by overwriting the first available active file.
上面的这段话意思大致如下:(翻译的不正确的地方,还请指正)
Oracle数据库在只使用一个重做日志文件将某段时间内的重做日志缓冲区的信息记录进去。这个重做日志文件被LGWR进程实时的写入,被称作current的重做日志文件。
如果重做日志文件在实例恢复的时候被需要,那么我们称作这个重做日志文件为active的。重做日志文件在实例恢复的时候不被需要,那么我们称作这个重做日志文件为inactive的。
如果你开启了归档模式(数据库在ARCHIVELOG模式),在后台进程(ARCn)将重做日志文件的信息已归档之前,数据库无法重用active状态的重做日志文件。如果归档模式是禁用的(数据库在NOARCHIVELOG模式),而且最后一个重做日志文件已经被写满,LGWR会重新复写第一个可用的活动的文件。
注:处于active的日志文件组无法删除,因为这个日志文件组可能会在实例恢复的时候使用。
我们可以使用alter database checkpoint命令手动的创建一个检查点,来是active的日志文件组变成inactive的日志文件组,这一点在扩容日志文件组(先删除再添加)的时候会用到!
可以使用alter system switch logfile命令手动的切换日志文件组
另外在说一下active和inactive的一些区别,其实这两种状态的重做日志都是已经归档的,不同的只是,active状态的重做日志文件组是在实例恢复的时候被需要的,因为有一些事务虽然已经提交了,但是这些记录的更改还没有写到datafile中,如果这个时候实例一旦失败(断电或者其他的突发情况),在进行实例恢复的时候会需要这些active状态的日志文件组,每过一段时间,当系统负载不是很大的时候,Oracle会尝试将内存中的数据写入到datafile中,这个时候active的日志文件组就会变成inactive状态,我们可以使用alter
database checkpoint强制来执行这个过程;而inactive是在实例恢复的时候不被需要的日志文件组。
SQL> select * from v$log;
GROUP# THREAD# SEQUENCE# BYTES
MEMBERS ARC STATUS FIRST_CHANGE#
FIRST_TIM
---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- ---------
1 1
11 52428800 1
NO CURRENT 535890
19-MAY-12
2 1
9 52428800 1
YES INACTIVE 523266
18-MAY-12
3 1
10 52428800 1
NO ACTIVE 525309
18-MAY-12
可以看到在这里日志文件有三个状态:
CURRENT,当前的
INACTIVE,不活动的
ACTIVE,活动的
以下信息摘自Oracle官方手册Database Administrator's Guide:what is redo log?
Active (Current) and Inactive Redo Log Files
Oracle Database uses only one redo log files at a time to store redo records written from the redo log buffer. The redo log file that LGWR is actively writing to is called the current redo log file.
Redo log files that are required for instance recovery are called active redo log files. Redo log files that are no longer required for instance recovery are called inactive redo log files.
If you have enabled archiving (the database is in ARCHIVELOG mode), then the database cannot reuse or overwrite an active online log file until one of the archiver background processes (ARCn) has archived its contents. If archiving is disabled (the database
is in NOARCHIVELOG mode), then when the last redo log file is full, LGWR continues by overwriting the first available active file.
上面的这段话意思大致如下:(翻译的不正确的地方,还请指正)
Oracle数据库在只使用一个重做日志文件将某段时间内的重做日志缓冲区的信息记录进去。这个重做日志文件被LGWR进程实时的写入,被称作current的重做日志文件。
如果重做日志文件在实例恢复的时候被需要,那么我们称作这个重做日志文件为active的。重做日志文件在实例恢复的时候不被需要,那么我们称作这个重做日志文件为inactive的。
如果你开启了归档模式(数据库在ARCHIVELOG模式),在后台进程(ARCn)将重做日志文件的信息已归档之前,数据库无法重用active状态的重做日志文件。如果归档模式是禁用的(数据库在NOARCHIVELOG模式),而且最后一个重做日志文件已经被写满,LGWR会重新复写第一个可用的活动的文件。
注:处于active的日志文件组无法删除,因为这个日志文件组可能会在实例恢复的时候使用。
我们可以使用alter database checkpoint命令手动的创建一个检查点,来是active的日志文件组变成inactive的日志文件组,这一点在扩容日志文件组(先删除再添加)的时候会用到!
可以使用alter system switch logfile命令手动的切换日志文件组
另外在说一下active和inactive的一些区别,其实这两种状态的重做日志都是已经归档的,不同的只是,active状态的重做日志文件组是在实例恢复的时候被需要的,因为有一些事务虽然已经提交了,但是这些记录的更改还没有写到datafile中,如果这个时候实例一旦失败(断电或者其他的突发情况),在进行实例恢复的时候会需要这些active状态的日志文件组,每过一段时间,当系统负载不是很大的时候,Oracle会尝试将内存中的数据写入到datafile中,这个时候active的日志文件组就会变成inactive状态,我们可以使用alter
database checkpoint强制来执行这个过程;而inactive是在实例恢复的时候不被需要的日志文件组。
相关文章推荐
- 日志最常见的状态有以下几种:CURRENT , ACTIVE , INACTIVE ,UNUSED
- Oracle日志文件的状态current/active/inactive/unused
- Redo log的六种状态(CURRENT、ACTIVE、INACTIVE、UNUSED、CLEARING、CLEARING_CURRENT)浅析
- Oracle日志文件的状态current/active/inactive/unused
- oracle 重做日志组的三种状态:current,active,inactive
- oracle 重做日志组的三种状态:current,active,inactive
- 没有备份的current状态的redo日志损坏
- 日志组状态:inactive/active/current
- [Oracle] Active或Current联机日志文件丢失如何恢复?
- 没有备份的current状态的redo日志损坏
- 在Linux下文件的三种时间标记:访问时间、修改时间、状态改动时间
- 在Linux下,一个文件也有三种时间,分别是:访问时间、修改时间、状态改动时间
- oracle 重做联机日志文件 七步重建redo联机日志 五分钟重建redo日志重建
- 问题7----重做日志文件一直切换不到非活动状态
- <转载>在Linux下文件的三种时间标记:访问时间、修改时间、状态改动时间
- Oracle session active 和 inactive 状态 说明
- 联机重做日志文件组的状态介绍
- oracle 丢失日志(redoxx_xx)文件后的处理方法
- redo日志文件管理
- 数据库日志文件-- undo log 、redo log、 undo/redo log