Decode360's Blog

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

            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 ::  :: 管理 ::
            302 隨筆 :: 26 文章 :: 82 評論 :: 0 Trackbacks
          本文作者: junsansi???? 轉(zhuǎn)載網(wǎng)址: http://www.5ienet.com/index.shtml
          ?
          ?
          第二部分物理standby(1)創(chuàng)建步驟? 2007.12.03

          一、準(zhǔn)備工作?
          ?
          ??? 不管物理standby 還是邏輯standby,其初始創(chuàng)建都是要依賴primary 數(shù)據(jù)庫,因為這個準(zhǔn)備工作中最重要的一部分,就是對primary 數(shù)據(jù)庫的配置。
          ?
          1、打開Forced Logging 模式 ?

          ??? 將primary 數(shù)據(jù)庫置為FORCE LOGGING 模式。通過下列語句:

          ??? SQL> alter database force logging;

          ?

          ????提示:關(guān)于FORCE?LOGGING
          ???想必大家知道有一些DDL 語句可以通過指定NOLOGGING 子句的方式避免寫redo log(目的是提高速度,某些時候確實有效),指定數(shù)據(jù)庫為FORCE LOGGING 模式后,數(shù)據(jù)庫將會記錄除臨時表空間或臨時回滾段外所有的操作而忽略類似NOLOGGING 之類的指定參數(shù)。如果在執(zhí)行force logging 時有nologging之類的語句在執(zhí)行,則force logging 會等待直到這類語句全部執(zhí)行。FORCE LOGGING 是做為固定參數(shù)保存在控制文件中,因此其不受重啟之類操作的影響(只執(zhí)行一次即可),如果想取消,可以通過alter database no?force logging 語句關(guān)閉強(qiáng)制記錄。


          2、創(chuàng)建密碼文件(如果不存在的話)

          ??? 需要注意的是,同一個Data Guard 配置中所有數(shù)據(jù)庫必須都擁有獨立的密碼文件,并且必須保證同一個Data Guard 配置中所有數(shù)據(jù)庫服務(wù)器的SYS 用戶擁有相同密碼以保證redo 數(shù)據(jù)的順利傳輸,因為redo傳輸服務(wù)通過認(rèn)證的網(wǎng)絡(luò)會話來傳輸redo 數(shù)據(jù),而會話使用包含在密碼文件中的SYS 用戶密碼來認(rèn)證。
          ?
          3、配置Standby Redo Log
          ?
          ??? 對于最大保護(hù)和最高可用性模式,Standby 數(shù)據(jù)庫必須配置standby redo log,并且oracle 推薦所有數(shù)據(jù)庫都使用LGWR ASYNC 模式傳輸,當(dāng)然你現(xiàn)在可能還不知道LGWR ASYNC 是什么問題,沒關(guān)系,你很
          快就會知道了。Oracle 建議你在創(chuàng)建standby 時就考慮standby redolog 配置的問題。standby redologs 與online redologs非常類似,應(yīng)該說兩者只是服務(wù)對象不同,其它參數(shù)屬性甚至操作的命令格式幾乎都一樣,你在設(shè)計standby?redologs 的時候完全可以借鑒創(chuàng)建online redologs 的思路,比如多個文件組啦,每組多個文件冗余之類的。除些之外呢,oracle 提供了一些標(biāo)準(zhǔn)的建議如下:
          ?
          ??? ●?確保standby redo log 的文件大小與primary 數(shù)據(jù)庫online redo log 文件大小相同。
          ????這個很好理解的吧,就是為了接收和應(yīng)用方便嘛。
          ?
          ??? ● 創(chuàng)建適當(dāng)?shù)娜罩窘M
          ????一般而言,standby redo 日志文件組數(shù)要比primary 數(shù)據(jù)庫的online redo 日志文件組數(shù)至少多一個。推薦standby redo 日志組數(shù)量基于primary 數(shù)據(jù)庫的線程數(shù)(這里的線程數(shù)可以理解為rac 結(jié)構(gòu)中的rac節(jié)點數(shù))。
          ??? 有一個推薦的公式可以做參考:(每線程的日志組數(shù)+1)*最大線程數(shù)
          ??? 例如primary 數(shù)據(jù)庫有兩個線程,每個線程分配兩組日志,則standby 日志組數(shù)建議為6 組,使用這個公式可以降低primary 數(shù)據(jù)庫實例LGWR 進(jìn)程鎖住的可能性。
          ??? 提示:邏輯standby 數(shù)據(jù)庫有可能需要視工作量增加更多的standby redo log 文件(或增加歸檔進(jìn)程),因為邏輯standby 需要同時寫online redo log 文件。
          ?
          ??? Standby redo log 的操作方式與online redo log 幾乎一模一樣,只不過在創(chuàng)建或刪除時需要多指定一個standby 關(guān)鍵字,例如添加:

          ??? SQL> alter database add standby logfile group 4 ('e:\ora10g\oradata\jsspdg\STANDBYRD01.LOG') size 20M;

          ?
          ??? 刪除也同樣簡單:

          ??? SQL> alter database drop standby logfile group 4;

          ?
          ??? 另外,從可靠性方面考慮,建議在primary 數(shù)據(jù)庫也創(chuàng)建standby redologs,這樣一旦發(fā)生切換,不會影響primary 做為standby 的正常運行。
          ?? ?驗證standby redo log 文件組是否成功創(chuàng)建
          ?? ?例如:

          ??? SQL> SELECT GROUP#,THREAD#,SEQUENCE#,ARCHIVED,STATUS FROM V$STANDBY_LOG;

          ?
          4、設(shè)置初始化參數(shù) ?

          ?? ? 對于primary 數(shù)據(jù)庫,需要定義幾個primary 角色的初始化參數(shù)控制redo 傳輸服務(wù),還有幾個附加的standby 角色的參數(shù)需要添加以控制接收redo 數(shù)據(jù)庫并應(yīng)用(switchover/failover 后primary/standby 角色可能互換,所以建議對于兩類角色相關(guān)的初始化參數(shù)都進(jìn)行配置)。
          ?
          ? ?下列參數(shù)為primary 角色相關(guān)的初始化參數(shù):
          ?
          DB_NAME :?
          ??? 注意保持同一個Data Guard 中所有數(shù)據(jù)庫DB_NAME 相同。
          ??例如:DB_NAME=jssweb
          ???
          DB_UNIQUE_NAME :?
          ??? 為每一個數(shù)據(jù)庫指定一個唯一的名稱,該參數(shù)一經(jīng)指定不會再發(fā)生變化,除非你主動修改它。
          ??例如:DB_UNIQUE_NAME=jssweb
          ?
          LOG_ARCHIVE_CONFIG?
          ? ?該參數(shù)通過DG_CONFIG 屬性羅列同一個Data Guard 中所有DB_UNIQUE_NAME(含primary db 及standby db),以逗號分隔
          ??例如:LOG_ARCHIVE_CONFIG='DB_CONFIG=(jssweb,jsspdg)'
          ?
          CONTROL_FILES
          ? ?沒啥說的,控制文件所在路徑。
          ?
          LOG_ARCHIVE_DEST_n:??
          ? ?歸檔文件的生成路徑。該參數(shù)非常重要,并且屬性和子參數(shù)也特別多(這里不一一列舉,后面用到時單獨講解如果你黑好奇,建議直接查詢oracle 官方文檔。Data guard 白皮書第14 章專門介紹了該參數(shù)各屬性及子參數(shù)的功能和設(shè)置)。?
          ? ?例如:
          ???LOG_ARCHIVE_DEST_1=?
          ? ?'LOCATION=E:\ora10g\oradata\jssweb?
          ?? ? VALID_FOR=(ALL_LOGFILES,ALL_ROLES)?
          ??? DB_UNIQUE_NAME=jssweb'
          ?
          LOG_ARCHIVE_DEST_STATE_n
          ? ?指定參數(shù)值為ENABLE,允許redo 傳輸服務(wù)傳輸redo 數(shù)據(jù)到指定的路徑。該參數(shù)共擁有4 個屬性值,功能各不相同。
          ?
          REMOTE_LOGIN_PASSWORDFILE
          ??推薦設(shè)置參數(shù)值為EXCLUSIVE 或者SHARED,注意保證相同Data Guard配置中所有db 服務(wù)器sys 密碼相同。
          ?
          LOG_ARCHIVE_FORMAT?
          ? ?指定歸檔文件格式。
          ?
          LOG_ARCHIVE_MAX_PRODUC ESSES
          ?? 指定歸檔進(jìn)程的數(shù)量(1-30),默認(rèn)值通常是4。

          以下參數(shù)為standby 角色相關(guān)的參數(shù),建議在Primary 數(shù)據(jù)庫的初始化參數(shù)中也進(jìn)行設(shè)置,這樣在role transition?后(Primary 轉(zhuǎn)為Standby)也能正常運行:?

          FAL_SERVER
          ? ?指定一個數(shù)據(jù)庫SID,通常該庫為primary 角色。
          ? ?例如:FAL_SERVER=jssweb
          ?
          FAL_CLIENT:??
          ? ?指定一個數(shù)據(jù)庫SID,通常該庫為standby 角色。
          ? ?例如:FAL_CLIENT=jsspdg
          ? ?提示:FAL 是Fetch Archived Log 的縮寫
          ?
          DB_FILE_NAME_CONVERT
          ? ?在做duplicate 復(fù)制和傳輸表空間的時候這類參數(shù)講過很多遍,該參數(shù)及上
          ? ?述內(nèi)容中同名參數(shù)功能,格式等完全相同。
          ?
          LOG_FILE_NAME_CONVERT
          ? ?同上
          ?
          STANDBY_FILE_MANAGEMENT
          ? ?如果primary 數(shù)據(jù)庫數(shù)據(jù)文件發(fā)生修改(如新建,重命名等)則按照本參數(shù)的設(shè)置在standby 中做相應(yīng)修改。設(shè)為AUTO 表示自動管理。設(shè)為MANUAL表示需要手工管理。
          ? ?例如:STANDBY_FILE_MANAGEMENT=AUTO

          ??? 注意:上面列舉的這些參數(shù)僅只是對于primary/standby 兩角色可能會相關(guān)的參數(shù),還有一些基礎(chǔ)性參數(shù)比如*_dest,*_size 等數(shù)據(jù)庫相關(guān)的參數(shù)在具體配置時也需要根據(jù)實際情況做出適當(dāng)修改。

          ?
          5、確保數(shù)據(jù)庫處于歸檔模式 ?

          ??? SQL> archive log list;??
          ??? 數(shù)據(jù)庫日志模式? ?存檔模式
          ??? 自動存檔??????? 啟用
          ??? .......

          ?
          ??? 如果當(dāng)前primary 數(shù)據(jù)庫并未處于歸檔模式,可通過下列命令將數(shù)據(jù)庫置為歸檔模式:

          ??? SQL> STARTUP MOUNT;
          ??? SQL> ALTER DATABASE ARCHIVELOG;
          ??? SQL> ALTER DATABASE OPEN;

          ?

          二、手把手的創(chuàng)建物理standbstandby ?

          1、創(chuàng)建備份(手工復(fù)制數(shù)據(jù)文件或通過RMAN) ---primary 庫操作 ?

          2、創(chuàng)建控制文件--primary 庫操作 ?

          ?? ? 通過下列語句為standby 數(shù)據(jù)庫創(chuàng)建控制文件

          ???? SQL> alter database create standby controlfile as 'd:\backup\jsspdg01.ctl'; ?


          ??? 注意喲,控制文件通常需要有多份,你要么手工將上述文件復(fù)制幾份,要么用命令多創(chuàng)建幾個出來。另外,創(chuàng)建完控制文件之后到standby 數(shù)據(jù)庫創(chuàng)建完成這段時間內(nèi),要保證primary 數(shù)據(jù)庫不再有結(jié)構(gòu)性的變化(比如增加表空間等等),不然primary 和standby 同步時會有問題。?

          3、創(chuàng)建初始化參數(shù)文件
          ?
          ??? ●?創(chuàng)建客戶端初始化參數(shù)文件
          ?? ?例如:

          ???? SQL> create pfile='d:\backup\initjsspdg.ora' from spfile;

          ?
          ????● 修改初始化參數(shù)文件中的參數(shù)
          ????根據(jù)實際情況修改吧,注意primary 和standby 不同角色的屬性配置,注意文件路徑。
          ?
          4、復(fù)制文件到standby 服務(wù)器
          ?
          ?? ?至少三部分:數(shù)據(jù)文件,控制文件,修改過的初始化參數(shù)文件,注意路徑。
          ?
          5、配置standby 數(shù)據(jù)庫
          ?
          ?? ?如果你看過三思之前“一步一步學(xué)rman”系列,看過“duplicate 復(fù)制數(shù)據(jù)庫”,或看過“傳輸表空間復(fù)制數(shù)據(jù)”系列,那么對于創(chuàng)建一個新的數(shù)據(jù)庫應(yīng)該非常熟悉了,下面再簡單描述一下步驟:
          ????1).創(chuàng)建新的OracleService(windows 環(huán)境下需要)。
          ?? ?2).創(chuàng)建密碼文件,注意保持密碼與primary 數(shù)據(jù)庫一致。
          ?? ?3).配置監(jiān)聽并啟動
          ?? ?4).修改primary 和standby 的tnsnames.ora,各自增加對應(yīng)的Net Service Name。
          ?? ?5).創(chuàng)建服務(wù)器端的初始化文件
          ?
          6、啟動standby
          ?
          ?? ?注意喲,咱們前面說過的,物理standby 極少情況下可以以read-write 模式打開,某些情況下可以以readonly模式打開,所以默認(rèn)情況下,加載到mount 狀態(tài)即可。

          ???? SQL> STARTUP MOUNT;

          ?
          ???? 啟動redo 應(yīng)用

          ????SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM?SESSION;

          ?
          ?? ?啟動實時應(yīng)用

          ???? SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT?LOGFILE DISCONNECT FROM SESSION;

          ?
          ???? 提示:disconnect?from?session子句并非必須,該子句用于指定啟動完應(yīng)用后自動退出到命令操作符前,如果不指定的話,當(dāng)前session 就會一直停留處理redo 應(yīng)用,如果想做其它操作,就只能新建一個連接。
          ?
          7、停止standby
          ?
          ?? ?正常情況下,我們停止也應(yīng)該是先停止redo 應(yīng)用,可以通過下列語句:

          ????SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CALCEL;

          ?
          ????然后再停止standby 數(shù)據(jù)庫

          ????SQL> SHUTDOWN IMMEDIATE;

          ?
          ?? ?當(dāng)然你非要直接shutdown 也沒問題,dg 本來就是用于容災(zāi)的,別說你生停standby,就是直接拔電源也不怕。
          ?? ?基本步驟就是這樣,下面我們進(jìn)入實踐環(huán)節(jié)....................
          ?
          ?




          -The End-

          posted on 2009-02-19 22:31 decode360-3 閱讀(280) 評論(0)  編輯  收藏 所屬分類: DBA
          主站蜘蛛池模板: 子洲县| 西畴县| 杭锦旗| 青河县| 保定市| 共和县| 喜德县| 商河县| 拉萨市| 汤原县| 巴中市| 鄂伦春自治旗| 鹤峰县| 濉溪县| 尼玛县| 河北省| 吉安市| 宝兴县| 观塘区| 濉溪县| 土默特左旗| 囊谦县| 乐安县| 东海县| 溧阳市| 枝江市| 资溪县| 饶河县| 山阴县| 乌拉特中旗| 遵化市| 安顺市| 湘乡市| 兰西县| 灵武市| 慈溪市| 安吉县| 盐边县| 镇沅| 鸡西市| 孟津县|