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
版權聲明:本文為博主原創文章,未經博主允許不得轉載。
總結
以上是生活随笔為你收集整理的oracle12c启动apply,Oracle 12c 新特性 -- DG 默认使用 Real-Time Apply的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 事业单位和公务员的面试方式有什么区别?
- 下一篇: 阿里云部分题