oracle dataguard 進行switchover測試
很久前測試搭建了dataguard 環境,到今天才抽空做了一次switchover的測試操作,現記錄下測試的經過。
首先,主庫處於open狀態,而備庫則處於mounted 狀態,另外,主庫中先通過“SQL> alter system archive log current;”來強制切換主庫的redo日誌並歸檔。
再檢查主備庫歸檔日誌:
SQL> archive log list;
Database log mode Archive Mode
Automatic archival Enabled
Archive destination USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence 0
Next log sequence to archive 0
Current log sequence 129
主備庫的archive的current log sequence 都應為129,證明主庫產生的歸檔能正常傳送到備庫。
在正常情況下,備庫要通過“alter database recover managed standby database disconnect from session;”來使資料庫處於應用日誌的狀態。
現在開始switchover 操作。
主庫:
檢查資料庫中除了當前會話外,還有沒有其他非系統的活動會話,
SQL> select count(*) from v$session where username is not null
2 ;
COUNT(*)
----------
1
檢查主庫狀態,
SQL> select open_mode,database_role,switchover_status from
v$database;
OPEN_MODE DATABASE_ROLE SWITCHOVER_STATUS
---------- ---------------- --------------------
READ WRITE PRIMARY SESSIONS ACTIVE
本來switchover_status 狀態應該為 TO STANDBY,這裡既然只有一個活動會話sys,則也是可以切換的。
執行主庫switchover切換操作,關閉資料庫,啟動到mount狀態:
SQL> alter database commit to switchover to physical standby;
Database altered.
SQL> shutdown immediate;
ORA-01507: database not mounted
ORACLE instance shut down.
SQL> startup nomount;
ORACLE instance started.
Total System Global Area 1224736768 bytes
Fixed Size 2083560 bytes
Variable Size 352322840 bytes
Database Buffers 855638016 bytes
Redo Buffers 14692352 bytes
SQL> alter database mount standby database;
Database altered.
檢查狀態,資料庫已經處於STANDBY 角色,
SQL> select open_mode,database_role,switchover_status from
v$database;
OPEN_MODE DATABASE_ROLE SWITCHOVER_STATUS
---------- ---------------- --------------------
MOUNTED PHYSICAL STANDBY RECOVERY NEEDED
注:此處的“RECOVERY NEEDED”原本應為"TO PRIMARY" ,但只是因為當前備庫(原主庫)並沒有處於應用日誌狀態,按前述重新執行“alter database recover managed standby database disconnect from session;”。
SQL> select open_mode,database_role,switchover_status from
v$database;
OPEN_MODE DATABASE_ROLE SWITCHOVER_STATUS
---------- ---------------- --------------------
MOUNTED PHYSICAL STANDBY SESSIONS ACTIVE
session active狀態並不影響當前備庫下次切換為主庫。
登陸原備庫操作:
檢查活動會話,
SQL> select count(*) from v$session where username is not null;
COUNT(*)
----------
1
SQL> 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
ORA-01109: database not open
Database dismounted.
ORACLE instance shut down.
SQL> startup
ORACLE instance started.
。。。
Database mounted.
Database opened.
原備庫經已切換成主庫角色,同樣SESSIONS ACTIVE並不影響它下次切換回備庫角色。
SQL> select open_mode,database_role,switchover_status from
v$database;
OPEN_MODE DATABASE_ROLE SWITCHOVER_STATUS
---------- ---------------- --------------------
READ WRITE PRIMARY SESSIONS ACTIVE
在切換的過程中,我們可以做一個小測試來驗證原備庫切換為主庫後資料檔案有否跟原主庫同步:
先在主庫建立一張表,插入資料:
SQL> create table tanlong (c1 number,c2 date);
SQL> insert into tanlong values(1,sysdate);
SQL> select * from tanlong;
C1 C2
---------- ---------
1 10-APR-11
SQL> commit; //記得commit 一下,寫到redo裡。
Commit complete.
再切換日誌,寫歸檔,此時歸檔應該傳送到備庫。
在完成switchover操作後,檢查主庫(原備庫):
SQL> select * from tanlong ;
C1 C2
---------- ---------
1 10-APR-11
證明當它作為備庫時,已經接收並應用了原主庫傳送過來的歸檔,兩邊資料庫的資料是一致的。
至此,完成測試。
最後,學習好的方法。
1,在主備切換測試的時候,開兩個crt視窗,使用“tail -f alert.log” 來同步觀察資料庫操作的資訊。
2,當任何一個庫切換成備庫角色,或者一直擔當備庫角色時,應始終處於應用日誌狀態。(alter database recover managed standby database disconnect from session;)
首先,主庫處於open狀態,而備庫則處於mounted 狀態,另外,主庫中先通過“SQL> alter system archive log current;”來強制切換主庫的redo日誌並歸檔。
再檢查主備庫歸檔日誌:
SQL> archive log list;
Database log mode Archive Mode
Automatic archival Enabled
Archive destination USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence 0
Next log sequence to archive 0
Current log sequence 129
主備庫的archive的current log sequence 都應為129,證明主庫產生的歸檔能正常傳送到備庫。
在正常情況下,備庫要通過“alter database recover managed standby database disconnect from session;”來使資料庫處於應用日誌的狀態。
現在開始switchover 操作。
主庫:
檢查資料庫中除了當前會話外,還有沒有其他非系統的活動會話,
SQL> select count(*) from v$session where username is not null
2 ;
COUNT(*)
----------
1
檢查主庫狀態,
SQL> select open_mode,database_role,switchover_status from
v$database;
OPEN_MODE DATABASE_ROLE SWITCHOVER_STATUS
---------- ---------------- --------------------
READ WRITE PRIMARY SESSIONS ACTIVE
本來switchover_status 狀態應該為 TO STANDBY,這裡既然只有一個活動會話sys,則也是可以切換的。
執行主庫switchover切換操作,關閉資料庫,啟動到mount狀態:
SQL> alter database commit to switchover to physical standby;
Database altered.
SQL> shutdown immediate;
ORA-01507: database not mounted
ORACLE instance shut down.
SQL> startup nomount;
ORACLE instance started.
Total System Global Area 1224736768 bytes
Fixed Size 2083560 bytes
Variable Size 352322840 bytes
Database Buffers 855638016 bytes
Redo Buffers 14692352 bytes
SQL> alter database mount standby database;
Database altered.
檢查狀態,資料庫已經處於STANDBY 角色,
SQL> select open_mode,database_role,switchover_status from
v$database;
OPEN_MODE DATABASE_ROLE SWITCHOVER_STATUS
---------- ---------------- --------------------
MOUNTED PHYSICAL STANDBY RECOVERY NEEDED
注:此處的“RECOVERY NEEDED”原本應為"TO PRIMARY" ,但只是因為當前備庫(原主庫)並沒有處於應用日誌狀態,按前述重新執行“alter database recover managed standby database disconnect from session;”。
SQL> select open_mode,database_role,switchover_status from
v$database;
OPEN_MODE DATABASE_ROLE SWITCHOVER_STATUS
---------- ---------------- --------------------
MOUNTED PHYSICAL STANDBY SESSIONS ACTIVE
session active狀態並不影響當前備庫下次切換為主庫。
登陸原備庫操作:
檢查活動會話,
SQL> select count(*) from v$session where username is not null;
COUNT(*)
----------
1
SQL> 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
ORA-01109: database not open
Database dismounted.
ORACLE instance shut down.
SQL> startup
ORACLE instance started.
。。。
Database mounted.
Database opened.
原備庫經已切換成主庫角色,同樣SESSIONS ACTIVE並不影響它下次切換回備庫角色。
SQL> select open_mode,database_role,switchover_status from
v$database;
OPEN_MODE DATABASE_ROLE SWITCHOVER_STATUS
---------- ---------------- --------------------
READ WRITE PRIMARY SESSIONS ACTIVE
在切換的過程中,我們可以做一個小測試來驗證原備庫切換為主庫後資料檔案有否跟原主庫同步:
先在主庫建立一張表,插入資料:
SQL> create table tanlong (c1 number,c2 date);
SQL> insert into tanlong values(1,sysdate);
SQL> select * from tanlong;
C1 C2
---------- ---------
1 10-APR-11
SQL> commit; //記得commit 一下,寫到redo裡。
Commit complete.
再切換日誌,寫歸檔,此時歸檔應該傳送到備庫。
在完成switchover操作後,檢查主庫(原備庫):
SQL> select * from tanlong ;
C1 C2
---------- ---------
1 10-APR-11
證明當它作為備庫時,已經接收並應用了原主庫傳送過來的歸檔,兩邊資料庫的資料是一致的。
至此,完成測試。
最後,學習好的方法。
1,在主備切換測試的時候,開兩個crt視窗,使用“tail -f alert.log” 來同步觀察資料庫操作的資訊。
2,當任何一個庫切換成備庫角色,或者一直擔當備庫角色時,應始終處於應用日誌狀態。(alter database recover managed standby database disconnect from session;)
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/24582392/viewspace-692179/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle DataGuard 主備切換 (switchover) oracle11gOracle
- Oracle:DG 的 switchoverOracle
- DataGuard---->物理StandBy的角色切換之switchover
- 使用python對oracle進行簡單效能測試PythonOracle
- 【SWINGBENCH】使用SwingBench對Oracle進行壓力測試Oracle
- 【TEST】Oracle19c使用benchmarksql進行效能測試OracleSQL
- 【DATAGUARD】Oracle Dataguard nologging 塊修復Oracle
- MySQL高可用之MHA切換測試(switchover & failover)MySqlAI
- oracle dataguard broker 配置Oracle
- Oracle 11.2.0.4 physical dataguard和snapshot dataguard切換Oracle
- 【DATAGUARD】Oracle Dataguard體系架構詳解Oracle架構
- oracle 19c使用dgmgrl來執行switchover和failover切換OracleAI
- 【DATAGUARD】Oracle19c dataguard新特性及部署Oracle
- Oracle dataguard failover 實戰OracleAI
- Oracle 單機配置DataGuardOracle
- oracle 19c dataguard silent install (oracle 19c dataguard 靜默安裝)Oracle
- 使用PostMan進行API測試PostmanAPI
- postman進行http介面測試PostmanHTTP
- postman工具進行介面測試Postman
- 使用 HTTPie 進行 API 測試HTTPAPI
- 使用Loadrunner進行效能測試
- charles 如何進行介面測試?
- Oracle之11g DataGuardOracle
- Oracle 11.2 DataGuard RAC To RAC搭建Oracle
- Oracle 11g dg switchover切換操作流程Oracle
- fiddler進行修改網路進行弱網測試
- 【DATAGUARD】Oracle Dataguard物理備庫切換最佳實踐(sqlplus)OracleSQL
- 【Dataguard】Oracle多租戶環境對Dataguard的影響Oracle
- android測試常用的adb命令以及進行Monkey測試Android
- Flutter測試(二):在專案中進行 Widget 測試Flutter
- 介面測試怎麼進行,如何做好介面測試
- 使用JUnit進行單元測試
- Postman 如何進行 Websocket 介面測試PostmanWeb
- 使用jest進行單元測試
- 使用 MeterSphere 進行 Dubbo 介面測試
- 從零搭建Xswitch進行測試
- 使用JMeter進行壓力測試JMeter
- 哪些功能需要進行效能測試?
- 使用 Sysbench 進行 Linux 效能測試Linux