Theme: Oracle更改redo log大小 or 增加redo log组
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分钟).
查看redolog
SYS@approd2> select * from v$log;
GROUP# THREAD# SEQUENCE# BYTES BLOCKSIZE MEMBERS ARC STATUS FIRST_CHANGE# FIRST_TIM NEXT_CHANGE# NEXT_TIME CON_ID
1 1 1009493 209715200 512 1 YES ACTIVE 1.4620E+10 17-JUN-21 1.4620E+10 17-JUN-21 0 2 1 1009494 209715200 512 1 NO CURRENT 1.4620E+10 17-JUN-21 1.8447E+19 0 3 2 1202977 209715200 512 1 NO CURRENT 1.4620E+10 17-JUN-21 1.8447E+19 0 4 2 1202976 209715200 512 1 YES ACTIVE 1.4620E+10 17-JUN-21 1.4620E+10 17-JUN-21 0
复制
如上,有四组group的redolog,group 1/2/3/4每组1个成员状态都正常大小200m。
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
查看日志文件
SYS@approd2> select * from v$logfile;
GROUP# STATUS TYPE MEMBER IS_ CON_ID
复制
1 ONLINE +APPRODDATA/APPROD/ONLINELOG/group_1.261.1002301401 NO 0 2 ONLINE +APPRODDATA/APPROD/ONLINELOG/group_2.262.1002301401 NO 0 3 ONLINE +APPRODDATA/APPROD/ONLINELOG/group_3.269.1002302059 NO 0 4 ONLINE +APPRODDATA/APPROD/ONLINELOG/group_4.270.1002302059 NO 0
复制
由于ORACLE没有提供类似RESIZE的参数来重新调整REDO LOG FILE的大小,故只能先把这个文件删除了,然后再重建。
又由于ORACLE要求最少有两组日志文件在用,所以不能直接删除,必须要创建中间过渡的REDO LOG日志组。
1、创建4个新的日志组
ALTER DATABASE ADD LOGFILE GROUP 5 (’+APPRODDATA’) SIZE 2G;
ALTER DATABASE ADD LOGFILE GROUP 6 (’+APPRODDATA’ ) SIZE 2G;
ALTER DATABASE ADD LOGFILE GROUP 7 (’+APPRODDATA’,) SIZE 2G;
ALTER DATABASE ADD LOGFILE GROUP 8 (’+APPRODDATA’) SIZE 2G;
2、切换当前日志到新的日志组
alter system switch logfile;
alter system switch logfile;
alter system switch logfile;
alter system archive log current;
3、删除旧的日志组
通过select * from v$log;
查看group 1/2/3/4 上的redo状态为inactive后,方可执行如下命令。
alter database drop logfile group 1;
alter database drop logfile group 2;
alter database drop logfile group 3;
alter database drop logfile group 3;
查看日志组的状态看一下哪个是当前组,哪个是inactive状态的,删除掉inactive的那个组;如果状态为current和active 在删除的时候会报错。
4、操作系统下删除原日志组1、2、3中的文件
注意:每一步删除drop操作,都需手工删除操作系统中的实体文件。
5、重建日志组1、2、3、4
ALTER DATABASE ADD LOGFILE GROUP 1 (’+APPRODDATA’,’+APPRODDATA’) SIZE 2G;
ALTER DATABASE ADD LOGFILE GROUP 2 (’+APPRODDATA’,’+APPRODDATA’) SIZE 2G;
ALTER DATABASE ADD LOGFILE GROUP 3 (’+APPRODDATA’,’+APPRODDATA’) SIZE 2G;
ALTER DATABASE ADD LOGFILE GROUP 4 (’+APPRODDATA’,’+APPRODDATA’) SIZE 2G;
6、切换日志组
多执行几次如下命令,同时通过select * from gv$log来观察5/6/7/8下的redo日志状态是不是为inactive;
查看日志组的状态看一下哪个是当前组,哪个是inactive状态的,删除掉inactive的那个组。如果状态为current和active 在删除的时候会报错。
alter system switch logfile;
7、删除中间过渡用的日志组5、6、7、8
alter database drop logfile group 5;
alter database drop logfile group 6;
alter database drop logfile group 7;
alter database drop logfile group 8;
到操作系统下删除原日志组4、5、6中的文件
9、备份当前的最新的控制文件
因日志组发生变化,建议备份一次controlfile文件。
SQL> alter database backup controlfile to trace resetlogs;