v$log中status说明及redo log大小修改

来源:互联网 发布:mac thunderbolt网桥 编辑:程序博客网 时间:2024/05/16 07:53

原文链接:http://blog.vsharing.com/mark97/A1419542.html

1.current

指current是目前的日志文件,该日志文件是活动的,当前正在被使用的,在进行崩溃恢复时,current的日志是必须的;

2.active

是活动的非当前日志,该日志可能已经完成归档也可能没有归档,对应的脏数据还未下盘,在实例恢复时需要;

active状态意味着,checkpoint尚未完成,如果日志文件循环使用再次到达该文件,数据库将处于等待停顿状态,此时数据库日志中有如下记录:

Thread 1cannot allocate new log,sequence 7239

Checkpoint not complete

   Current log# 5 seq# 7238 mem#0: /opt/oracle/oradata/hsmkt/redo05.log

可通过v$session_wait来查看,显示数据库当前哪些session正在处于这种等待

Checkpoint not complete 在数据库中体现为等待事件 log file switch(checkpoint incomplete)

 _selectsid,event,state from v$session_wait; 

日志文件必须等待dbwr完成checkpoint触发的写操作之后才能被覆盖,如果设置参数 log_checkpoint_to_alert 为 true,在alert 文件中可以看到checkpoint的增进和完成情况:

引起checkpoint incomplete 可能原因如下:

1.日志文件太小,切换过于频繁

2.日志组太小,不能满足正常事务量的需要

3.日志文件所在磁盘I/O 存在颈瓶,导致写出缓慢,阻塞数据库正常运行

4.数据文件磁盘I/O瓶颈,DBWR写出过于缓慢

5.事务量具大,DBWR负荷过高,不堪重负

 

3. inactive

非活动日志,对应的脏数据已经下盘,实例恢复时不再需要,但在介质恢复时可能会用到,如果数据库启动在归档模式,在没有完成归档之前,日志文件也不容许被覆盖,这时活动进程会处于log file switch(archiving needed)等待之中


 4.unused

指该日志从未被写入,这类日志可能是刚被添加到数据库或者resetlogs 之后被重置    以上状态的日志文件是否归档 ,要看v$log.archived

 

redo file大小修改:

1.select a.status,a.group#,b.member from v$log a,v$logfile b
where a.group#=b.group#;

(status= INACTIVE,UNUSED 可以删除)

或者 select  * from v$log;
2.alter database drop logfile group 1; -----1为上面查询出来的状态为 INACTIVE,UNUSED的
3.alter database add logfile group 5 ('C:\ORACLE\PRODUCT\10.2.0\ORADATA\YWDB\REDO06.LOG','C:\ORACLE\PRODUCT\10.2.0\ORADATA\YWDB\REDO07.LOG') size 100m;
(注意路径,文件名,组编号,size大小)
4.将现在使用的日志切换到下一组
alter system switch logfile;


原创粉丝点击