观察频繁的日志文件切换,尽管增加了重做日志的大小

Posted

技术标签:

【中文标题】观察频繁的日志文件切换,尽管增加了重做日志的大小【英文标题】:Observing frequent log file switches depsite increasing the redo log size 【发布时间】:2015-03-09 09:12:10 【问题描述】:

我们的重做日志大小为 256m,然后增加到 512,最终达到 1024M,目前有 8 个日志。尽管我们每 1 分钟观察一次日志切换发生并且它正在侵蚀我们的性能,

来自 AWR 的快照

Load Profile

Per Second  Per Transaction Per Exec    Per Call
DB Time(s): 1.0 0.1 0.00    0.01
DB CPU(s):  0.6 0.1 0.00    0.01
Redo size:  34,893.0    4,609.0      

 Instance Activity Stats - Thread Activity
 Statistics identified by '(derived)' come from sources other than SYSSTAT
 Statistic  Total   per Hour
 log switches (derived) 82  59.88

关于如何减少日志文件切换次数的任何建议,我已阅读理想情况下应该在 15-20 分钟内切换 1 次。

【问题讨论】:

【参考方案1】:

每秒 34893 字节重做 = 每小时 125614800 字节,即大约 120 MB,远不及 1 个重做日志组的大小。

基于此和重做日志的大小,我想说一些东西会强制定期切换日志。内置参数archive_lag_target 在指定的秒数过后强制进行日志切换,这是我要检查的第一件事。除此之外,它可能是其他任何登录到数据库并手动强制日志切换的东西,例如 cron 作业。 (每 60 分钟 60 次日志切换,这很可疑)

【讨论】:

我同意,似乎首先要寻找的是在某处运行脚本的计划作业,其中正在发出流氓“ALTER SYSTEM SWITCH LOGFILE”或“ALTER SYSTEM ARCHIVE LOG CURRENT”。 SQL> 显示参数 archive_lag_target NAME TYPE VALUE ---------------------------------- -------------------------------------------------- - ------------- archive_lag_target 整数 0 谢谢,实际上是正确的,有一个 crontab 条目可以每分钟切换一个日志文件。 export ORACLE_HOME=/u01/oraclesw/product/11.2.0/db export PATH=$ORACLE_HOME/bin:$PATH export ORACLE_SID=**** sqlplus / as sysdba 谢谢,实际上是正确的,有一个 crontab 条目可以每分钟切换一个日志文件。

以上是关于观察频繁的日志文件切换,尽管增加了重做日志的大小的主要内容,如果未能解决你的问题,请参考以下文章

mysql 参数调优(2)之设置重做日志文件的大小 innodb_log_file_size

Oracle 11g 管理重做日志文件

oracle12C 重做日志

oracle归档日志文件管理

Oracle重做日志组状态及切换解析

oracle重做日志文件硬盘坏掉解决方法