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

如果在线日志文件设置过小,会导致日志切换非常频繁。可以通过以下步骤进行在线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.

日志切换没有发生错误,每组日志都能正常使用和切换。顺利结束!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值