联机重做日志文件

一、触发LGWR写日志的条件
联机重做日志文件:
日志写进程LGWR负责把日志缓冲区中的日志条目(Redo Records/Redo Enty)写入联机日志文件中,并赋予一个系统改变标识符SCN,一个条目用于描述一次对某个数据块的改变。

1)当commit事务发生
2)redo log buffer存储达到1/3
3)当重做日志缓冲区有超过一个兆字节的更改记录
4)在DBWN将buffer cache修改过的数据块的信息写入到数据文件之前
5) 发生检查点切换

触发CHECK POINT事件的情况:
1)每次日志切换时。
2)实例通过normal,transactional,immediate选项关闭时
3)通过设置初始化参数FAST_START_MTTR_TARGET强制发生
4) .数据库管理员手工设置ALTER SYSTEM CHECKPOINT、 ALTER TABLESPACE, DATAFILE OFFLINE时。
5).使用alter tablespace[OFFLINE NORMAL|READ ONLY|BEGIN BACKUP] 语句导致指定数据文件发生检查点
非归档模式只能做冷备份,归档模式可以做热备份并且可以做增量备份和部分恢复.

二、联机重做日志状态

日志文件组的状态一般有INACTIVE、ACTIVE、CURRENT、UNUSED、CLEARING、CLEARING_CURRNT等六种状态:

SQL> SELECT STATUS FROM V$LOG;

UNUSED : 表示该联机重做日志文件组对应的文件还从未被写入过数据,通常刚刚创建的联机重做日志文件组会显示成这一状态。当日志切换到这一组时,就会改变状态。

CURRENT : 表示当前正在使用的日志文件组。该联机重做日志组是活动的。当前Oracle数据库正在使用的联机重做日志文件组。

ACTIVE : 表示该组是活动的但不是当前组,实例恢复时需要这组日志。如果处于这一状态,表示虽然当前并未使用,不过该文件中内容尚未归档,或者文件中的数据没有全部写入数据文件,一旦需要实例恢复,必须借助该文件中保存的内容。

INACTIVE: 表示实例恢复已不再需要这组联机重做日志组了。表示对应的联机重做日志文件中的内容已被妥善处理,该组联机重做日志当前处于空闲状态。

CLEARING:表示该组重做日志文件正被重建(重建后该状态会变成UNUSED)。

CLEARING_CURRENT:表示该组重做日志重建时出现错误。

日志文件的状态有STALE,INVALID 、DELETED、空白 四种状态。可以通过下面语句查看

SELECT STATUS FROM V$LOGFILE

INVALID : 表示该文件是不可以被访问的。

STALE : 表示该文件中的内容是不完全的。

空白 : 表示该文件正在使用。

DELETED : 表示该文件已不再有用了。

ARCHIVED列值为YES表示已经归档,NO表示未归档。 SEQUENCE列值表示日志序列号,每进行一次日志切换就+1。

三、重做日志文件相关的查询
SELECT * FROM V$LOG;

SELECT * FROM V$LOGFILE;

SELECT * FROM V$ARCHIVED_LOG;

SELECT * FROM V$RECOVER_FILE

SELECT * FROM V$LOG_HISTORY;

SELECT * FROM V$LOGHIST;

--查看闪回日志使用状况
SELECT * FROM V$FLASH_RECOVERY_AREA_USAGE;

四、日志组的修改
alter database add logfile group 4 ('/home/oracle/oradata/orcl/redo04_01.log', '/home/oracle/oradata/orcl/redo04_02.log') size 500M;
ALTER DATABASE DROP LOGFILE GROUP 1;
注意事项:
1)执行删除日志组命令后,其实只是在数据字典中删掉了对于日志信息。你查看对应的日志文件,你会发现日志文件还在,只有手动删除日志文件,才能

真正的删除日志文件。
2)不能删除仅有的2个文件组;
3)不能删除正在活动的文件组(即CURRENT、ACTIVE状态的日志文件);
4)不能删除当前组的成员,当日志组只有一个成员时,不能删除日志组成员。
5)不能删除还没有归档的文件组。
SQL> alter system switch logfile; --日志切换
SQL> alter database add logfile member '/home/oracle/oradata/orcl/redo1_02.log' to group 1; --增加日志组成员
SQL> alter database drop logfile member  '/home/oracle/oradata/orcl/redo1_02.log'; --删除日志组成员
不能删除日志组中唯一的日志文件,可以使用删除组的方法直接删除组;不能删除没有归档或者还在活动的日志;
重命名日志组成员:
alter database rename file '/home/oracle/oradata/orcl/redo01.log' to '/home/oracle/oradata/orcl/redo1_01.log';
注意2点:
不能移动正在使用的日志文件。
确保执行命令前把目标文件已经移动到新目录下了。

清空日志文件数据

清空是说删除日志文件的内容。主要用于数据库无法进行有效恢复的时候。比如标识为current的日志文件组所有文件都坏了等。只有非active 和非

current状态的组才能被清空

ALTER DATABASE CLEAR LOGFILE 'XXX\XXX\XX.LOG';
ALTER DATABASE CLEAR UNARCHIVED LOGFILE GROUP NUMBER;

《FROM:http://www.cnblogs.com/kerrycode/》

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值