Decode360's Blog

          業(yè)精于勤而荒于嬉 QQ:150355677 MSN:decode360@hotmail.com

            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 ::  :: 管理 ::
            397 隨筆 :: 33 文章 :: 29 評論 :: 0 Trackbacks
          本文作者: junsansi???? 轉(zhuǎn)載網(wǎng)址: http://www.5ienet.com/index.shtml
          ?
          ?
          第四部分附章(1)RMAN備份來創(chuàng)建? 2008.01.22

          ??? 如果你看過三思之前的幾個筆記系列,那么對于rman 想必已經(jīng)非常熟悉,操作這個必然也不成問題,如果你還沒有看過,建議你先回去看看,然后再回來操作必然也沒有問題,如果你一定不準(zhǔn)備看,沒關(guān)系,只要你嚴(yán)格按照實(shí)踐部分的步驟操作,我相信你一定也可以創(chuàng)建成功,操作應(yīng)該也沒有問題,不過如果這樣你也覺著沒有問題,那么我要告訴你,可能就這是最大的問題:不知道做過什么,不知道該做什么,不知道為什么要做,一旦需求稍變,你甚至什么都不敢做。
          ?
          ??? 你什么都不用說,我知道,你還有問題,下面,我們先來看你下意識的第一個問題,為什么要用rman 創(chuàng)建物理standby?Oracle 告訴我們,有三點(diǎn):
          ?
          ??? ● RMAN 創(chuàng)建standby 是通過primary 的備份,因此不會對primary 有任何的影響
          ??? ● RMAN 自動重命名OMF 的文件及路徑結(jié)構(gòu)。
          ??? ● RMAN 修復(fù)歸檔日志文件并執(zhí)行恢復(fù)以盡可能保證standby 與primary 數(shù)據(jù)一致相同。
          ?
          ??? 當(dāng)然,我們也應(yīng)該知道,上述這些都是形容詞,它只是為了強(qiáng)化意識,說到這里再多白話幾句,第一條呢還說的過去(雖然你不用rman 備份,使用其它方式的備份創(chuàng)建standby 也不會對primary 造成影響),第二條第三條就完全不靠譜了,并不是說它實(shí)現(xiàn)不了,恰恰相反,是它描述的太基礎(chǔ)了,形容手法有問題,我舉個例子,比如你在魚缸里看到一條魚,你會不會形容說哇這條魚能夠在水里游耶(死魚才不會在水里游呢)~~所以鑒別能力很重要,雖然這點(diǎn)我做的還很不夠,但是請首長們放心,我一定會努力的,我一定會加強(qiáng)的,我一定會堅(jiān)持的!!!
          ?
          ??? 回到這個問題上來,為什么要用rman 來創(chuàng)建物理standby 呢,在我看來如果說有優(yōu)勢那么就一點(diǎn):簡單!
          ??? 另外在這里三思更明確的指出,使用RMAN 的duplicate 命令只能直接創(chuàng)建物理standby,幸還是不幸?
          ?
          ?
          一、準(zhǔn)備工作
          ?
          ??? 注意,在做任何操作之前,需要確認(rèn)以下幾點(diǎn):
          ?
          ??? ● 擁有至少一份通過rman 創(chuàng)建的備份;
          ??? ● 已經(jīng)在primary 數(shù)據(jù)庫設(shè)置了所有相關(guān)的初始化參數(shù);
          ??? ● 已經(jīng)創(chuàng)建了standby 的初始化參數(shù)文件并配置了所有相關(guān)的初始化參數(shù);
          ??? ● 已經(jīng)配置了實(shí)例,NetService,Listener 等;
          ??? ● 啟動standby 實(shí)例到nomount 狀態(tài);
          ?
          ??? 然后:
          ?
          1、通過rman 創(chuàng)建standby 的控制文件
          ?
          ??? 創(chuàng)建standby 的控制文件前面我們提到通過sql 命令,使用非常簡單,使用rman 命令創(chuàng)建與之同理,并且有兩種方式創(chuàng)建演示如下:

          ??? 1).RMAN> backup current controlfile for standby;
          ??? 2).RMAN> copy current controlfile for standby to 'e:\ora10g\oradata\jssrman\JSSRMAN01.CTL';


          ?
          2、定制standby 數(shù)據(jù)(日志)文件重命名策略
          ?
          ??? 為什么oracle 要提供重命名策略呢?因?yàn)閐g 配置非常靈活,standby 甚至可以與primary 在同一個數(shù)據(jù)庫。
          ?
          ??? 什么時候需要應(yīng)用重命名策略呢?如果standby 與primary 在同一臺服務(wù)器,或雖然不在同一臺服務(wù)器,但standby 的目錄結(jié)構(gòu)與primary 不同,這兩種情況下,都必須應(yīng)用重命名策略。如果standby 與primary 不在同一臺服務(wù)器,并且目錄結(jié)構(gòu)相同,那就不需要應(yīng)用重命名策略。
          ?
          ??? 如何應(yīng)用重命名策略呢? 多種方式, 比如我們的老朋友初始化參數(shù):db_file_name_convert,log_file_name_convert。還有rman 命令SET NEWNAME 或CONFIGURE AUXNAME
          等等,這些相關(guān)參數(shù)、命令的應(yīng)用我們都在"Duplicate 復(fù)制數(shù)據(jù)庫"系列中介紹并應(yīng)用過,后面還會再次提及。
          ?
          ?
          二、大致流程

          ??? 通常情況下,rman 創(chuàng)建完standby 之后不會自動執(zhí)行recover。
          ?
          ??? 如果你執(zhí)行duplicate 命令時沒有指定dorecover 參數(shù),則rman 自動按照下面的步驟操作:
          ??? 1、RMAN 連接standby 與primary,及catalog(如果使用了的話);
          ??? 2、檢索catalog(nocatalog 的話是primary 數(shù)據(jù)庫的控制文件),確定primary 的備份以及standby 控制文件;
          ??? 3、如果使用介質(zhì)恢復(fù),RMAN 需要連接介質(zhì)管理器以獲取所需備份數(shù)據(jù);
          ??? 4、恢復(fù)standby 控制文件到standby 服務(wù)器;
          ??? 5、恢復(fù)primary 數(shù)據(jù)庫備份集中相應(yīng)數(shù)據(jù)文件到standby 服務(wù)器;
          ??? 6、rman 自動將standby 數(shù)據(jù)庫打開到mount 狀態(tài),不過不會自動打開redo 應(yīng)用。
          ?
          ??? 如果執(zhí)行duplicate 命令時指定了dorecover 參數(shù),則rman 會在執(zhí)行完第5 步后,接著執(zhí)行下列的操作:
          ??? 7、在所有數(shù)據(jù)都restored 之后,rman 自動執(zhí)行recovery,如果recovery 過程需要?dú)w檔文件,但是這些文件又不在本地盤,則rman 會嘗試從備份中獲取。
          ??? 8、rman 執(zhí)行recovery 之前,你可以通過指定time,scn,logfile sequence 來確定recovery 的內(nèi)容,如果什么都不指定,則rman 一直recover 到最后一個歸檔文件。
          ??? 9、rman 自動將standby 數(shù)據(jù)庫打開到mount 狀態(tài),同樣也不會自動打開redo 應(yīng)用。
          ?
          ?
          三、方法及步驟

          ??? 基本上,可以分成二類:
          ?
          1、相同目錄結(jié)構(gòu)的創(chuàng)建

          ??? duplicate 不同服務(wù)器相同目錄結(jié)構(gòu)創(chuàng)建standby 的操作極為簡單, 你即不需要動用DB_FILE_NAME_CONVER/LOG_FILE_NAME_CONVERT之類參數(shù),也不需要通過set newname之類命令,基本步驟如下:
          ?
          ??? 1) 確保已設(shè)置standby 服務(wù)器中所有相關(guān)的初始化參數(shù)。
          ??? 2) 確認(rèn)備份集中文件scn 大于或等于控制文件中的scn。
          ??? 3) 如果需要,可以通過set 命令指定time,scn 或log 序號以執(zhí)行不完全恢復(fù)。
          ??????? 例如:set until scn 152;
          ??????? 提示:注意如果有set,則set 與duplicate 必須在同一個run 命令塊中。
          ??? 4) 如果沒有配置自動分配通道的話,需要手工指定至少一條輔助通道。
          ??? 5) 務(wù)必指定nofilenamecheck 參數(shù),我們之前"duplicate 復(fù)制數(shù)據(jù)庫"系列中就曾提到過,異機(jī)操作路徑相同還必需指定NOFILENAMECHECK。因?yàn)榇颂巓racle 表現(xiàn)的很傻,它不知道你要恢復(fù)的路徑是在另一臺機(jī)器上,它只是認(rèn)為要恢復(fù)到的路徑怎么跟目標(biāo)數(shù)據(jù)庫表現(xiàn)的一樣呢?會不會是要覆蓋目標(biāo)數(shù)據(jù)庫啊,為了避免這種情形,于是它就報錯。所以一旦異機(jī)恢復(fù),并且路徑相同,那么你必須通過指定NOFILENAMECHECK 來避免oracle 的自動識別。
          ?
          ??? 例如腳本如下:

          ??? sql> duplicate target database for standby nofilenamecheck dorecover;


          ??? 注意,dorecover 并非是必須參數(shù),如果你不指定的話,則duplicate 修復(fù)數(shù)據(jù)文件到服務(wù)器,并自動將standby 啟動到mount 狀態(tài),不過并不會執(zhí)行恢復(fù)操作。
          ?
          2、不同目錄結(jié)構(gòu)的創(chuàng)建

          ??? 對于不同目錄結(jié)構(gòu)創(chuàng)建standby(與是否同一臺服務(wù)器就基本無關(guān)了),你需要對數(shù)據(jù)文件和日志文件路徑重新定義,那你的選擇可就多多了喲:
          ?
          ??? a. 使用初始化參數(shù)重定義數(shù)據(jù)文件及日志文件
          ?
          ??? 關(guān)于db_file_name_convert 和log_file_name_convert 兩個初始化參數(shù)的本領(lǐng)和套路大家已經(jīng)都很熟悉了,所以呢這里就不多做介紹。duplicate 命令在此處執(zhí)行的時候與相同目錄結(jié)構(gòu)執(zhí)行也沒什么不同,所以,你可以認(rèn)為,這是不同路徑下創(chuàng)建standby 中,最簡單的方式。
          ?
          ?? b. SET NEWNAME 命令重定義數(shù)據(jù)文件
          ?
          ??? 步驟如下:
          ??? ● 確保已設(shè)置standby 服務(wù)器中所有相關(guān)的初始化參數(shù)。
          ??? ● 確認(rèn)備份集中文件scn 大于或等于控制文件中的scn。
          ??? ● 如果需要,可以通過set 命令指定time,scn 或log 序號以執(zhí)行不完全恢復(fù)。
          ??? ● 如果沒有配置自動分配通道的話,需要手工指定至少一條輔助通道。
          ??? ● 通過set newname 命令為standby 數(shù)據(jù)文件指定新路徑
          ??? ● 執(zhí)行duplicate 命令。
          ?
          ??? 例如,腳本如下:

          ??? RUN
          ??? {
          ??? # Set new file names for the datafiles
          ??? SET NEWNAME FOR DATAFILE 1 TO '?/dbs/standby_data_01.f';
          ??? SET NEWNAME FOR DATAFILE 2 TO '?/dbs/standby_data_02.f';
          ??? . . .
          ??? DUPLICATE TARGET DATABASE FOR STANDBY DORECOVER;
          ??? }

          ?
          ? ? c. CONFIGURE AUXNAME 命令重定義數(shù)據(jù)文件
          ?
          ??? 操作步驟皆與上同,不再詳述,不過需要注意的是CONFIGURE AUXNAME 命令的格式,并且configure 命令不能在run 塊中執(zhí)行,例如腳本如下:

          ??? # set auxiliary names for the datafiles
          ??? CONFIGURE AUXNAME FOR DATAFILE 1 TO '/oracle/auxfiles/aux_1.f';
          ??? CONFIGURE AUXNAME FOR DATAFILE 2 TO '/oracle/auxfiles/aux_2.f';
          ??? . . .
          ??? CONFIGURE AUXNAME FOR DATAFILE n TO '/oracle/auxfiles/aux_n.f';
          ??? DUPLICATE TARGET DATABASE FOR STANDBY;

          ?
          ??? 最后,務(wù)必注意,configure auxname 命令執(zhí)行是一直生效的,因此duplicate 執(zhí)行完之后,推薦清除CONFIGURE AUXNAME。這樣就不會對未來的類似操作造成影響。
          ?
          ??? 例如:

          ??? CONFIGURE AUXNAME FOR DATAFILE 1 CLEAR;
          ??? CONFIGURE AUXNAME FOR DATAFILE 2 CLEAR;
          ??? . . .
          ??? CONFIGURE AUXNAME FOR DATAFILE n CLEAR;

          ?
          ?
          ??? 步驟和方法介紹完了,下面實(shí)際操作一把~~~~~~~~~~~~~
          ?
          ?
          ?
          posted on 2009-03-02 22:12 decode360 閱讀(218) 評論(0)  編輯  收藏 所屬分類: 10.DB_Tools
          主站蜘蛛池模板: 林甸县| 双牌县| 治多县| 江津市| 饶平县| 陈巴尔虎旗| 界首市| 安新县| 库伦旗| 柞水县| 屏南县| 白银市| 彭山县| 基隆市| 双流县| 阿坝县| 乳源| 宜丰县| 广州市| 佛坪县| 宁河县| 区。| 永州市| 沐川县| 余干县| 建德市| 宁晋县| 和静县| 河东区| 鄂托克旗| 大厂| 天气| 日土县| 磐安县| 定兴县| 汪清县| 甘德县| 延津县| 平湖市| 洛阳市| 尖扎县|