Oracle redo切换频繁

Oracle数据库有联机重做日志,这个日志是记录对数据库所做的修改,比如插入,删除,更新数据等,对这些操作都会记录在联机重做日志里。一般数据库至少要有2个联机重做日志组。当一个联机重做日志组被写满的时候,就会发生日志切换,这时联机重做日志组2成为当前使用的日志,当联机重做日志组2写满的时候,又会发生日志切换,去写联机重做日志组1,就这样反复进行。
如果数据库处于非归档模式,联机日志在切换时就会丢弃. 而在归档模式下,当发生日志切换的时候,被切换的日志会进行归档。比如,当前在使用联机重做日志1,当1写满的时候,发生日志切换,开始写联机重做日志 2,这时联机重做日志1的内容会被拷贝到另外一个指定的目录下。这个目录叫做归档目录,拷贝的文件叫归档重做日志。
数据库使用归档方式运行时才可以进行灾难性恢复。
归档日志模式和非归档日志模式的区别
非归档模式只能做冷备份,并且恢复时只能做完全备份.最近一次完全备份到系统出错期间的数据不能恢复.
归档模式可以做热备份,并且可以做增量备份,可以做部分恢复.
用ARCHIVE LOG LIST 可以查看期模式状态时归档模式还是非归档模式.
SQL>ARCHIVE LOG LIST;

方法一:使用nologing模式

/*+append*/ 

方法二:生成awr报告,Redo size(bytes):每秒值换算成实际值,发现redo Log没有写满的时候就发生切换了导致。参考https://www.modb.pro/db/49823发现是LOG_BUFFER太大导致。调整LOG_BUFFER的大小为32M 参考https://blog.csdn.net/weixin_43700866/article/details/114699354 

SQL> show parameters log_buffer;
SQL> ALTER SYSTEM SET log_buffer = 33554432 scope=spfile;
SQL> show parameters log_buffer;

方法二调研好后没有实际测试,正准备测试来不及了,就增加了大量的redo Log组解决了,做个笔记,等以后有机会做参考,如果有人测试可以可以回复告知一下。

参考链接:

Oracle中的nologging_邵冬梁的专栏-CSDN博客_nologging在oracle中的作用

ORACLE log_buffer_DBA大董的博客-CSDN博客

一个LOG_BUFFER设置过大导致的日志切换问题 - 墨天轮

猜你喜欢

转载自blog.csdn.net/u014644574/article/details/120417656