oracle12c启动apply,Oracle 12c 新特性 -- DG 默认使用 Real-Time Apply

https://www.cndba.cn/dave/article/213

1    理论说明

在Oracle 12c 之前的Data Guard 环境中,默认情况下备库apply redo 是从备库的归档文件中读数据的。在Oracle 12c 中,默认的策略改成直接从standby redo log file中读取,采用real-time apply的方式进行。

这样在failover的时候,可以缩短切换时间,不需要在等redo apply的时间。

当启动备库后,备库会启动RFS 进程用来接收主库传过来的redo log,并写入到standby redo log file。

如果我们启动了MRP进程,那么在数据写入到standby redo log 之后,MRP 进程就会立即apply 数据。 当然,如果我们不想使用改特性,也可以手工指定使用归档文件。

语法如下:

SQL> alter database recover managed standby database using archived logfile;

2    实验

2.1     查看主库当前状态

SQL> show pdbs

CON_ID CON_NAME              OPEN MODE  RESTRICTED

---------- ------------------------------ ---------- ----------

2 PDB$SEED              READ ONLY  NO

3 PCNDBA              READ WRITE NO

SQL> show con_name

CON_NAME

------------------------------

CDB$ROOT

SQL>

SQL> SELECT PROTECTION_MODE, PROTECTION_LEVEL, DATABASE_ROLE ROLE, SWITCHOVER_STATUS FROM V$DATABASE;

PROTECTION_MODE      PROTECTION_LEVEL      ROLE           SWITCHOVER_STATUS

-------------------- -------------------- ---------------- --------------------

MAXIMUM AVAILABILITY MAXIMUM AVAILABILITY PRIMARY       TO STANDBY

SQL> SELECT PROCESS, STATUS, THREAD#, SEQUENCE#,BLOCK#, BLOCKS FROM V$MANAGED_STANDBY;

PROCESS   STATUS      THREAD#  SEQUENCE#     BLOCK#     BLOCKS

--------- ------------ ---------- ---------- ---------- ----------

ARCH      CLOSING        1      35      36865        943

ARCH      CONNECTED        0       0          0      0

ARCH      CLOSING        1      36          1        763

ARCH      CLOSING        1      37          1        394

LGWR      WRITING        1      38       9387      1

SQL> col dest_name for a20

SQL> col error for a10

SQL> select DEST_NAME,STATUS,PROCESS,ERROR,TRANSMIT_MODE from v$archive_dest WHERE TARGET='STANDBY';

DEST_NAME         STATUS    PROCESS      ERROR      TRANSMIT_MOD

-------------------- --------- ---------- ---------- ------------

LOG_ARCHIVE_DEST_2   VALID     LGWR             PARALLELSYNC

Elapsed: 00:00:00.01

2.2     查看备库当前状态https://www.cndba.cn/dave/article/213

SQL> show pdbs

CON_ID CON_NAME              OPEN MODE  RESTRICTED

---------- ------------------------------ ---------- ----------

2 PDB$SEED              READ ONLY  NO

3 PCNDBA              READ ONLY  NO

SQL> show con_name

CON_NAME

------------------------------

CDB$ROOT

SQL>

SQL> SELECT PROTECTION_MODE, PROTECTION_LEVEL, DATABASE_ROLE ROLE, SWITCHOVER_STATUS FROM V$DATABASE;

PROTECTION_MODE      PROTECTION_LEVEL      ROLE           SWITCHOVER_STATUS

-------------------- -------------------- ---------------- --------------------

MAXIMUM AVAILABILITY MAXIMUM AVAILABILITY PHYSICAL STANDBY NOT ALLOWED

SELECT PROCESS, STATUS, THREAD#, SEQUENCE#,BLOCK#, BLOCKS FROM V$MANAGED_STANDBY;

SQL> select process, status, thread#, sequence#,block#, blocks from v$managed_standby;

PROCESS   STATUS      THREAD#  SEQUENCE#     BLOCK#     BLOCKS

--------- ------------ ---------- ---------- ---------- ----------

ARCH      CLOSING        1      37          1        394

ARCH      CONNECTED        0       0          0      0

ARCH      CONNECTED        0       0          0      0

ARCH      CLOSING        1      31      43008       1696

RFS      IDLE            0       0          0      0

RFS      IDLE            1      38       9384      1

RFS      IDLE            0       0          0      0

RFS      IDLE            0       0          0      0

8 rows selected.

SQL> select group#,type,member from v$logfile order by 1;

GROUP# TYPE    MEMBER

---------- ------- ------------------------------------------------------------------------------------------

1 ONLINE  /home/ora12c/app/oracle/oradata/CNDBA_S/onlinelog/o1_mf_1_9y493jfy_.log

