redo文件三

时间:2022-12-06 14:28:54

switch logfile是一种昂贵的操作,在进行日志切换的时候,是不允许生成新的redo信息

在前台进程生成redo日志信息的时候,此时redo buffer已经分配了空间,并且在当前的redo日志文件组中也必定能写入这些数据





在进行日志切换的时候,步骤如下:

1、LGWR根据control file里的信息找到当前可用的日志文件组

2、LGWR将redo log buffer中的信息写入到当前的redo日志文件组中,并且产生一个SCN作为当前日志组的高位SCN

3、初始化可用的日志文件组,将老的日志文件组的状态设置为active,将可用的日志文件组的状态设置为current

4、将active的日志文件组进行归档,如果归档进程都在忙碌的话,那么在不超过归档进程最大数的情况下,产生新的归档进程来进行归档

5、发生一次checkpoint,将脏数据写入磁盘,当脏数据都写入磁盘之后,旧日志文件组的状态修改为inactive





事物的提交和回滚

一万条事物的提交和一条数据的提交速度基本上是相同的

而一万条事物的回滚和一条数据的回滚速度是相差很大的,一万条事物的回滚会持续很长的时间





如何减少switch logfile的次数

1、减少redo日志的产生量

2、加大redo日志文件组的大小





如何减少redo日志的产生量

使用nologging的操作,例如bulk操作、direct path write,在归档模式下,可以大大的减少日志的产生量





使用shutdown abort操作的时候

1、多使用几次alter system checkpoint

2、杀掉所有的LOCAL=YES和LOCAL=NO的进程

ps -ef|grep "LOCAL=NO" |awk '{print "kill -9 " $2}'|sh

3、使用shutdown abort(SMON进程结束了事务层面的回退操作,关闭了cache层面的恢复,也就是SMON已经开始进行临时段的的回收工作,此时就可以关闭数据库)





关于redo日志优化的建议

1、redo日志文件的大小

2、redo日志文件组的数量

3、redo日志文件的镜像数量

4、redo日志存储的性能

5、redo log buffer的大小