在线修改REDO LOG的大小及增加新的日志组

        我管理的数据库最近的alert日志中有发现如下错误:

Thread 1 cannot allocate new log, sequence 36685
Checkpoint not complete

        并且切换非常频繁。查看了REDO日志组之后,发现这个数据库原本是3组日志,每组大小仅100M。在出现Checkpoint not complete时数据库会短暂的hung,因此打算将原来的日志调整为1024MB大小,并增加3组新的日志。

        相关的知识普及:

        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编号,日志文件所在的位置。

sys@BFMDB> SELECT group#, members, bytes/1024/1024 byte_mb, status FROM v$log;

    GROUP#    MEMBERS    BYTE_MB STATUS
---------- ---------- ---------- ------------------------------------------------
         1          2        100 CURRENT
         2          2        100 INACTIVE
         3          2        100 INACTIVE

sys@BFMDB> SELECT group#,member FROM v$logfile;

    GROUP# MEMBER
---------- --------------------
         3 /dev/rlv_ora_redo13
         3 /dev/rlv_ora_redo14
         2 /dev/rlv_ora_redo22
         2 /dev/rlv_ora_redo21
         1 /dev/rlv_ora_redo11
         1 /dev/rlv_ora_redo12

6 rows selected.

        2) 增加新的日志组

       2.1 查看新增日志组的裸设备情况,大小,等基本信息

nm_ora@/dev$ lsvg -l vg_ora_sys4
vg_ora_sys4:
LV NAME             TYPE       LPs     PPs     PVs  LV STATE      MOUNT POINT
lv_ora_redo30       raw        18      18      3    closed/syncd  N/A
lv_ora_redo31       raw        18      18      3    closed/syncd  N/A
lv_ora_redo32       raw        18      18      3    closed/syncd  N/A
lv_ora_redo33       raw        18      18      3    closed/syncd  N/A
lv_ora_redo34       raw        18      18      3    closed/syncd  N/A
lv_ora_redo35       raw        18      18      3    closed/syncd  N/A
nm_ora@/dev$ lsvg vg_ora_sys4
VOLUME GROUP:       vg_ora_sys4              VG IDENTIFIER:  00c52b5b00004c000000011e219c275f
VG STATE:           active                   PP SIZE:        128 megabyte(s)
VG PERMISSION:      read/write               TOTAL PPs:      2397 (306816 megabytes)
MAX LVs:            256                      FREE PPs:       2289 (292992 megabytes)
LVs:                6                        USED PPs:       108 (13824 megabytes)
OPEN LVs:           0                        QUORUM:         2 (Enabled)
TOTAL PVs:          3                        VG DESCRIPTORS: 3
STALE PVs:          0                        STALE PPs:      0
ACTIVE PVs:         3                        AUTO ON:        no
MAX PPs per VG:     32512                                    
MAX PPs per PV:     1016                     MAX PVs:        32
LTG size (Dynamic): 1024 kilobyte(s)         AUTO SYNC:      no
HOT SPARE:          no                       BB POLICY:      relocatable

        由上,每一个LV的大小为18PPS,每一个PPS大小为128MB,因此大小为128*18=2304MB,满足要求的1024大小的要求。

       2.2 增加新的日志组
sys@BFMDB> ALTER DATABASE ADD LOGFILE GROUP 4 ('/dev/rlv_ora_redo30','/dev/rlv_ora_redo31') SIZE 1024M;

Database altered.

sys@BFMDB> ALTER DATABASE ADD LOGFILE GROUP 5 ('/dev/rlv_ora_redo32','/dev/rlv_ora_redo33') SIZE 1024M;

Database altered.

sys@BFMDB> ALTER DATABASE ADD LOGFILE GROUP 6 ('/dev/rlv_ora_redo34','/dev/rlv_ora_redo35') SIZE 1024M;

Database altered.

        2.3 查看新增日志组的状态

sys@BFMDB> SELECT group#, members, bytes/1024/1024 byte_mb, status FROM v$log;

    GROUP#    MEMBERS    BYTE_MB STATUS
---------- ---------- ---------- ------------------------------------------------
         1          2        100 CURRENT
         2          2        100 INACTIVE
         3          2        100 INACTIVE
         4          2       1024 UNUSED
         5          2       1024 UNUSED
         6          2       1024 UNUSED

6 rows selected.

        可以看到,新增的三组日志GROUP4、5、6,状态为UNUSED。

        3) 切换当前的redo log

sys@BFMDB> ALTER SYSTEM SWITCH LOGFILE;

System altered.
  

        4) 查看切换后的状态

sys@BFMDB> SELECT group#, members, bytes/1024/1024 byte_mb, status FROM v$log;

    GROUP#    MEMBERS    BYTE_MB STATUS
