v$session_wait
用来查询redo buffer的空间信息
select sid,event,seconds_in_wait,state from v$session_wait where
event = 'log buffer space';
v$sysstat
redo buffer空间分配的重试次数及redo的数量
redo entries
select name,value from v$sysstat where name
in ('redo entries','redo buffer allocation retries');
v$system_event
the log file switch waits because of log switchs
select event,total_waits,time_waited,average_wait
from v$system_event where
event like 'log file switch compleciont%'
增加组数
当LGWR查找空闲可用的redo日志文件组的时候DBWn没有完成checkpoint
1、在alter日志文件中,可以找到相关“checkpoint not complete”的字样
2、select event,total_waits,time_waited,average_wait
from v$system_event where event like 'log file switch (check%';
增加redo log 组的数量或者是增大redo 日志文件的大小
当arch进程未完成归档时,会导致LGWR写入redo日志文件
1、归档日志的磁盘空间是否已经满了
2、增加redo日志组
3、select event,total_waits,time_waited,average_wait
from v$system_event where event like 'log file switch (arch%;
修改arch进程的最大数量,只要修改参数LOG_ARCHIVE_MAX_PROCESS初始化参数即可
Log File Switch-日志文件切换
当这个等待出现时,表示所有的提交(commit)的请求都需要等待"日志文件切换"的完成。
Log file Switch 主要包含两个子事件:
log file switch (archiving needed)
log file switch (checkpoint incomplete)
log file switch (archiving needed)
这个等待事件出现时通常是因为日志组循环写满以后,第一个日志归档尚未完成,出现该等待。出现该等待,可能表示io 存在问题。解决办法:
可以考虑增大日志文件和增加日志组
移动归档文件到快速磁盘
调整log_archive_max_processes .
log file switch (checkpoint incomplete)-日志切换(检查点未完成)
当你的日志组都写完以后,LGWR 试图写第一个log file,如果这时数据库没有完成写出记录在第一个log file 中的dirty 块时(例如第一个检查点未完成),该等待事件出现。
该等待事件通常表示你的DBWR 写出速度太慢或者IO 存在问题。
为解决该问题,你可能需要考虑增加额外的DBWR 或者增加你的日志组或日志文件大小。