本文描述如何執(zhí)行包含邏輯備數(shù)據庫的切換和故障轉移。
一、??? 邏輯備數(shù)據庫的切換
當你執(zhí)行切換,在主數(shù)據庫和邏輯備數(shù)據庫之間更改角色,總是在主數(shù)據庫上發(fā)起切換并在邏輯備數(shù)據庫上完成。這些步驟必須以所描述的順序執(zhí)行,否則切換將不會成功。
注:如果主數(shù)據庫是RAC 數(shù)據庫,確保除了一個以外關閉所有實例,并且在發(fā)起切換之前禁止相應的線程。類似地,如果邏輯備數(shù)據庫是RAC 數(shù)據庫,確保除了一個以外的所有實例關閉SQL 應用,并且在發(fā)起切換之前禁止相應的線程。一旦切換操作成功完成,你能重新允許這些線程并啟動實例。雖然實例是關閉的,但是當它們重啟時,角色更改將不會自動傳遞到這些實例。
第 1 步在主數(shù)據庫上檢驗是否有可能執(zhí)行切換
在當前的主數(shù)據庫上,查詢在主數(shù)據庫上的 V$DATABASE 固定視圖的SWITCHOVER_STATUS 列,以檢驗是否可能執(zhí)行切換。
例如:
SQL> SELECT SWITCHOVER_STATUS FROM V$DATABASE;
SWITCHOVER_STATUS
-----------------
TO STANDBY
1 row selected。
在 SWITCHOVER_STATUS 列中的TO STANDBY 或SESSIONS ACTIVE 的值指出可能切換主數(shù)據庫到邏輯備角色。如果這些值之一沒有顯示,則檢驗Data Guard 配置是否正確起作用(例如,檢驗所有LOG_ARCHIVE_DEST_n 參數(shù)值是否正確指定)。
第 2 步為切換準備當前主數(shù)據庫
要為邏輯備數(shù)據庫角色準備當前主數(shù)據庫,在主數(shù)據庫上執(zhí)行下面的 SQL 語句:
SQL> ALTER DATABASE PREPARE TO SWITCHOVER TO LOGICAL STANDBY;
這條語句通知當前主數(shù)據庫,它將馬上切換到邏輯備角色并開始從新的主數(shù)據庫接收重做數(shù)據。你在主數(shù)據庫上執(zhí)行這個步驟,為接收LogMiner Multiversioned Data Dictionary記錄在當前邏輯備數(shù)據庫的重做流中做準備,如步驟3 中描述。如果這個操作成功,則 V$DATABASE.SWITCHOVER_STATUS 列中顯示PREPARING SWITCHOVER 值。
第 3 步為切換準備目標邏輯備數(shù)據庫
使用下面命令在作為切換目標的邏輯備數(shù)據庫上建立 LogMiner Multiversioned Data Dictionary:
SQL> ALTER DATABASE PREPARE TO SWITCHOVER TO PRIMARY;
這條語句也在邏輯備數(shù)據庫上開始重做傳輸服務 ,開始傳送其重做數(shù)據到當前主數(shù)據庫和Data Guard 配置中的其它備數(shù)據庫。從這個邏輯備數(shù)據庫接收重做數(shù)據的站點接收重做數(shù)據但不應用。
依賴于完成的工作量和數(shù)據庫的大小,切換需要花費一些時間來完成。
當 LogMiner Multiversioned Data Dictionary 正在重做流中記錄時,在邏輯備數(shù)據庫上的V$DATABASE.SWITCHOVER_STATUS 最初顯示PREPARING DICTIONARY。一旦這個成功完成,SWITCHOVER_STATUS 列顯示PREPARING SWITCHOVER。
第 4 步確保當前主數(shù)據庫為將來的主數(shù)據庫的重做流做好準備
在你能完成主數(shù)據庫到邏輯備角色的轉換之前,通過查詢主數(shù)據庫上的V$DATABASE固定視圖的SWITCHOVER_STATUS 列,檢驗LogMiner Multiversioned Data Dictionary 是否被主數(shù)據庫接收到。沒有收到LogMiner Multiversioned Data Dictionary,切換無法進行,因為當前的主數(shù)據庫將不能解釋從未來的主數(shù)據庫發(fā)送的重做記錄。SWITCHOVER_STATUS列顯示了切換的過程。
當查詢返回 TO LOGICAL STANDBY 值,你能進行到步驟5。
例如:
SQL> SELECT SWITCHOVER_STATUS FROM V$DATABASE;
SWITCHOVER_STATUS
-----------------
TO LOGICAL STANDBY
1 row selected
注:
你能通過以下面的順序執(zhí)行下面的語句來取消切換操作:
1.在主數(shù)據庫上取消切換:
SQL> ALTER DATABASE PREPARE TO SWITCHOVER CANCEL;
2.在邏輯備數(shù)據庫上取消切換:
SQL> ALTER DATABASE PREPARE TO SWITCHOVER CANCEL;
第 5 步切換主數(shù)據庫到邏輯備數(shù)據庫角色
要完成主數(shù)據庫到邏輯備數(shù)據庫的角色轉換,執(zhí)行下面 SQL 語句:
SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO LOGICAL STANDBY;
這條語句等待主數(shù)據庫上的所有當前事務結束,并阻止任何新的用戶開始新事務,并在切換將要提交的地方建立一個時間點。
執(zhí)行這條語句也將阻止用戶對由邏輯備數(shù)據庫維護的數(shù)據進行更改。要確保更快地執(zhí)行,確保主數(shù)據庫在執(zhí)行切換語句之前處于安靜的狀態(tài),沒有更新活動(例如,要求所有用戶暫時從主數(shù)據庫退出登錄)。你能查詢V$TRANSACTIONS 視圖以獲得任何當前正在處理的事務的狀態(tài),這些事務可能延遲這條語句的執(zhí)行。
主數(shù)據庫現(xiàn)在可以經歷角色轉換以運行到備數(shù)據庫角色。
當主數(shù)據庫經歷角色轉換到邏輯備數(shù)據庫角色時,你不需要關閉和重啟數(shù)據庫。
第 6 步確保所有可用的重做應用到將要成為新的主數(shù)據庫的目標邏輯備數(shù)據庫上
在你完成主數(shù)據庫到邏輯備角色的角色轉換,以及配置中的備數(shù)據庫接收到切換通知之后,你應該檢驗切換通知是否被目標備數(shù)據庫處理,通過查詢目標備數(shù)據庫上的V$DATABASE 固定視圖的SWITCHOVER_STATUS 列。一旦所有可用的重做記錄應用到邏輯備數(shù)據庫,SQL 應用自動關閉以準備預料中的角色轉換。
SWITCHOVER_STATUS 值更新以顯示切換中的過程。當狀態(tài)為TO PRIMARY,你能進行步驟7。
例如:
SQL> SELECT SWITCHOVER_STATUS FROM V$DATABASE;
SWITCHOVER_STATUS
-----------------
TO PRIMARY
1 row selected
第 7 步切換目標邏輯備數(shù)據庫到主數(shù)據庫角色
在你希望切換到主角色的邏輯備數(shù)據庫上,使用下面的 SQL 語句來切換邏輯備數(shù)據庫到主角色:
SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY;
沒有必要關閉并重啟在 Data Guard 配置中的任何邏輯備數(shù)據庫。其它現(xiàn)有的邏輯備數(shù)據庫將在切換完成后繼續(xù)正常起作用。然而,所有現(xiàn)有的物理備數(shù)據庫在切換后無法參與到Data Guard 配置中了。
第 8 步在新的邏輯備數(shù)據庫上開始SQL 應用
在新的邏輯備數(shù)據庫,開始 SQL 應用:
SQL> ALTER DATABASE START LOGICAL STANDBY APPLY;
#p#副標題#e#
二、??? 邏輯備數(shù)據庫的故障轉移
本小節(jié)描述如何執(zhí)行包含邏輯備數(shù)據庫的故障轉移。包含邏輯備數(shù)據庫的故障轉移角色轉換需要在故障的主數(shù)據庫和所有旁觀邏輯備數(shù)據庫上執(zhí)行正確的操作。如果在故障的主數(shù)據庫上沒有允許Flashback 數(shù)據庫,你必須從當前主數(shù)據庫獲得的備份重建數(shù)據庫。
依賴于配置的保護模式以及你選擇的重做傳輸服務,有可能自動恢復所有或部分主數(shù)據庫更改。
如果目標備數(shù)據庫操作于無數(shù)據丟失模式,在歸檔重做日志文件中將不存在中斷,你能直接進行步驟2。否則,從步驟1 開始以確定是否必須執(zhí)行手工中斷解決步驟。
第 1 步拷貝和注冊任何丟失的重做日志文件到候選成為新主數(shù)據庫的目標邏輯備數(shù)據庫
依賴于配置中斷組件條件,你可能訪問主數(shù)據庫上的歸檔重做日志文件。如果可用,做如下操作:
1.確定在邏輯備數(shù)據庫上是否丟失歸檔重做日志文件。
2.從主數(shù)據庫拷貝丟失的日志文件到邏輯備數(shù)據庫。
3.注冊拷貝的日志文件。
你能通過執(zhí)行下面的語句來注冊歸檔重做日志文件到邏輯備數(shù)據庫。例如:
SQL> ALTER DATABASE REGISTER LOGICAL LOGFILE
2> '/disk1/oracle/dbs/log-%r_%s_%t.arc';
Database altered.
第 2 步確保所有可用的歸檔重做日志文件已應用
在你要轉換到主角色的邏輯備數(shù)據庫上,通過查詢V$LOGSTDBY_PROGRESS 視圖檢驗所有可用的歸檔重做日志文件已應用。例如:
SQL> SELECT APPLIED_SCN, LATEST_SCN FROM V$LOGSTDBY_PROGRESS;
APPLIED_SCN LATEST_SCN
----------- ----------
190725 190725
當 APPLIED_SCN 和LASTEST_SCN 值相等時,所有可得到的數(shù)據已應用并且邏輯備數(shù)據庫現(xiàn)在包含與主數(shù)據庫可能一樣多的數(shù)據庫。
注:
如果在目標邏輯備數(shù)據上 SQL 應用沒有活動,在目標備數(shù)據庫上執(zhí)行下面語句以開始SQL 應用:
SQL> ALTER DATABASE START LOGICAL STANDBY APPLY;
Database altered.
第 3 步允許遠程目的地
如果你前面沒有配置基于角色的目的地,對于新的主數(shù)據庫確定相應于遠程邏輯備目的地的初始化參數(shù),并手工允許對于每個這些目的地的重做數(shù)據的歸檔。
例如,要允許對于由LOG_ARCHIVE_DEST_2 參數(shù)定義的遠程目的地的歸檔,執(zhí)行下面語句:
SQL> ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_2=ENABLE SCOPE=BOTH;要確保這個更改在如果新的主數(shù)據庫后來重啟后還能保持,更新適當?shù)奈谋境跏蓟瘏?shù)文件或服務器參數(shù)文件??偟膩碚f,當數(shù)據庫操作于主角色,你必須允許歸檔到遠程目的地,并且當數(shù)據庫操作于備角色,你必須禁止歸檔到遠程目的地。
第 4 步激活新的主數(shù)據庫
在目標邏輯備數(shù)據庫(你轉換到新的主角色的)上執(zhí)行下面的語句:
SQL> ALTER DATABASE ACTIVATE LOGICAL STANDBY DATABASE FINISH APPLY;
關鍵詞標簽:數(shù)據庫
相關閱讀
熱門文章
Oracle中使用alter table來增加,刪除,修改列的語法
oracle中使用SQL語句修改字段類型-oracle修改SQL語句案例
誤刪Oracle數(shù)據庫實例的控制文件
為UNIX服務器設置Oracle全文檢索
人氣排行 oracle中使用SQL語句修改字段類型-oracle修改SQL語句案例 Oracle中使用alter table來增加,刪除,修改列的語法 ORACLE SQL 判斷字符串是否為數(shù)字的語句 ORACLE和SQL語法區(qū)別歸納(1) oracle grant 授權語句 ORACLE修改IP地址后如何能夠使用 如何加速Oracle大批量數(shù)據處理 Oracle刪除表的幾種方法