《Oracle编程艺术》学习笔记(11)-Oracle进程 (二)

2014-11-24 09:39:21 · 作者: · 浏览: 1
言,如果一个事务长时间运行,就会生成大量重做日志,采用更大的日志缓冲区对这种事务最有好处。

7. ARCn:归档进程(Archive Process)
ARCn 进程的任务是:当LGWR 将在线重做日志文件填满时,就将其复制到另一个位置。
在线重做日志用于在出现电源故障(实例终止)时“修正”数据文件,而归档重做日志用于在出现硬盘故障或者误操作删除数据时配合数据文件备份“修正”数据文件。

如果在服务器的警告日志文件(alert_.log)中看到如下的警告消息:
Thread 1 cannot allocate new log, sequence 1466
Checkpoint not complete
Current log# 3 seq# 1465 mem# 0: /home/ora10g/oradata/ora10g/redo03.log
警告消息中也可能指出Archival required而不是Checkpoint not complete,但是结果几乎一样。
如果数据库试图重用一个在线重做日志文件,但是出现以下情况,就会输出这样一条警告消息。
·DBWn还没有完成重做日志所保护数据的检查点(checkpointing)
·ARCn还没有把重做日志文件复制到归档目标
对最终用户来说,这个时间点上数据库实际上停止了。DBWn 或ARCn将得到最大的优先级以将redo块刷新输出的磁盘。

解决这个问题的办法:
·对DBWR调优,或者使用多个DBWR进程。看看系统产生的I/O,查看是否有一个磁盘(或一组磁盘)“太热”,相应地需要将数据散布开。这个建议对ARCn也适用。
·增加更多在线重做日志文件或者创建更大的重做日志文件。这给DBWn留出了足够的活动空间来建立检查点,也给ARCn留出足够的时间来归档日志。
·让检查点发生得更频繁、更连续。可以修改诸如FAST_START_MTTR_TARGET 、LOG_CHECKPOINT_INTERVAL和LOG_CHECKPOINT_TIMEOUT等参数设置以强制DBWn更频繁地刷新输出脏块。缺点是会导致缓冲区缓存不能充分发挥作用