调整在线日志文件
· 所有的日志条最后都由LGWR写到在线日志文件,在线日志文件的损坏可能导致丢失已提交的事务,因此通常都需要给每个日志组安排两个或更多个成员,调整在线日志文件一方面要优化运行性能,另一方面要优化恢复性能;
· 有两种测量在线日志文件的性能的方法:系统事件,OS工具:
?nbsp; Select Event, Total_Waits, Average_Wait
From V$system_Event
Where Event In ('log file switch completion', 'log file parallel write');
log file switch completion LGWR等待日志切换的完成
log file parallel write LGWR等待日志条从日志缓存写到在线日志文件操作的完成
这两个等待事件的数量和平均时间很高时,表明在线日志文件存在性能瓶颈;
?nbsp; 一些OS工具可以查看到磁盘IO的活动情况,如UNIX下的SAR和IOSTAT命令,WINDOWS下的任务管理器;(可用V$LOGFILE查到在线日志文件的对应位置);
· 改进在线日志文件相关的性能:
?nbsp; 减少磁盘竞争:将在线日志文件与其它文件(数据文件,控制文件,归档日志文件)放在不同的磁盘上
?nbsp; 最大化日志产能:将在线日志文件移到更快的设备,如裸设备上,尽量避免使用RAID设备存放在线日志文件;
七章 调整日志机制 5.调整归档
调整归档
· 归档进程用来将在线日志文件的内容复制到归档目录,归档日志文件用于媒体失败或用户错误时执行恢复;归档机制是备份与恢复的重要组成部分,也是IO性能问题的一个重要来源;
· 测量归档的性能(归档目录空间不足,归档进程太慢)
?nbsp; 当归档目录所在磁盘没空间时,整个系统会被挂住,系统写一条出错信息进报警日志,描述类似于:ORA-16038 log x sequence# y cannot be archived; 这时管理员可以手工临时改变归档目录(Alter system archive log all to …)或者移出部分归档以增加归档目录所在磁盘的可用空间;
?nbsp; 在归档模式下,日志切换成功前,LGWR不仅可能要等待即将要被重写的日志文件上的检查点的完成,还可能要等待针对这个文件的归档的完成,后面这个等待事件可以通过下面的语句查询得到:
Select n.Name, Se.Total_Waits, Se.Average_Wait
From V$system_Event Se, V$event_Name n
Where n.Name = 'log file switch (archiving needed)'
And Se.Event(+) = n.Name;
· 改进归档的性能
?nbsp; 当确定归档是一个性能瓶颈时,可以考虑用下面的方法来处理(加多日志组,加大日志文件,选择多个归档目标,启动更多的归档进程);
?nbsp; 加多日志组可以减少LGWR在日志切换时对归档的等待,在一般的OLTP系统中,5~20个日志组是比较合适的;
?nbsp; 加大日志文件也能达到减少日志切换时LGWR对归档的等待这个目标,加大日志文件会使日志切换的间隔变得更长,这种类型的检查点间隔也变得更长,前面曾提到,Oracle推荐检查点间隔在20~30分钟为宜,为解决这个矛盾,可以通过适当设置FAST_START_MTTR_TARGET这个参数来达到这个目标;
?nbsp; 为了减少因归档目标磁盘已满而使系统被挂起的可能性,以及使用归档日志的多个冗余备份,可以通过下面的初始参数指定多个归档目标和归档最小成功个数;
LOG_ARCHIVE_DEST 首选的归档目标
LOG_ARCHIVE_DUPLEX_DEST 第二个归档目标
LOG_ARCHIVE_DEST_n 指定最多可到十个的冗余归档目标(企业版才有,标准版中没有,和上面的参数互相排斥)
LOG_ARCHIVE_DEST_STATE_n 同上面的参数相对应,可选值有enable与defer
LOG_ARCHIVE_MIN_SUCCEED_DEST 在多个归档目标的配置下用于指定归档最小成功的个数,默认值是1,取值范围是:1-2(LOG_ARCHIVE_DUPLEX_DEST生效时)或1-5(LOG_ARCHIVE_DEST_n生效时);
上面的n的取值在1~10之间;
相关的视图有V$ARCHIVE_DEST, V$ARCHIVE_DEST_STATUS, V$ARCHIVED_LOG;
?nbsp; 如果出现LGWR等待归档时,LGWR可以启动更多的ARCn进程来处理归档任务;
也可以通过更改初始参数LOG_ARCHIVE_MAX_PROCESSES(默认值为1,取值范围2~10)来指定实例启动时就开始运行的归档进程的个数(通常这个值应该等于归档目标的个数);
可以通过V$ARCHIVE_PROCESSES查看到归档进程的状态以及它正在处理的日志序号;
还可以考虑将归档放在更快的磁盘上以加快归档的处理速度,归档不能放在裸设备上;
阅读(300) | 评论(0) | 转发(0) |