資料庫邏輯設計:邏輯資料庫的管理方法
來源:發布時間:星期五,2008年9月26日瀏覽:39次評論:0
一:邏輯資料庫的角色切換
1,把資料庫切換到邏輯備資料庫的角色
SQL>ALTERDATABASECOMMITTOSWITCHOVERTOLOGICALSTANDBY;
2,停止遠程的歸檔操作
SQL>ALTERSYSTEMSETLOG_ARCHIVE_DEST_STATE_2=DEFERSCOPE=BOTH;
3,把其中的一個備庫切換到主庫的角色.
SQL>ALTERDATABASECOMMITTOSWITCHOVERTOPRIMARY;
4,打開遠程歸檔操作
SQL>ALTERSYSTEMSETLOG_ARCHIVE_DEST_STATE_2=ENABLESCOPE=BOTH;
5,在新的備庫上創建到主數據庫的連線
創建連線
SQL>EXECUTEDBMS_LOGSTDBY.GUARD_BYPASS_ON;
SQL>CREATEDATABASELINKlocation1
2>CONNECTTOuser-nameIDENTIFIEDBYpasswordUSING'location1';
SQL>EXECUTEDBMS_LOGSTDBY.GUARD_BYPASS_OFF;
測試資料庫連線.
SQL>SELECT*FROMDBA_LOGSTDBY_PARAMETERS@location1;
6,打開SQL套用在新的備庫上.
SQL>ALTERDATABASESTARTLOGICALSTANDBYAPPLYNEWPRIMARYlocation1;
7,主庫上做日雜歸檔操作,並測試角色切換成功
SQL>ALTERSYSTEMARCHIVELOGSTART;
SQL>ALTERSYSTEMSWITCHLOGFILE;
二:邏輯資料庫的故障啟動
如果dataguard的主資料庫不能夠啟動那么有必要把備庫啟動起來,暫時或者永久代替主庫!
SQL>ALTERDATABASESTOPLOGICALSTANDBYAPPLY;
SQL>ALTERDATABASEACTIVATELOGICALSTANDBYDATABASE;
然後做資料庫的恢復或者其他回響的操作
或者是角色轉換如上!
三:歸檔日誌手工註冊
如果DATAGUARD的主資料庫的歸檔日誌由於不確定不可以預測的原因使的歸檔日誌不能夠傳到備庫上!那么就需要手工添加註冊到備庫上!
確定丟失的歸檔日誌
SQL>COLUMNFILE_NAMEFORMATa55;
SQL>SELECTTHREAD#,SEQUENCE#,FILE_NAMEFROMDBA_LOGSTDBY_LOGL
2>WHERENEXT_CHANGE#NOTIN
3>(SELECTFIRST_CHANGE#FROMDBA_LOGSTDBY_LOGWHEREL.THREAD#=THREAD#)
4>ORDERBYTHREAD#,SEQUENCE#;
THREAD#SEQUENCE#FILE_NAME
-----------------------------------------------------------
16/disk1/oracle/dbs/log-1292880008_6.arc
110/disk1/oracle/dbs/log-1292880008_10.arc
拷貝丟失的歸檔日誌到備庫上.
拷貝檔案
註冊不完整的歸檔日誌
SQL>ALTERDATABASEREGISTERLOGICALLOGFILE
2>'/disk1/oracle/dbs/log-1292880008_7.arc';
Databasealtered.
SQL>ALTERDATABASEREGISTERLOGICALLOGFILE
2>'/disk1/oracle/dbs/log-1292880008_11.arc';
Databasealtered.
四:常用的查詢語句
1,查詢資料庫的角色
Selectdatabase_rolefromv$database;
2,確定重做日誌是否套用到備庫上
Selectapplied_scn,newest_scnfromdba_logstdby_progress;3,確認重做數據的註冊
SELECTSEQUENCE#,FIRST_TIME,NEXT_TIME,DICT_BEGIN,DICT_ENDFROMDBA_LOGSTDBY_LOGORDERBYSEQUENCE#;
4,確認重做數據的套用
SELECTNAME,VALUEFROMV$LOGSTDBY_STATSWHERENAME="coordinatorstate";5,dataguard訪問模式selectguard_statusfromv$database;五:歸檔日誌的管理
在dataguard的具體的實際套用中,有大量的歸檔日誌的產生,對他們也要進行合理的管理!六:其他管理
1:在邏輯備庫上運行DDL語句SQL>ALTERDATABASESTOPLOGICALSTANDBYAPPLY;Databasealtered.SQL>EXECUTEDBMS_LOGSTDBY.GUARD_BYPASS_ON;PL/SQLproceduresuccessfullycompleted.SQL>ALTERTABLESCOTT.EMPADDCONSTRAINTEMPIDUNIQUE(EMPNO);Tablealtered.SQL>EXECUTEDBMS_LOGSTDBY.GUARD_BYPASS_OFF;PL/SQLproceduresuccessfullycompleted.SQL>ALTERDATABASESTARTLOGICALSTANDBYAPPLY;Databasealtered.2:在邏輯資料庫上添加數據檔案在主資料庫上執行數據檔案的添加或者修改的操作時候,如果備庫上根本沒有回響的路徑或者沒有符合的空間剩餘,備庫上的執行操作就會失敗SQL>selectevent,status_code,statusfromdba_logstdby_events;SQL>EXECUTEDBMS_LOGSTDBY.GUARD_BYPASS_ON;SQL>ALTERTABLESPACEt_tableADDDATAFILE'dbs/t_db.f'SIZE60M;Tablespacealtered.SQL>EXECUTEDBMS_LOGSTDBY.GUARD_BYPASS_off;SQL>ALTERDATABASESTARTLOGICALSTANDBY