IT貓撲網(wǎng):您身邊最放心的安全下載站! 最新更新|軟件分類|軟件專題|手機(jī)版|論壇轉(zhuǎn)貼|軟件發(fā)布

您當(dāng)前所在位置: 首頁數(shù)據(jù)庫Oracle → 邏輯備數(shù)據(jù)庫的切換和故障轉(zhuǎn)移

邏輯備數(shù)據(jù)庫的切換和故障轉(zhuǎn)移

時(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)閱讀

文章評(píng)論
發(fā)表評(píng)論

熱門文章 Oracle中使用alter table來增加,刪除,修改列的語法 Oracle中使用alter table來增加,刪除,修改列的語法 oracle中使用SQL語句修改字段類型-oracle修改SQL語句案例 oracle中使用SQL語句修改字段類型-oracle修改SQL語句案例 誤刪Oracle數(shù)據(jù)庫實(shí)例的控制文件 誤刪Oracle數(shù)據(jù)庫實(shí)例的控制文件 為UNIX服務(wù)器設(shè)置Oracle全文檢索 為UNIX服務(wù)器設(shè)置Oracle全文檢索

相關(guān)下載

    人氣排行 oracle中使用SQL語句修改字段類型-oracle修改SQL語句案例 Oracle中使用alter table來增加,刪除,修改列的語法 ORACLE SQL 判斷字符串是否為數(shù)字的語句 ORACLE和SQL語法區(qū)別歸納(1) oracle grant 授權(quán)語句 ORACLE修改IP地址后如何能夠使用 如何加速Oracle大批量數(shù)據(jù)處理 Oracle刪除表的幾種方法