時(shí)間:2015-06-28 00:00:00 來(lái)源:IT貓撲網(wǎng) 作者:網(wǎng)管聯(lián)盟 我要評(píng)論(0)
一、物理備數(shù)據(jù)庫(kù)的切換
切換必須在當(dāng)前主數(shù)據(jù)庫(kù)上發(fā)起,并且在目標(biāo)備數(shù)據(jù)庫(kù)上完成。下面的步驟描述如何執(zhí)行切換。
第 1 步檢驗(yàn)是否可能執(zhí)行切換。
在當(dāng)前主數(shù)據(jù)庫(kù)上,在主數(shù)據(jù)庫(kù)上查詢 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 值指出可能切換主數(shù)據(jù)庫(kù)到備角色。如果TO STANDBY 值沒(méi)有顯示,則檢查Data Guard 配置是否正確起作用(例如,檢查所有的LOG_ARCHIVE_DEST_n 參數(shù)值被正確指定)。如果在 SWITCHOVER_STATUS 列中的值是SESSIONS ACTIVE,你需要終止可能阻礙切換處理的活動(dòng)用戶或SQL會(huì)話。如果,在執(zhí)行這些步驟之后,SWITCHOVER_STATUS 列還是顯示SESSION ACTIVE,你能通過(guò)添加WITH SESSION SHUTDOWN 子句到步驟2 中描述的ALTER DATABASE COMMIT TO SWITCHOVER TO PHYSICAL STANDBY 語(yǔ)句來(lái)成功執(zhí)行切換。
第 2 步在主數(shù)據(jù)庫(kù)上發(fā)起切換。
要更改當(dāng)前主數(shù)據(jù)庫(kù)到物理備數(shù)據(jù)庫(kù)角色,在主數(shù)據(jù)庫(kù)上使用下面 SQL 語(yǔ)句:
SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PHYSICAL STANDBY;
在這個(gè)語(yǔ)句完成后,主數(shù)據(jù)庫(kù)轉(zhuǎn)換到備數(shù)據(jù)庫(kù)。當(dāng)前控制文件在切換前備份到當(dāng)前SQL會(huì)話跟蹤文件。這使得有可能重構(gòu)當(dāng)前控制文件,如果必要的話。
第 3 步關(guān)閉并重啟前主實(shí)例。
關(guān)閉前主實(shí)例,并重啟和安裝數(shù)據(jù)庫(kù):
SQL> SHUTDOWN IMMEDIATE;
SQL> STARTUP MOUNT;
注意:在切換過(guò)程的這個(gè)點(diǎn),兩個(gè)數(shù)據(jù)庫(kù)都配置為備數(shù)據(jù)庫(kù)。
第 4 步檢驗(yàn) V$DATABASE 視圖中的切換狀態(tài)。
在你更改主數(shù)據(jù)庫(kù)到物理備角色,以及配置中的備數(shù)據(jù)庫(kù)接收到切換通知之后,你應(yīng)該檢驗(yàn)?zāi)繕?biāo)備數(shù)據(jù)庫(kù)是否處理切換通知,通過(guò)查詢目標(biāo)備數(shù)據(jù)庫(kù)上的V$DATABASE 固定視
圖的SWITCHOVER_STATUS 列。
例如:
SQL> SELECT SWITCHOVER_STATUS FROM V$DATABASE;
SWITCHOVER_STATUS
-----------------
TO_PRIMARY
1 row selected
如果 SWITCHOVER_STATUS 列中的值是SESSION ACTIVE,你需要確定并終止可能阻礙切換處理的活動(dòng)用戶或SQL 會(huì)話。
如果,在執(zhí)行這些步驟之后,SWITCHOVER_STATUS 列還是顯示SESSION ACTIVE,你能處理到步驟5,并過(guò)添加WITH SESSION SHUTDOWN 子句到切換語(yǔ)句。
第 5 步切換目標(biāo)物理備數(shù)據(jù)庫(kù)角色到主角色。
當(dāng)備數(shù)據(jù)庫(kù)實(shí)例安裝在重做應(yīng)用模式或?qū)χ蛔x訪問(wèn)打開時(shí),你能將物理備數(shù)據(jù)庫(kù)從備角色切換到主角色。必須是這些模式之一,主數(shù)據(jù)庫(kù)的切換請(qǐng)求才能被調(diào)度。在備數(shù)據(jù)庫(kù)處于適當(dāng)?shù)哪J?,在你希望更改主角色的物理備?shù)據(jù)庫(kù)上,執(zhí)行下面的SQL 語(yǔ)句:
SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY;
第 6 步完成備數(shù)據(jù)庫(kù)到主角色的轉(zhuǎn)換。
你執(zhí)行的任務(wù)依賴于物理備數(shù)據(jù)庫(kù)是否曾經(jīng)以只讀模式打開過(guò):
l 如果物理備數(shù)據(jù)庫(kù)自從上次啟動(dòng)過(guò)后沒(méi)有以只讀模式打開過(guò),執(zhí)行SQL ALTER DATABASE OPEN 語(yǔ)句來(lái)打開新的主數(shù)據(jù)庫(kù):
SQL> ALTER DATABASE OPEN;
l 如果物理備數(shù)據(jù)庫(kù)自從上次啟動(dòng)過(guò)后曾經(jīng)以只讀模式打開,你必須關(guān)閉目標(biāo)備數(shù)據(jù)庫(kù)并重啟:
SQL> SHUTDOWN IMMEDIATE;
SQL> STARTUP;
注:
不需要關(guān)閉并重啟在切換的時(shí)候聯(lián)機(jī)的其它備數(shù)據(jù)庫(kù)(不包括在切換中的)。這些備數(shù)據(jù)庫(kù)在切換完成后將繼續(xù)正常起作用。
第 7 步如果必要,在備數(shù)據(jù)庫(kù)上重啟日志應(yīng)用服務(wù)。
對(duì)于新的物理備數(shù)據(jù)庫(kù)和 Data Guard 配置中的每個(gè)其它物理或邏輯備數(shù)據(jù)庫(kù),如果日
志應(yīng)用服務(wù)沒(méi)有預(yù)先配置在切換過(guò)程中持續(xù)打開,使用合適的命令來(lái)重啟日志應(yīng)用服務(wù)。
第 8 步開始發(fā)送重做數(shù)據(jù)到備數(shù)據(jù)庫(kù)。
在新的主數(shù)據(jù)庫(kù)上執(zhí)行下面語(yǔ)句:
SQL> ALTER SYSTEM SWITCH LOGFILE;
二、物理備數(shù)據(jù)庫(kù)的故障轉(zhuǎn)移
本小節(jié)描述如何執(zhí)行包含物理備數(shù)據(jù)庫(kù)的故障轉(zhuǎn)移。
在包含物理備數(shù)據(jù)庫(kù)的故障轉(zhuǎn)移過(guò)程中:
l 在所有情況中,在故障轉(zhuǎn)移后,原主數(shù)據(jù)庫(kù)不能再參與在 Data Guard 配置中。
l 在大多數(shù)情況中,其它邏輯或物理備數(shù)據(jù)庫(kù)不直接參與配置中剩余的故障轉(zhuǎn)移,并不必須關(guān)閉或重啟。
l 在一些情況中,可能有必要在配置新的主數(shù)據(jù)庫(kù)之后重建所有備數(shù)據(jù)庫(kù)。
這些情況在下面的故障轉(zhuǎn)移步驟中的適當(dāng)位置描述。
注:
Oracle 推薦你只使用在下面小節(jié)中描述的故障轉(zhuǎn)移步驟和命令來(lái)執(zhí)行故障轉(zhuǎn)移。不要使用ALTER DATABASE ACTIVATE STANDBY DATABASE 來(lái)執(zhí)行故障轉(zhuǎn)移,因?yàn)檫@條語(yǔ)句可能導(dǎo)致數(shù)據(jù)丟失。
#p#副標(biāo)題#e#
故障轉(zhuǎn)移步驟
本小節(jié)描述了轉(zhuǎn)換挑選的物理備數(shù)據(jù)庫(kù)到主角色必須執(zhí)行的步驟。任何也是配置中的一部分的其它物理或邏輯備數(shù)據(jù)庫(kù)將保留在配置中,并將不需要關(guān)閉或重啟。
如果目標(biāo)備數(shù)據(jù)庫(kù)操作于使用日志寫進(jìn)程(LGWR)的最大保護(hù)模式或最大可用性模式,在歸檔重做日志文件中不應(yīng)該存在中斷,你能直接進(jìn)行到步驟4。否則,從步驟1 開始以確定是否必須執(zhí)行一些手工中斷解決步驟。
第 1 步確定并解決歸檔重做日志文件中的任何中斷。
要在目標(biāo)備數(shù)據(jù)庫(kù)上確定是否在歸檔重做日志文件中存在中斷,查詢V$ARCHIVE_GAP 視圖。V$ARCHIVE_GAP 視圖包含對(duì)于每個(gè)線程已知丟失的歸檔重做日志文件的序列號(hào)。返回的數(shù)據(jù)只反映最高的中斷。
例如:
SQL> SELECT THREAD#, LOW_SEQUENCE#, HIGH_SEQUENCE# FROM
V$ARCHIVE_GAP;
THREAD# LOW_SEQUENCE# HIGH_SEQUENCE#
---------- ------------- --------------
1?? 90? 92
在這個(gè)例子中,中斷包括線程 1 的歸檔重做日志文件序號(hào)90、91、和92。如果可能,
從主數(shù)據(jù)庫(kù)拷貝所有確定的丟失的歸檔重做日志文件到目標(biāo)備數(shù)據(jù)庫(kù),并注冊(cè)它們。這必須
對(duì)于每個(gè)線程執(zhí)行。
例如:
SQL> ALTER DATABASE REGISTER PHYSICAL LOGFILE 'filespec1';
第 2 步重復(fù)步驟1 直到解決所有中斷。
在步驟 1 中執(zhí)行的查詢只顯示最高的中斷信息。在解決那個(gè)中斷后,你必須重復(fù)步驟1直到查詢返回零行。
第 3 步拷貝任何其它丟失的歸檔重做日志文件。
要確定是否還有其它丟失的歸檔重做日志文件,在目標(biāo)備數(shù)據(jù)庫(kù)上查詢V$ARCHIVED_LOG 視圖以獲得每個(gè)線程的最高序列號(hào)。
例如:
SQL> SELECT? THREAD# AS THREAD, MAX(SEQUENCE#)
2> OVER (PARTITION BY thread#) AS LAST from V$ARCHIVED_LOG;
THREAD LAST
---------- ----------
1? 100
從包含比目標(biāo)備數(shù)據(jù)庫(kù)上可用的最高序列號(hào)更高序列號(hào)的主數(shù)據(jù)庫(kù),拷貝任何可用的歸檔重做日志文件到目標(biāo)備數(shù)據(jù)庫(kù)并注冊(cè)它們。這必須對(duì)每個(gè)線程執(zhí)行。
例如:
SQL> ALTER DATABASE REGISTER PHYSICAL LOGFILE 'filespec1';
在所有可用的歸檔重做日志文件已經(jīng)注冊(cè)后,如步驟 1 中描述地查詢V$ARCHIVE_GAP 視圖,檢驗(yàn)沒(méi)有更多的中斷在步驟3 中引入。
注:
如果,當(dāng)執(zhí)行步驟1 到3 時(shí),你不能解決在歸檔重做日志文件中的中斷(例如,因?yàn)槟?/p>
沒(méi)有訪問(wèn)故障主數(shù)據(jù)庫(kù)所在的系統(tǒng)),在故障轉(zhuǎn)移過(guò)程中會(huì)發(fā)生數(shù)據(jù)丟失。
第 4 步在目標(biāo)物理備數(shù)據(jù)庫(kù)上發(fā)起故障轉(zhuǎn)移。
執(zhí)行下面語(yǔ)句以發(fā)起故障轉(zhuǎn)移:
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE FINISH FORCE;
FORCE 關(guān)鍵詞終止目標(biāo)物理備數(shù)據(jù)庫(kù)上活動(dòng)的RFS 進(jìn)程,使得故障轉(zhuǎn)移能不用等待網(wǎng)
絡(luò)連接超時(shí)而立即進(jìn)行。
注:
故障轉(zhuǎn)移添加一個(gè)重做結(jié)束的標(biāo)識(shí)到最后一個(gè)歸檔的日志文件的頭部,并發(fā)送重做到所有允許的對(duì)于主數(shù)據(jù)庫(kù)有效的目的地(使用VALID_FOR=(PRIMARY_ROLE, *_LOGFILES)或VALID_FOR=(ALL_ROLE, *_LOGFILES)屬性指定)。
在SQL 語(yǔ)句中FINISH 關(guān)鍵詞必須跟在所有其它關(guān)鍵詞后面,除了FORCE、WAIT、或NOWAIT。
第 5 步轉(zhuǎn)換物理備數(shù)據(jù)庫(kù)到主角色。
一旦 SQL ALTER DATABASE RECOVER MANAGED STANDBY DATABASE FINISH FORCE 語(yǔ)句成功完成,通過(guò)執(zhí)行下面SQL 語(yǔ)句更改物理備數(shù)據(jù)庫(kù)到主數(shù)據(jù)庫(kù):
SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY;
在執(zhí)行這條 SQL 語(yǔ)句之后,目標(biāo)備數(shù)據(jù)庫(kù)經(jīng)歷到主角色的轉(zhuǎn)換。作為結(jié)果,你不能再使用這個(gè)數(shù)據(jù)庫(kù)作為備數(shù)據(jù)庫(kù),并且任何后繼的從原主數(shù)據(jù)庫(kù)接收的重做不能被應(yīng)用。再故障轉(zhuǎn)移過(guò)程中,備重做日志文件在其它所有從原主數(shù)據(jù)庫(kù)導(dǎo)出的備數(shù)據(jù)庫(kù)上被自動(dòng)歸檔并恢復(fù)。只有當(dāng)備目的地在新的主數(shù)據(jù)庫(kù)上正確定
關(guān)鍵詞標(biāo)簽:數(shù)據(jù)庫(kù)
相關(guān)閱讀
熱門文章 Oracle中使用alter table來(lái)增加,刪除,修改列的語(yǔ)法 oracle中使用SQL語(yǔ)句修改字段類型-oracle修改SQL語(yǔ)句案例 誤刪Oracle數(shù)據(jù)庫(kù)實(shí)例的控制文件 為UNIX服務(wù)器設(shè)置Oracle全文檢索
人氣排行 oracle中使用SQL語(yǔ)句修改字段類型-oracle修改SQL語(yǔ)句案例 Oracle中使用alter table來(lái)增加,刪除,修改列的語(yǔ)法 ORACLE SQL 判斷字符串是否為數(shù)字的語(yǔ)句 ORACLE和SQL語(yǔ)法區(qū)別歸納(1) oracle grant 授權(quán)語(yǔ)句 ORACLE修改IP地址后如何能夠使用 如何加速Oracle大批量數(shù)據(jù)處理 Oracle刪除表的幾種方法