服务热线:13616026886

技术文档 欢迎使用技术文档,我们为你提供从新手到专业开发者的所有资源,你也可以通过它日益精进

位置:首页 > 技术文档 > 数据库技术 > Oracle技术 > Oracle开发 > 查看文档

全面讲解归档可用的缓冲大小和数量调整

【赛迪网-it技术报道】调整归档时第一件需要确保的事是lgwr没有等待arcn完成归档一个日志文件。第二个需要考虑的是arcn活动时的影响对前台进程最小化。而这两个方面通常是刚好相对的,因此最好的目标就是调整arcn使其足够快,并在可以证明其影响了前台进程时降低其速度。主要包括以下原则,另外还包括归档可用的缓冲大小和数量的调整,以及归档进程的数量。

缓冲的大小

arcn每次从日志文件读取 _log_archive_buffer_size(以块为单位),并写入归档目的地。因此如果_log_archive_buffer_size设置为os下最大的可能值,那么arcn的性能将最大化并且其在i/o子系统上的负载将最小化。如果该参数在os上为unlimited,那么设置为最大的物理i/o大小的几倍,效果将最好。

缓冲的数量

如果_log_archive_buffers可用并且可以从日志文件异步读取,那么arcn将使用aio_read()系统调用并行读取日志到多个缓冲。如果多个日志成员可用,将使用并行异步读每个日志文件成员以扩展磁盘i/o负载。如果使用了软件/硬件镜像进行日志文件传播,类似的负载平衡将会自动由软件/硬件使用。因此,可以考虑使用并行归档读,使用与每个日志文件相同多的磁盘,镜像或者传播,然后配置_log_archive_buffers最多为3。

需要注意的是:不能通过设置多个_arch_io_slaves来模麓尤罩疚募?稍辈⑿幸觳蕉痢?rcn通常自己执行该任何并仅使用i/o服务器来写操作。

为了在可能时进行异步归档写,至少需要设置两个_log_archive_buffers,以并行从日志文件读取。但是如果系统达到了cpu负载颈瓶并且归档期间前台进程受到了影响,并且没有归档聚集的威胁,应该考虑减少缓冲数量,分散cpu负载。

进程数量

如果产生的重做持续过高或者需要归档到多个位置,通常需要多个arcn进程,从oracle8i开始,可以通过设置log_archive_max_processes参数。也可以通过定期调度alter system archive log all,如果没有归档聚集,该命令的影响是很小的,但是如果有,该命令会迅速产生额外的arcn帮助赶上聚集。

为了防止lgwr赶上归档聚集运行多个arcn是最大的保险,但是为了使该策略有效,恰当的配置在线日志和归档终点的磁盘是很重要的。

因为也可以使用手工归档,oracle在归档期间将在任何在线日志文件上保留一个排斥的wl(等待日志)队列锁,而忽略log_archive_max_processes的设置。这些队列上的操作由archive control latch保护。归档活动可以从statspack等报告中的该larche上的gets列得到。

影响归档进程性能的两个威胁

在rac环境下,在实例没有启动时,其线程是可用的。如果一个关闭的,启用的线程的当前scn落后于force scn,那么在那个线程上将发生强制的日志切换并且活动实例的arcn为未活动的实例归档日志文件。这使得arcn进程转移到那个实例中工作而不是执行其自己的工作。然而如果arcn被其自己的lgwr唤醒归档其自己实例的日志,那么arcn将会刮起这个归档。这应该通过保持空闲实例启动或者禁用其重做线程完全避免。

归档在前项滚动期间将被完全禁用。因此应该确保干净的关闭,保持重做产生最小化。

扫描关注微信公众号