Oracle数据库重做日志及归档日志的工作原理

LGWR进程将redo log buffer中的重做数据写入到redo log中,此时的redo log分组,每当一个redo log group写满时,或者发出switch logfile指令时都会触发日志组的切换,当发生日志组切换时,ARC进程会将当前的重做日志数据写入归档日志;
LGWR进程是将内存中的数据写入到重做日志文件,这是内存读磁盘写。然而ARC进程是将重做日志文件写入到归档文件,是磁盘读磁盘写。
显然LGWR进程的读写效率或者读写速度比ARC进程要快,而频繁发生DML操作的数据库中,可能会发生归档慢,而重做日志写入速度快的情况,这就会导致数据库被HANG住,此时数据库什么也不做就是等待ARC进程将当前重做日志数据写入到归档文件。这时候就要考虑启动更多的归档进程了,通过修改参数log_archive_max_processes来实现。该参数是动态参数,直接修改即可。
1)查看当前该参数值(命令结果中的VALUE显示的是:当前最大归档进程数)

SQL> show parameter log_archive_max_processes;

NAME				     TYPE	 VALUE
------------------------------------ ----------- ------------------------------
log_archive_max_processes	     integer	 4

可以知道当前最大归档进程数为4
修改归档最大进程为5

SQL> alter system set log_archive_max_processes=5;

System altered.

SQL> show parameter log_archive_max_processes;

NAME				     TYPE	 VALUE
------------------------------------ ----------- ------------------------------
log_archive_max_processes	     integer	 5

通过ps命令进行查看下

ps -ef|grep arc

我当时执行的时候没有见到5个arc进程,是因为我没有开启归档模式。如何开启归档模式见我的博客 https://blog.csdn.net/huangbaokang/article/details/90294334

内容参考 http://www.cnblogs.com/kevingrace/p/7698919.html

你可能感兴趣的:(oracle,数据库)