---------- ---------- ---------- ------------------------------------------------
         1          2        100 ACTIVE
         2          2        100 INACTIVE
         3          2        100 INACTIVE
         4          2       1024 CURRENT
         5          2       1024 UNUSED
         6          2       1024 UNUSED

6 rows selected.

        可以看见,现在切换到新增的第4组日志上使用。

        5) 改变检查点

sys@BFMDB> ALTER SYSTEM CHECKPOINT;

System altered.

         6) 查看切换后的状态

sys@BFMDB> SELECT group#, members, bytes/1024/1024 byte_mb, status FROM v$log;

    GROUP#    MEMBERS    BYTE_MB STATUS
---------- ---------- ---------- ------------------------------------------------
         1          2        100 INACTIVE
         2          2        100 INACTIVE
         3          2        100 INACTIVE
         4          2       1024 CURRENT
         5          2       1024 UNUSED
         6          2       1024 UNUSED

6 rows selected.

        可以看见,GROUP1、2、3三组日志状态变成了INACTIVE了,这时候可以删除它们。

        7) 删除状态为inactive的日志

sys@BFMDB> ALTER DATABASE DROP LOGFILE GROUP 1;

Database altered.

sys@BFMDB> ALTER DATABASE DROP LOGFILE GROUP 2;

Database altered.

sys@BFMDB> ALTER DATABASE DROP LOGFILE GROUP 3;

Database altered.

        8) 重建新的GROUP 1、2、3三组日志

        8.1 检查旧的日志组的LV大小是否符合要求

nm_ora@/dev$ lsvg -l vg_ora_sys
vg_ora_sys:
LV NAME             TYPE       LPs     PPs     PVs  LV STATE      MOUNT POINT
lv_ora_sys          raw        128     128     1    open/syncd    N/A
lv_ora_redo11       raw        64      64      1    open/syncd    N/A
lv_ora_redo12       raw        64      64      1    open/syncd    N/A
lv_ora_redo13       raw        64      64      1    open/syncd    N/A
lv_ora_redo14       raw        64      64      1    open/syncd    N/A
lv_ora_redo15       raw        64      64      1    closed/syncd  N/A
lv_ora_ctl1         raw        32      32      1    open/syncd    N/A
lv_ora_ctl2         raw        32      32      1    open/syncd    N/A
lv_ora_ctl3         raw        32      32      1    open/syncd    N/A
lv_ora_spf          raw        1       1       1    closed/syncd  N/A
lv_ora_temp         raw        640     640     1    open/syncd    N/A
lv_ora_undo1        raw        640     640     1    open/syncd    N/A
lv_ora_undo2        raw        640     640     1    open/syncd    N/A
lv_ora_redo21       raw        8       8       1    open/syncd    N/A
lv_ora_redo22       raw        8       8       1    open/syncd    N/A
lv_ora_redo23       raw        8       8       1    closed/syncd  N/A
nm_ora@/dev$ lsvg vg_ora_sys
VOLUME GROUP:       vg_ora_sys               VG IDENTIFIER:  00c528eb00004c000000010b0d653929
VG STATE:           active                   PP SIZE:        16 megabyte(s)
VG PERMISSION:      read/write               TOTAL PPs:      6399 (102384 megabytes)
MAX LVs:            512                      FREE PPs:       3910 (62560 megabytes)
LVs:                16                       USED PPs:       2489 (39824 megabytes)
OPEN LVs:           13                       QUORUM:         2 (Enabled)
TOTAL PVs:          1                        VG DESCRIPTORS: 2
STALE PVs:          0                        STALE PPs:      0
ACTIVE PVs:         1                        AUTO ON:        no
MAX PPs per VG:     128016                                   
MAX PPs per PV:     7112                     MAX PVs:        18
LTG size (Dynamic): 1024 kilobyte(s)         AUTO SYNC:      no
HOT SPARE:          no                       BB POLICY:      relocatable

  --其中lv_ora_redo11、lv_ora_redo12、lv_ora_redo13、lv_ora_redo14的大小为64*16=1024MB,正好满足要求。而lv_ora_redo21、lv_ora_redo22大小只有8*16=128MB,不满足1024的要求,因此这两个LV将被废弃。
  --启用了/dev/rlv_ora_redo15和/dev/rlv2gaioxdat010来替换GROUP 2中原有的LV

        8.2 重建

sys@BFMDB> ALTER DATABASE ADD LOGFILE GROUP 1 ('/dev/rlv_ora_redo11','/dev/rlv_ora_redo12') SIZE 1024M;
ALTER DATABASE ADD LOGFILE GROUP 1 ('/dev/rlv_ora_redo11','/dev/rlv_ora_redo12') SIZE 1024M
*
ERROR at line 1:
ORA-00301: error in adding log file '/dev/rlv_ora_redo11' - file cannot be created
ORA-27042: not enough space on raw partition to fullfill request
IBM AIX RISC System/6000 Error: 6: No such device or address
Additional information: 1
Additional information: 1
Additional information: -1