1 ONLINE  /home/ora12c/app/oracle/fast_recovery_area/CNDBA_S/onlinelog/o1_mf_1_9y493jpr_.log

2 ONLINE  /home/ora12c/app/oracle/oradata/CNDBA_S/onlinelog/o1_mf_2_9y493qfg_.log

2 ONLINE  /home/ora12c/app/oracle/fast_recovery_area/CNDBA_S/onlinelog/o1_mf_2_9y493qlk_.log

3 ONLINE  /home/ora12c/app/oracle/oradata/CNDBA_S/onlinelog/o1_mf_3_9y493xf1_.log

3 ONLINE  /home/ora12c/app/oracle/fast_recovery_area/CNDBA_S/onlinelog/o1_mf_3_9y493xj9_.log

4 STANDBY /home/ora12c/app/oracle/oradata/CNDBA_S/onlinelog/o1_mf_4_9y4942x0_.log

4 STANDBY /home/ora12c/app/oracle/fast_recovery_area/CNDBA_S/onlinelog/o1_mf_4_9y49431g_.log

5 STANDBY /home/ora12c/app/oracle/fast_recovery_area/CNDBA_S/onlinelog/o1_mf_5_9y4948hs_.log

5 STANDBY /home/ora12c/app/oracle/oradata/CNDBA_S/onlinelog/o1_mf_5_9y4948cv_.log

6 STANDBY /home/ora12c/app/oracle/oradata/CNDBA_S/onlinelog/o1_mf_6_9y494fr7_.log

6 STANDBY /home/ora12c/app/oracle/fast_recovery_area/CNDBA_S/onlinelog/o1_mf_6_9y494fw3_.log

7 STANDBY /home/ora12c/app/oracle/oradata/CNDBA_S/onlinelog/o1_mf_7_9y494mc4_.log

7 STANDBY /home/ora12c/app/oracle/fast_recovery_area/CNDBA_S/onlinelog/o1_mf_7_9y494mgj_.log

14 rows selected.

注意,我的测试环境是使用ADG来搭建,这里自动给我们生成了standby redo log,并不是我们手工添加的。

2.3     启动备库MRP 进程

https://www.cndba.cn/dave/article/213https://www.cndba.cn/dave/article/213

SQL> alter database recover managed standby database disconnect;

Database altered.

SQL>  select process, status, thread#, sequence#,block#, blocks from v$managed_standby;

PROCESS   STATUS      THREAD#  SEQUENCE#     BLOCK#     BLOCKS

--------- ------------ ---------- ---------- ---------- ----------

ARCH      CLOSING        1      40          1     68

ARCH      CLOSING        1      41          1     22

ARCH      CONNECTED        0       0          0      0

ARCH      CLOSING        1      38      12288        819

RFS      IDLE            0       0          0      0

RFS      IDLE            0       0          0      0

RFS      IDLE            0       0          0      0

RFS      IDLE            1      42       1411      1

MRP0      APPLYING_LOG        1      33      50772      78287

9 rows selected.

SQL> select open_mode from v$database;

OPEN_MODE

--------------------

READ ONLY WITH APPLY

--主库创建表:

SQL>  create table dave as select * from all_users;

Table created.

Elapsed: 00:00:00.59

--备库立马就能查询到:

SQL> select count(1) from dave;

COUNT(1)

----------

35

2.5     强制使用12c 之前的策略

SQL> alter database recover managed standby database cancel;

Database altered.

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

Database altered.

SQL> select process, status, thread#, sequence#,block#, blocks from v$managed_standby;

PROCESS   STATUS      THREAD#  SEQUENCE#     BLOCK#     BLOCKS

--------- ------------ ---------- ---------- ---------- ----------

ARCH      CLOSING        1      40          1     68

ARCH      CLOSING        1      41          1     22

ARCH      CONNECTED        0       0          0      0

ARCH      CLOSING        1      38      12288        819

RFS      IDLE            0       0          0      0

RFS      IDLE            0       0          0      0

RFS      IDLE            0       0          0      0

RFS      IDLE            1      42       7717      1

MRP0      WAIT_FOR_LOG        1      42          0      0

9 rows selected.

注意这里MRP 进程的状态,和默认是不一样的。

区别如下:

WAIT_FOR_LOG: Process is waiting for the archived redo log to be completed

APPLYING_LOG : Process is actively applying the archived redo log to the standby databasehttps://www.cndba.cn/dave/article/213https://www.cndba.cn/dave/article/213

https://www.cndba.cn/dave/article/213

https://www.cndba.cn/dave/article/213

版权声明:本文为博主原创文章,未经博主允许不得转载。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值