DG之主庫、備庫切換(物理備庫),dg切換
DG之主庫、備庫切換
一.開庫與關庫順序
開庫順序 |
先啟備庫,再啟主庫(啟動監聽、開啟警示日誌) |
關庫順序 |
先關主庫,再關備庫 |
二.主備庫切換1、操作過程一覽步驟1:啟動備庫、監聽、警示;步驟2:啟動主庫、監聽、警示;步驟3:主庫(bj)查詢資訊
SQL>selectname,dbid,database_role,protection_mode from v$database;
步驟4:備庫(sh)上做recover
SQL>recovermanaged standby database disconnect from session;
步驟5:備庫上插入資料
SQL>insert into scott.emp1 select * from scott.emp;
報錯
雖然備庫處於open狀態,但它是一個read-only狀態。
步驟6:查看主庫(bj)、備庫(sh)日誌是否一致
SQL>selectmax(sequence#) from v$archived_log where name is not null;
或SQL>selectmax(sequence#) from v$archived_log;
舉例:
主庫:
備庫:
表明已經歸檔的最大序號均為34,說明日誌是同步的,可以進行主備庫切換。
步驟7:主庫(bj)下檢查是否可以切換
SQL>selectname,database_role,protection_mode,switchover_status from v$database;
switchover_status顯示“TO STANDBY”表示允許做切換。
步驟8:備庫(sh)下檢查是否可以切換
SQL>selectname,database_role,protection_mode,switchover_status from v$database;
說明:備庫是不允許主動去切成主庫的,NOT ALLOWED狀態說明正常。
步驟9:檢查主庫(bj)上的會話
SQL>select username,sid from v$session where username is notnull;
查看是否仍有使用者使用資料庫,若仍有人使用,是不允許切換的,切換前要通知確保無使用者使用。
步驟10:主庫(bj)變為物理備庫(sh)
若沒有會話,將主庫(bj)變為物理備庫(sh)
SQL> ALTER DATABASECOMMIT TO SWITCHOVER TO PHYSICAL STANDBY;
若有會話的話,關閉會話,將主庫(bj)變為物理備庫(sh)
SQL> alter database commit to switchover to physical standby withsession shutdown;
步驟11:關閉、重啟之前的主庫(bj)到mount狀態
SQL> SHUTDOWN IMMEDIATE;
SQL> STARTUP MOUNT;
SQL> selectswitchover_status from v$database;
SWITCHOVER_STATUS
--------------------
TO PRIMARY
註:在這個時候,兩個資料庫都應該處於備庫狀態。
步驟12:查證備庫的轉換狀態
SQL> SELECTSWITCHOVER_STATUS FROM V$DATABASE;
SWITCHOVER_STATUS
-----------------
TO_PRIMARY ——可以轉換為主庫,說明是備庫狀態
步驟13:將目標物理備庫(sh)轉換為主庫
SQL> ALTER DATABASECOMMIT TO SWITCHOVER TO PRIMARY(WITHSESSION SHUTDOWN);
步驟14:完成備庫(sh)到主庫轉換,物理備庫啟動到open
若物理備庫(bj)在最近一次啟動時不是處於唯讀模式 opened in read-only mode,直接將資料庫開啟,然後下一步。
SQL> select status fromv$instance;
STATUS
------------
MOUNTED
SQL> ALTER DATABASE OPEN;
SQL> select switchover_statusfrom v$database;
SWITCHOVER_STATUS
--------------------
TO STANDBY
若物理備庫(bj)在最近一次啟動時是唯讀模式,則先將資料庫正常關閉再起庫。
SQL> SHUTDOWN IMMEDIATE;
SQL> STARTUP;
步驟15:在新備庫(bj)上重新開啟日誌應用
SQL> ALTER DATABASERECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;
步驟16:在新的主庫(sh)上切換日誌,開始傳輸資料給備庫
SQL> ALTER SYSTEM SWITCHLOGFILE;
SQL> /
SQL> select max(sequence#)from v$archived_log;
MAX(SEQUENCE#)
--------------
56
SQL> col name for a50;
SQL> select NAME ,SEQUENCE# from v$archived_log; 查看歸檔日誌
步驟17:在備庫(bj)上查看歸檔,兩值相等說明備庫能收到日誌
SQL> select max(sequence#)from v$archived_log;
MAX(SEQUENCE#)
--------------
56
SQL> col name for a50;
SQL> select NAME ,SEQUENCE# from v$archived_log; 查看歸檔日誌
2、總結主備庫切換重點
時 間 軸 ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ |
主庫 |
備庫 |
查詢能否切換(應該顯示允許) |
|
|
備庫查詢能否切換(應該顯示不允許) |
切換為物理備庫 |
|
切換到mount狀態 |
|
|
查看備庫轉換狀態 |
|
轉換為主庫 |
|
切換到mount狀態 |
啟動到open |
|
|
|
|
啟動到open狀態 |
開啟日誌應用 |
|
|
切換日誌 |
|
查看歸檔序號 |
查看歸檔序號 |
|
查詢狀態:備庫 |
查詢狀態:主庫 |
***********************************************聲明************************************************
原創作品,出自 “深藍的blog” 部落格,歡迎轉載,轉載時請務必註明出處(http://blog.csdn.net/huangyanlong)。
表述有錯誤之處,請您留言,不勝感激。
提醒:點擊目錄,更有助於您的查看。
*****************************************************************************************************
請問oracle dataguard 物理備庫邏輯備庫分別適合什麼類型的資料庫?dataguard建立線資料庫備庫並定期進行歸檔日誌邏輯匯入從而保證備庫和線資料庫同步旦線資料庫出現問題備庫切換成線資料庫直接替代出現問題資料庫
所說物理備庫和邏輯備庫我理解物理冷備和邏輯熱備物理冷備只有資料庫關閉情況下才能備份恢複時其資料新;邏輯熱備進行資料庫線備份恢複時資料新
兩個伺服器兩個資料庫都是sql server 2005,分為主備資料庫,怎麼實現在主庫修改同步到備庫當做鏡像了觸發器得寫多少啊