32.oracle重做日志(redo log)的几种状态
作者:互联网
1.前言
oracle的重做日志主要记录的是我们对oracle数据进行增删该操作时记录,不过该记录一般是二进制文件,我们是不能用文本文件进行打开,也就是说我们对oracle数据库的DML和DDL操作都会记录该日志中,因为该日志是非常重要的。但是由于我们操作数据库动作是无限的,但是日志文件大小是有限的,因此,日志文件采用循环写(这一点也非常类似于mysql的redo log)的模式进行记录着oracle操作.
2.查看日志状态
SQL> select group#,status,archived from v$log; GROUP# STATUS ARCHIVED ---------- ------------------------------------------------ --------- 1 INACTIVE YES 2 CURRENT NO 3 INACTIVE YES
这里简单地介绍一下:group是日志组的(在oracle中通常是以日志组来区分重做日志,11g中默认的日志组是3个,19c中好像默认的日志组是5),日志组中对应的就是日志文件,每个日志组中可以用一个或者多个日志文件(成员),
status:这里status主要有四种状态,即unused,inactive,active,current
unused通常是指从未被使用的日志组,即新添加的日志组。
current:为LGWR进程正把redo log buffer的日志写进日志组中。
active:为刚刚完成日志切换后的状态,此时该日志组中提交的事务引起的数据改变还没有完全从DB buffer cache写入到数据文件中,因此该日志还不能被覆盖,并且待完全写入后变成为inactive状态,如果数据库为归档模式,那么是在该状态完成归档的。
inactive:该状态的日志可以被覆盖,可以允许写入日志。如果是在归档模式下,那么此阶段证明归档已经完成。
SQL> alter system switch logfile; System altered. SQL> select group#,status,archived from v$log; GROUP# STATUS ARCHIVED ---------- ------------------------------------------------ --------- 1 INACTIVE YES 2 ACTIVE YES 3 CURRENT NO SQL>
这里有个active状态,对应的archived已经归档了,这里可以理解一个中间状态,简单地说就是:1.该日志中的记录已经被归档了(可以说是被cp了)2.该阶段的relog_buffer中的记录完全被刷到了该日志文件中(落盘),但是呢
相较于inactive而言,就是对数据块的修改还没有写到磁盘中,因此该状态下该日志是不能被覆盖的
标签:状态,log,32,inactive,归档,oracle,日志 来源: https://www.cnblogs.com/zmc60/p/15865590.html