sys@BFMDB
sys@BFMDB> ALTER DATABASE ADD LOGFILE GROUP 2 ('/dev/rlv_ora_redo15','/dev/rlv2gaioxdat010') SIZE 1024M;
ALTER DATABASE ADD LOGFILE GROUP 2 ('/dev/rlv_ora_redo15','/dev/rlv2gaioxdat010') SIZE 1024M
*
ERROR at line 1:
ORA-00301: error in adding log file '/dev/rlv_ora_redo15' - file cannot be created
ORA-27042: not enough space on raw partition to fullfill request
IBM AIX RISC System/6000 Error: 6: No such device or address
Additional information: 1
Additional information: 1
Additional information: -1


sys@BFMDB> ALTER DATABASE ADD LOGFILE GROUP 3 ('/dev/rlv_ora_redo13','/dev/rlv_ora_redo14') SIZE 1024M;
ALTER DATABASE ADD LOGFILE GROUP 3 ('/dev/rlv_ora_redo13','/dev/rlv_ora_redo14') SIZE 1024M
*
ERROR at line 1:
ORA-00301: error in adding log file '/dev/rlv_ora_redo13' - file cannot be created
ORA-27042: not enough space on raw partition to fullfill request
IBM AIX RISC System/6000 Error: 6: No such device or address
Additional information: 1
Additional information: 1
Additional information: -1

        0.0 重建的时候出现了错误,根据错误信息no enough space,猜测可能是由于LV大小刚好1024M,导致没有空间写文件头,于是我尝试将他们缩小到1000MB。

sys@BFMDB> ALTER DATABASE ADD LOGFILE GROUP 1 ('/dev/rlv_ora_redo11','/dev/rlv_ora_redo12') SIZE 1000M;

Database altered.

sys@BFMDB> ALTER DATABASE ADD LOGFILE GROUP 2 ('/dev/rlv_ora_redo15','/dev/rlv2gaioxdat010') SIZE 1000M;

Database altered.

sys@BFMDB> ALTER DATABASE ADD LOGFILE GROUP 3 ('/dev/rlv_ora_redo13','/dev/rlv_ora_redo14') SIZE 1000M;

Database altered.

        这时候创建成功了!

        9) 切换测试

sys@BFMDB> ALTER SYSTEM SWITCH LOGFILE;

System altered.

        10) 检查切换后的状态

sys@BFMDB> SELECT group#, members, bytes/1024/1024 byte_mb, status FROM v$log;

    GROUP#    MEMBERS    BYTE_MB STATUS
---------- ---------- ---------- ------------------------------------------------
         1          2       1000 CURRENT
         2          2       1000 UNUSED
         3          2       1000 UNUSED
         4          2       1024 ACTIVE
         5          2       1024 UNUSED
         6          2       1024 UNUSED

6 rows selected.

        11) 多切换几次,让他每组日志都使用一遍。

sys@BFMDB> ALTER SYSTEM SWITCH LOGFILE;

System altered.

sys@BFMDB> SELECT group#, members, bytes/1024/1024 byte_mb, status FROM v$log;

    GROUP#    MEMBERS    BYTE_MB STATUS
---------- ---------- ---------- ------------------------------------------------
         1          2       1000 ACTIVE
         2          2       1000 CURRENT
         3          2       1000 UNUSED
         4          2       1024 ACTIVE
         5          2       1024 UNUSED
         6          2       1024 UNUSED

6 rows selected.
sys@BFMDB> ALTER SYSTEM SWITCH LOGFILE;

System altered.

sys@BFMDB> ALTER SYSTEM SWITCH LOGFILE;

System altered.

sys@BFMDB> ALTER SYSTEM SWITCH LOGFILE;

System altered.

sys@BFMDB> ALTER SYSTEM SWITCH LOGFILE;

System altered.

sys@BFMDB> ALTER SYSTEM SWITCH LOGFILE;

System altered.

sys@BFMDB> SELECT group#, members, bytes/1024/1024 byte_mb, status FROM v$log;

    GROUP#    MEMBERS    BYTE_MB STATUS
---------- ---------- ---------- ------------------------------------------------
         1          2       1000 CURRENT
         2          2       1000 INACTIVE
         3          2       1000 INACTIVE
         4          2       1024 INACTIVE
         5          2       1024 INACTIVE
         6          2       1024 INACTIVE

6 rows selected.

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

        整个过程用了12分钟。

 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/10356975/viewspace-739994/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/10356975/viewspace-739994/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值