redo log的大小可以影响 DBWR 和 checkpoint ;
larger redo log files provide better performance. Undersized logfiles increase checkpoint activity and reduce performance。
适当大小的log file可以提供更好的性能;redo logfile 设置过小会增加checkpoint 和降低性能;A rough guide is to switch log files at most once every 20 minutes.(推荐日志切换的时间不要超多20分钟).
当我们在Oracle中更改redo log大小 or 增加redo log组时,由于ORACLE没有提供类似RESIZE的参数来重新调整REDO LOG FILE的大小,故只能先把这个文件删除了,然后再重建。又因ORACLE要求最少有两组日志文件在用,所以不能直接删除,必须要创建中间过渡的REDO LOG日志组。
在删除redo日志组时,Inactive状态对应的redo group才能进行alter database drop logfile group操作。
使用select * from v$log;查看redo日志状态:
SYS@test_LY> select * from gv$log;
INST_ID GROUP# THREAD# SEQUENCE# BYTES BLOCKSIZE MEMBERS ARC STATUS FIRST_CHANGE# FIRST_TIM NEXT_CHANGE# NEXT_TIME CON_ID
---------- ---------- ---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- --------- ------------ --------- ----------
1 1 1 1009535 209715200 512 1 NO CURRENT 1.4620E+10 17-JUN-21 1.8447E+19 0
1 2 1 1009534 209715200 512 1 YES INACTIVE 1.4620E+10 17-JUN-21 1.4620E+10 17-JUN-21 0
1 3 2 1203015 209715200 512 1 YES INACTIVE 1.4620E+10 17-JUN-21 1.4620E+10 17-JUN-21 0
1 4 2 1203016 209715200 512 1 NO ACTIVE 1.4620E+10 17-JUN-21 1.8447E+19 0
解释下status 四个值的含义:
Unused -- 表示还没被使用过
Current -- 表示正在使用
Active -- Log isactive but is not the current log. It is needed for crash recovery
Inactive -- Log is nolonger needed for instance recovery
为了删除redo日志对应的group, 此时group对应的redo日志状态必须为inactive。为了尽快完成,会手动执行如下命令:
alter system switch logfile;
那么这条alter system switch logfile到底做了啥操作?
alter system switch logfile 会触发 checkpoint的产生,保证数据库的数据一致性前推;
但 log switch 的完成不依赖于 checkpoint 的完成,只要执行了alter system switch logfile;命令,就会切换当前redo日志的状态;
注意:
log switch 发生时,将被override 的redo log 仍然处于active 状态,就会发生 “Checkpoint not complete” 的错误。
举例:
Thread 1 cannot allocate new log, sequence 21
Checkpoint not complete
Current log# 4 seq# 20 mem# 0: /u01/app/oracle/oradata/TEST/redo04.log
出现这个错误,就表明redo日志的大小设置过小,需要对redo日志进行调大或者增加redo log组。
文章结束。
以下为个人公众号,欢迎扫码关注: