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