RAC和Dataguard環境下主備庫切換演練模板

kuqlan發表於2011-08-12

如下文章是根據“做之前要想好,做的時候不要再想”原則基礎上總結出來RAC+DataGuard切換模板。因為根據個人經驗,在切換過程中如果遇到什麼異常,有時緊張得腦子都不轉的感覺。因此有必要提前寫好自己熟悉一點實施方案。

具體環境如下:

資料庫版:Oracle 10g,資料庫名rac

節點1例項名: rac1 IP: 192.168.1.2

節點2例項名: rac2 IP: 192.168.1.3

災備中心備庫例項名:rac IP:192.168.1.6

[@more@]

生產庫( 主庫)切換為備用庫

序號

操作步驟

IP

使用者名稱

服務或程式

1

DATA GUARD環境是否正常

192.168.1.2

192.168.1.6

oracle

1. 在執行SWITCHOVER操作前,首先確認DATA GUARD環境工作是否正常。

1.1 常規檢查包括:

a) 檢查主庫上V$ARCHIVE_DEST檢視

SELECT * FROM V$ARCHIVE_DEST;

b) 檢查備庫上V$MANAGED_STANDBY檢視

SELECT * FROM V$MANAGED_STANDBY;

c) 檢查主庫和備庫上的V$ARCHIVED_LOG檢視

SELECT * FROM V$ARCHIVED_LOG;

d) 檢查主庫和備庫對應的alert告警日誌中是否存在錯誤。

2. 如果DATA GUARD環境正常,就需要進行SWITCHOVER切換前的常規檢查:

2.1確認主庫和備庫間網路連線通暢;(可以透過ping、ftp等系統工具檢查)

2.2確認沒有活動的會話連線在資料庫中;(登入資料庫查詢V$SESSION檢視,檢查是否存在USERNAME IS NULL的會話)

SELECT COUNT(*) FROM V$SESSION WHERE USERNAME IS NOT NULL;

3. PRIMARY資料庫處於開啟的狀態,STANDBY資料庫處於MOUNT狀態;(檢查V$DATABASE檢視的OPEN_MODE)

SELECT SWITCHOVER_STATUS FROM V$DATABASE;

4. 確保STANDBY資料庫處於ARCHIVELOG模式;(檢查V$DATABASE檢視的LOG_MODE)

SELECT LOG_MODE FROM V$DATABASE;

2

關閉節點資料庫節點例項2

192.168.1.3

oracle

> srvctl stop instance -d rac -i rac2

3

登Primary資料庫節點1

切換預備操作

192.168.1.2

oracle

查詢會話切換狀態:

SQL> select count(*) from v$session;

SQL> select username, program from v$session where username is not null;

SQL> select switchover_status from v$database;

SWITCHOVER_STATUS

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

TO STANDBY

4

登Primary資料庫節點1

進行切換

192.168.1.2

oracle

執行主庫的SWITCHOVER切換操作,然後關閉資料庫,啟動到NOMOUNT狀態。

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

SQL> shutdown immediate

SQL> startup nomount

oracle

SQL> alter database mount;

SQL> select switchover_status from v$database;

SWITCHOVER_STATUS

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

TO PRIMARY

5

登入STANDBY資料庫

192.168.1.6

oracle

QL> select open_mode, database_role, switchover_status from v$database;

OPEN_MODE DATABASE_ROLE SWITCHOVER_STATUS

---------- ---------------- ----------------MOUNTED PHYSICAL STANDBY TO PRIMARY

SQL> alter database commit to switchover to primary;

Database altered.

SQL> shutdown immediate

SQL> startup

SQL> select open_mode, database_role, switchover_status from v$database;

OPEN_MODE DATABASE_ROLE SWITCHOVER_STATUS

---------- ---------------- ----------------READ WRITE PRIMARY TO STANDBY

6

登陸原Primary資料庫節點1

192.168.1.2

oracle

SQL> alter database recover managed standby database disconnect from session;

切回生產庫(主庫)

序號

操作步驟

IP

使用者名稱

服務或程式

1

DATA GUARD環境是否正常

192.168.1.6

192.168.1.2

oracle

1. 在執行SWITCHOVER操作前,首先確認DATA GUARD環境工作是否正常。

1.1 常規檢查包括:

a) 檢查主庫上V$ARCHIVE_DEST檢視

SELECT * FROM V$ARCHIVE_DEST;

b) 檢查備庫上V$MANAGED_STANDBY檢視

SELECT * FROM V$MANAGED_STANDBY;

c) 檢查主庫和備庫上的V$ARCHIVED_LOG檢視

SELECT * FROM V$ARCHIVED_LOG;

d) 檢查主庫和備庫對應的alert告警日誌中是否存在錯誤。

2. 如果DATA GUARD環境正常,就需要進行SWITCHOVER切換前的常規檢查:

2.1確認主庫和備庫間網路連線通暢;(可以透過ping、ftp等系統工具檢查)

2.2確認沒有活動的會話連線在資料庫中;(登入資料庫查詢V$SESSION檢視,檢查是否存在USERNAME IS NULL的會話)

SELECT COUNT(*) FROM V$SESSION WHERE USERNAME IS NOT NULL;

3. PRIMARY資料庫處於開啟的狀態,STANDBY資料庫處於MOUNT狀態;(檢查V$DATABASE檢視的OPEN_MODE)

SELECT SWITCHOVER_STATUS FROM V$DATABASE;

4. 確保STANDBY資料庫處於ARCHIVELOG模式;(檢查V$DATABASE檢視的LOG_MODE)

SELECT LOG_MODE FROM V$DATABASE;

3

登Primary資料庫

切換預備操作

192.168.1.6

oracle

查詢會話切換狀態:

SQL> select count(*) from v$session;

SQL> select username, program from v$session where username is not null;

SQL> select switchover_status from v$database;

SWITCHOVER_STATUS

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

TO STANDBY

4

登Primary資料庫

進行切換

192.168.1.6

oracle

執行主庫的SWITCHOVER切換操作,然後關閉資料庫,啟動到NOMOUNT狀態。

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

SQL> shutdown immediate

SQL> startup nomount

oracle

SQL> alter database mount;

SQL> select switchover_status from v$database;

SWITCHOVER_STATUS

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

TO PRIMARY

5

登入STANDBY資料庫

192.168.1.2

oracle

QL> select open_mode, database_role, switchover_status from v$database;

OPEN_MODE DATABASE_ROLE SWITCHOVER_STATUS

---------- ---------------- ----------------MOUNTED PHYSICAL STANDBY TO PRIMARY

SQL> alter database commit to switchover to primary;

Database altered.

SQL> shutdown immediate

SQL> startup

SQL> select open_mode, database_role, switchover_status from v$database;

OPEN_MODE DATABASE_ROLE SWITCHOVER_STATUS

---------- ---------------- ----------------READ WRITE PRIMARY TO STANDBY

6

登入Primary資料庫

192.168.1.6

oracle

SQL> alter database recover managed standby database disconnect from session;

7

啟動資料庫節點例項2

192.168.1.3

oracle

$ srvctl start instance -d rac -i rac2

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

相關文章