在线修改Redo log的大小及增加新的日志组

    xiaoxiao2026-04-05  10

    如果在线日志文件设置过小,会导致日志切换非常频繁。可以通过以下步骤进行在线Redo日志修改。 相关的知识普及: 1、Redo log File存放了Redo log信息,最少有两组日志文件,供Oracle循环使用。 2、Redo log File每组最少一个,建议两个,防止损坏而导致的数据丢失。 3、每组中的文件大小必须一致,因为他们是同时修改的,不同组的文件大小可以不一致。 4、每组中的文件个数必须一致。 由于ORACLE并没有提供类似RESIZE的参数来重新调整REDO LOG FILE的大小,因此只能先把这个文件删除了,然后再重建。又由于ORACLE要求最少有两组日志文件在用,所以不能直接删除,必须要创建中间过渡的REDO LOG日志组。因此,如果只是修改REDO LOG FILE的大小,建议的操作步骤应该如下: 1) 先创建两组新的日志组5、6 2) SWITCH LOGFILE到新创建的日志组5、6 3) 删除旧的日志组1、2、3 4) 重建旧的日志组1、2、3 5) SWITCH LOGFILE到日志组1、2、3 6) 删除过渡的日志组5、6 但本次操作,既要修改原有日志组的大小,又要增加新的日志组,所以省去了中间过渡日志组的操作,操作过程如下: 1) 查看当前日志组的状态,GROUP编号,日志文件所在的位置。 SQL> SELECT GROUP#, MEMBERS, BYTES / 1024 / 1024 BYTE_MB, STATUS FROM V$LOG; GROUP# MEMBERS BYTE_MB STATUS ---------- ---------- ---------- ---------------- 1 1 500 CURRENT 2 1 500 INACTIVE 3 1 500 INACTIVE SQL> col member for a50 SQL> SELECT GROUP#, MEMBER FROM V$LOGFILE; GROUP# MEMBER ---------- -------------------------------------------------- 1 /SDS/u01/app/oracle/oradata/ora11g/redo1.log 2 /SDS/u01/app/oracle/oradata/ora11g/redo2.log 3 /SDS/u01/app/oracle/oradata/ora11g/redo3.log 2) 增加新的日志组 SQL> alter database add logfile group 4 '/SDS/u01/app/oracle/oradata/ora11g/redo.4.log' size 500M; SQL> alter database add logfile group 5 '/SDS/u01/app/oracle/oradata/ora11g/redo.5.log' size 500M; SQL> alter database add logfile group 6 '/SDS/u01/app/oracle/oradata/ora11g/redo.6.log' size 500M; 查看新增日志组的状态 SQL> SELECT GROUP#, MEMBERS, BYTES / 1024 / 1024 BYTE_MB, STATUS FROM V$LOG; GROUP# MEMBERS BYTE_MB STATUS ---------- ---------- ---------- ---------------- 1 1 500 CURRENT 2 1 500 INACTIVE 3 1 500 INACTIVE 4 1 500 UNUSED 5 1 500 UNUSED 6 1 500 UNUSED 6 rows selected. 可以看到,新增的三组日志GROUP4、5、6,状态为UNUSED。 3) 切换当前的redo log SQL> ALTER SYSTEM SWITCH LOGFILE; 4) 查看切换后的状态 SQL> SELECT GROUP#, MEMBERS, BYTES / 1024 / 1024 BYTE_MB, STATUS FROM V$LOG; GROUP# MEMBERS BYTE_MB STATUS ---------- ---------- ---------- ---------------- 1 1 500 ACTIVE 2 1 500 INACTIVE 3 1 500 INACTIVE 4 1 500 ACTIVE 5 1 500 ACTIVE 6 1 500 CURRENT 6 rows selected. 可以看见,现在切换到新增的第6组日志上使用。 5) 改变检查点 SQL> ALTER SYSTEM CHECKPOINT; System altered. 6) 查看切换后的状态 SQL> SELECT GROUP#, MEMBERS, BYTES / 1024 / 1024 BYTE_MB, STATUS FROM V$LOG; GROUP# MEMBERS BYTE_MB STATUS ---------- ---------- ---------- ---------------- 1 1 500 INACTIVE 2 1 500 INACTIVE 3 1 500 INACTIVE 4 1 500 INACTIVE 5 1 500 INACTIVE 6 1 500 CURRENT 6 rows selected. 可以看见,GROUP1、2、3三组日志状态变成了INACTIVE了,这时候可以删除它们。 7) 删除状态为inactive的日志 SQL> ALTER DATABASE DROP LOGFILE GROUP 1; Database altered. SQL> ALTER DATABASE DROP LOGFILE GROUP 2; Database altered. SQL> ALTER DATABASE DROP LOGFILE GROUP 3; Database altered. 8) 重建新的GROUP 1、2、3三组日志 SQL> alter database add logfile group 4 '/SDS/u01/app/oracle/oradata/ora11g/redo.4.log' size 1G; SQL> alter database add logfile group 5 '/SDS/u01/app/oracle/oradata/ora11g/redo.5.log' size 1G; SQL> alter database add logfile group 6 '/SDS/u01/app/oracle/oradata/ora11g/redo.6.log' size 1G; 这时候创建成功了! 9) 切换测试 SQL> ALTER SYSTEM SWITCH LOGFILE; System altered. 10) 检查切换后的状态 SQL> SELECT GROUP#, MEMBERS, BYTES / 1024 / 1024 BYTE_MB, STATUS FROM V$LOG; GROUP# MEMBERS BYTE_MB STATUS ---------- ---------- ---------- ---------------- 1 1 1000 INACTIVE 2 1 1000 INACTIVE 3 1 1000 INACTIVE 4 1 500 INACTIVE 5 1 500 INACTIVE 6 1 500 CURRENT 6 rows selected. 11) 多切换几次,让他每组日志都使用一遍。 SQL> ALTER SYSTEM SWITCH LOGFILE; System altered. 日志切换没有发生错误,每组日志都能正常使用和切换。顺利结束! 相关资源:七夕情人节表白HTML源码(两款)
    最新回复(0)