Oracle Standby系統管理與維護

tolywang發表於2008-10-14


管理:

查詢庫狀態:
SQL> select name,SWITCHOVER_STATUS,open_mode,PROTECTION_MODE,DATABASE_ROLE
          from v$database;

驗證archive log是否接收和 applied.
SQL> alter session set nls_datE_format='YYYY-MM-DD HH24:MI:SS';

select SEQUENCE#,DEST_ID,ARCHIVED,APPLIED,DELETED,
STATUS,FIRST_TIME from v$archived_log order by SEQUENCE#;

啟動到管理模式:
SQL> shutdown immediate;
SQL> startup nomount
SQL> alter database mount standby database
SQL> recover managed standby database disconnect from session;
----------

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

10g以後,採用聯機日誌的傳遞傳遞方式,
SQL> recover managed standby database using current logfile disconnect from session;

啟動到只讀模式:
SQL> shutdown immediate;
SQL> startup nomount
SQL> alter database mount standby database
SQL> alter databae open read only;

在管理模式恢復到只讀模式:
SQL> recover managed standby database cancel;
SQL> alter database open read only

在只讀模式可以給資料庫新增臨時資料檔案(在rman備份是沒有備份的),想讓standby提供只讀服務或者

切換成主庫,最好先增加鏈式檔案
SQL> alter tablespace temp add tempfile 'C:\oracle\product\10.2.0\oradata\dgtest\temp02.dbf'

size 100m;

只讀模式到管理模式
SQL> recover managed standby database disconnect from session;

在備庫進行備份
1.停止應用程式,跳轉到 read only模式,同坐backup database命令來備份資料庫,這樣資料庫處於一致

性模式
2. 備份完成後,備份控制檔案
SQL> ALTER DATABASE BACKUP CONTROLFILE TO 'FILE NAME';

主備切換

正常切換 (switchover)
切換準備: 準備引數檔案,平時應該備好,注意引數 fal_server,fal_client

先確認能否轉換:
SELECT SWITCHOVER_STATUS FROM V$DATABASE;

主 -> 備
$lsnrclt stop
殺光程式或者重啟資料庫
SQL> alter database commit to switchover to physical standby with session shutdown;

SQL> shutdown immediate;
SQL> startup nomount pfile ='';
SQL> alter database mount standby database;
SQL> recover managed standby database disconnect;

備 -> 主
SQL> alter database commit to switchover to primary with session shutdown;
SQL> shutdown immediate
SQL> startup pfile =''

如果考慮在主備庫來回切換,要保證資料庫版本一致,引數compatible一致

失敗切換 (Failover)
主伺服器不能使用情況下

在備庫
SQL> recover managed standby database cancel;

--如果在備用庫上有備用庫日誌檔案,參考命令
SQL> alter database recover managed standby database finish; -- [force|wait|nowait] 10g or

later
--沒有備庫日誌檔案[10gR2之前]
SQL> alter database recover managed standby database finish skip standby logfile;

--切換備庫到主庫
SQL> alter database commit to switchover to primary;
-- open
SQL> shutdown immediate;
SQL> startup pfile=''

如果還有為傳遞的歸檔日誌或者主庫的聯機日誌
SQL>alter database register logfile 'c:\...'
SQL>recover standby database;

強行切換(啟用)
啟用備用伺服器,在重啟資料庫時,備庫會resetlog。
SQL>alter system archive log current;
SQL>recover managed standby database cancel;
SQL>alter database activate standby database;
SQL>shutdown immediate;
SQL>startup pfile=''

-----
apply 主庫redolog並強制切換
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;
--選定redolog恢復
SQL> recover standby database until cancel;

Specify log: {=suggested | filename | AUTO | CANCEL}
/u01/oradata/dgtest/redo02.log
Log applied.
Media recovery complete.

recovery 完成之後就要failover了。

SQL>alter database activate standby database;
SQL>shutdown immediate;
SQL>startup pfile=''
-- http://hi.baidu.com/wa0362/blog/item/33e52912a91eadcbc2fd78b9.html
-- http://zf_wu.itpub.net/

-- 參考來源: 《oracle高可用環境》

--http://www.oracleblog.cn/study-note/reduce-the-data-loss-of-data-guard-when-failover/

相關檢視

v$archive_dest
v$archive_dest_status
v$log_history
v$archvied_log
v$managed_standby
v$archive_gap

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/35489/viewspace-619368/,如需轉載,請註明出處,否則將追究法律責任。

相關文章