DataGuard环境的ONLINE REDO LOG(ORL)和Standby REDO LOG(SRL)的介绍

我有一些客户,对于ORL和SRL的使用不太熟悉。简单介绍一下这个REDO的具体应用。

一般Primary和Standby两方都要构建ORL和SRL,ORL和SRL的size最好一样大。SRL的group个数比ORL大一个以上。

Primary用ORL,不用SRL,Standby用SRL,不用ORL。
Primary的SRL和Standby的ORL在switchover,互换角色之后使用。

Standby端的ORL,虽然不使用,但是vSlog的Status的状态是更新的。在12.1.0.2/12.2.0.1之后,修正Bug 16091872,
带来的影响是v$log的Status显示为UNUSED,不再随着primary的ORL更新。

例如
11.2

SQL> select * from v$log;

    GROUP#    THREAD#  SEQUENCE#      BYTES  BLOCKSIZE    MEMBERS ARC
---------- ---------- ---------- ---------- ---------- ---------- ---
STATUS           FIRST_CHANGE# FIRST_TIM NEXT_CHANGE# NEXT_TIME     CON_ID
---------------- ------------- --------- ------------ --------- ----------
         1          1         58   52428800        512          1 YES
CLEARING ★★              1976963 24-DEC-18      2011322 25-DEC-18          0

         2          1         59   52428800        512          1 YES
CURRENT  ★★               2011322 25-DEC-18      1969237 24-DEC-18          0

         3          1         57   52428800        512          1 YES
CLEARING ★★               1969237 24-DEC-18      1976963 24-DEC-18          0

12.2

SQL> select * from v$log;

    GROUP#    THREAD#  SEQUENCE#      BYTES  BLOCKSIZE    MEMBERS ARC
---------- ---------- ---------- ---------- ---------- ---------- ---
STATUS           FIRST_CHANGE# FIRST_TIM NEXT_CHANGE# NEXT_TIME     CON_ID
---------------- ------------- --------- ------------ --------- ----------
         1          1          0  209715200        512          1 YES
UNUSED★★                       0                      0                    0

         2          1          0  209715200        512          1 YES
UNUSED★★                       0                      0                    0

         3          1          0  209715200        512          1 YES
UNUSED ★★                      0                      0                    0 

对于ORL,Oracle推荐使用多重化,也就是创建多个REDO Member. 因为,ORL的损坏会影响数据库的操作。
因此,通常使用多个来提高容错能力。

但是对于SRL,Oracle不推荐多重化,推荐只使用一个SRL Member。因为即使SRL坏了,可以用archivelog
来继续应用REDO,不需要使用SRL来预防数据的破损。而且SRL的多重化会使 I/O增多。所以,Oracle推荐
SRL只用一个member。

还有一点:
ORL是循环使用的
Group1→Group 2→Group 3→Group1→Group 2→Group 3→。。。

而SRL不是循环使用
没有具体的使用顺序,可能只是用前面一个,或是前面两个SRL,只要可用就行。可能后面很多Group从来没用过,这事没有问题的。
例如:
Group4→Group 5→Group4→Group 5→。。。

ORL和SRL的重建方法:

先确认ORL和SRL的group数和size

SQL> select group#,sum(bytes/1024/1024)"Size in MB" from v$log group by group#;

    GROUP# Size in MB
---------- ----------
         1         50
         2         50
         3         50

SQL> select group#,sum(bytes/1024/1024)"Size in MB" from v$standby_log group by group#;

    GROUP# Size in MB
---------- ----------
         6         50
         4         50
         5         50
         7         50

把standby_file_management改成MANUAL:

SQL> show parameter standby_file_management

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
standby_file_management              string      AUTO

SQL> alter system set standby_file_management=manual;

System altered.

SQL> show parameter standby_file_management

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
standby_file_management              string      MANUAL

在Primary端修改或重建ORL:

确认LOG的状态

SQL> select group#,status from v$log;

    GROUP# STATUS
---------- ----------------
         1 INACTIVE
         2 INACTIVE
         3 CURRENT

如果是INACTIVE,可以直接删除,重做。

SQL> alter database drop logfile group 1;

Database altered.

SQL> alter database add logfile group 1 ('<path>/redo01.log') size 100M;

Database altered.

SQL> alter database drop logfile group 2;

Database altered.

SQL> alter database add logfile group 2 ('<path>/redo02.log') size 100M;

Database altered.

如果是Current,做log切换,变成INACTIVE之后重做

SQL> alter system switch logfile;

System altered.

SQL> alter system checkpoint;

System altered.

SQL> select group#,status from v$log;

    GROUP# STATUS
---------- ----------------
         1 INACTIVE
         2 CURRENT
         3 INACTIVE

SQL> alter database drop logfile group 3;

Database altered.

SQL> alter database add logfile group 3  ('<path>/redo03.log') size 100M;

Database altered.

在Primary 端修改或重建SRL。

SQL> select group#,status from v$standby_log;

GROUP# STATUS
---------- ----------
4 UNASSIGNED
5 UNASSIGNED
6 UNASSIGNED
7 UNASSIGNED

SQL> alter database drop standby logfile group 4;

Database altered.

SQL> alter database add standby logfile group 4  ('<path>/stbredo04.log') size 100M;

Database altered.

Group 5-7 做同样的操作。

在Standby端修改或重做ORL:

SQL> select group#,status from v$log;

GROUP# STATUS
---------- ----------------
1 CURRENT
3 CLEARING
2 CLEARING

停止MRP的使用:

SQL> alter database recover managed standby database cancel;

Database altered.

对于状态是非CURRNT的REDO,Group2-3 ,做下面的操作。

SQL> alter database clear logfile group 2;

Database altered.

SQL> alter database drop logfile group 2;

Database altered.

SQL> alter database add logfile group 2 ('<path>/redo02.log')  size 100M;

Database altered.

执行log switch,把current状态的ORL变成非Current之后,做上面的操作。

在Standby端,修改或重建SRL:

SQL> select group#,status from v$standby_log;

GROUP# STATUS
---------- ----------
4 ACTIVE
5 UNASSIGNED
6 UNASSIGNED
7 UNASSIGNED

对于状态是Active的,先Clear,然后删除,重建。

SQL> alter database clear logfile group 4;
Database altered.

SQL> alter database drop logfile group 4;

Database altered.

SQL> alter database add logfile group 4 ('<path>/stbredo04.log')  size 100M;

Database altered.

对于状态是UNASSIGNED,可以直接删除,然受重建。
修改完成后,在Primary,Standby两方把standby_file_management改回Auto。

SQL> alter system set standby_file_management=auto;

System altered.

在Standby端可以打开MRP

SQL> alter database recover managed standby database disconnect from session using current logfile;

Database altered.

如果是RAC,可以使用下面的语句。

SQL>Alter database add standby logfile Thread <thread no> group <group no> size <>M;

SQL>Alter database add logfile Thread <thread no> group <group no> size <>M;

简单介绍这些。
谢谢

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值