單機Linux平臺Oracle 10g DataGuard Physical Standby 搭建例項(6)

cow977發表於2011-07-09

單機Linux平臺Oracle 10g DataGuard Physical Standby 搭建例項(1)http://space.itpub.net/81227/viewspace-701181

單機Linux平臺Oracle 10g DataGuard Physical Standby 搭建例項(2)http://space.itpub.net/81227/viewspace-701198

單機Linux平臺Oracle 10g DataGuard Physical Standby 搭建例項(3)http://space.itpub.net/81227/viewspace-701231

單機Linux平臺Oracle 10g DataGuard Physical Standby 搭建例項(4)http://space.itpub.net/81227/viewspace-701293

單機Linux平臺Oracle 10g DataGuard Physical Standby 搭建例項(5)http://space.itpub.net/81227/viewspace-702254

 

這部分講述switchover

 

Switchover

一般SWITCHOVER切換都是計劃中的切換,特點是在切換後,不會丟失任何的資料,而且這個過程是可逆的,整個DATA GUARD環境不會被破壞,原來DATA GUARD環境中的所有物理和邏輯STANDBY都可以繼續工作。

在進行DATA GUARD的物理STANDBY切換前需要注意:

1)確認主庫和從庫間網路連線通暢;

2)確認沒有活動的會話連線在資料庫中;

3PRIMARY資料庫處於開啟的狀態,STANDBY資料庫處於MOUNT狀態;

4)確保STANDBY資料庫處於ARCHIVELOG模式;

5)如果設定了REDO應用的延遲,那麼將這個設定去掉;

6)確保配置了主庫和從庫的初始化引數,使得切換完成後,DATA GUARD機制可以順利的執行。 ­

主庫:

1. 檢視switchover 狀態

SQL> SELECT SWITCHOVER_STATUS FROM V$DATABASE;

SWITCHOVER_STATUS

--------------------

SESSIONS ACTIVE

 

2 切換成備庫

SQL> Alter database commit to switchover to physical standby with session shutdown;

或者

SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PHYSICAL STANDBY;

     Database altered.

3 啟動到mount和應用日誌狀態

SQL> SHUTDOWN IMMEDIATE

SQL> startup nomount;

SQL> alter database mount standby database;

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

4. 檢視資料庫模式

SQL>select dest_name, status, database_mode, recovery_mode, protection_mode from v$archive_dest_status;

SQL>select status,database_mode from v$archive_dest_status;

SQL> SELECT DATABASE_ROLE FROM V$DATABASE;

DATABASE_ROLE

----------------

PHYSICAL STANDBY

備庫:

1.檢視switchover狀態

SQL> SELECT SWITCHOVER_STATUS FROM V$DATABASE;

    TO PRIMARY

 

2. 切換成主庫

SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY;

Database altered.

SQL> shutdown immediate;

SQL> startup;

SQL> alter system switch logfile;

3. 檢視資料庫模式

SQL>select dest_name, status, database_mode, recovery_mode, protection_mode from v$archive_dest_status;

SQL>select status,database_mode from v$archive_dest_status;

SQL> SELECT DATABASE_ROLE FROM V$DATABASE;

DATABASE_ROLE

----------------

PRIMARY

 

切換成功。

 

 

Failovers

FAILOVER切換一般是PRIMARY資料庫發生故障後的切換,這種情況是STANDBY資料庫發揮其作用的情況。這種切換髮生後,可能會造成資料的丟失。而且這個過程不是可逆的,DATA GUARD環境會被破壞。

由於PRIMARY資料庫已經無法啟動,所以FAILOVER切換所需的條件並不多,只要檢查STANDBY是否執行在最大保護模式下,如果是的話,需要將其置為最大效能模式,否則切換到PRIMARY角色也無法啟動。

1.檢視是否有日誌GAP,沒有應用的日誌:

SQL> SELECT UNIQUE THREAD#, MAX(SEQUENCE#) OVER(PARTITION BY THREAD#) LAST FROM V$ARCHIVED_LOG;

SQL> SELECT THREAD#, LOW_SEQUENCE#, HIGH_SEQUENCE# FROM V$ARCHIVE_GAP;

如果有,則複製過來並且註冊

SQL> ALTER DATABASE REGISTER PHYSICAL LOGFILE '路徑';

重複檢視直到沒有應用的日誌:

2. 然後停止應用歸檔:

SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;

Database altered.

3. 下面將STANDBY資料庫切換為PRIMARY資料庫: ­

SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE FINISH;

SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE FINISH FORCE;

Database altered.

SQL> SELECT DATABASE_ROLE FROM V$DATABASE;

DATABASE_ROLE

----------------

PHYSICAL STANDBY

SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY;

Database altered.

SQL> ALTER DATABASE OPEN; 或者 shutdown immediate+startup

Database altered.

檢查資料庫是否已經切換成功:

SQL> SELECT DATABASE_ROLE FROM V$DATABASE;

DATABASE_ROLE

----------------

PRIMARY

至此,FAILOVER切換完成。這個時候應該馬上對新的PRIMARY資料庫進行備份。

 

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

相關文章