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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- DataGuard SwitchOver
- 【DataGuard】使用Grid Control對Oracle物理Data Guard進行Switchover切換Oracle
- Oracle DataGuard switchover切換一例Oracle
- 【DataGuard】Oracle 11g physical standby switchoverOracle
- DataGuard:Physical Standby Switchover
- oracle11g dataguard完全手冊--switchoverOracle
- Oracle 11g Active Dataguard Switchover實驗Oracle
- Oracle DataGuard 主備切換 (switchover) oracle11gOracle
- 【DataGuard】Oracle 11g DataGuard 角色轉換(一)物理備庫SwitchoverOracle
- dataguard角色轉換—switchover
- Dataguard Physical Standy Switchover
- 10g_dataguard_switchover
- DataGuard:Logical Standby Switchover
- Dataguard物理Standby Switchover 角色轉換
- ORACLE 11g dataguard系列,手工切換測試Oracle
- 【DATAGUARD】物理dg的switchover切換(五)
- dataguard switchover & failover steps (rac)AI
- Oracle 10g DataGuard物理主備切換-switchover與failoverOracle 10gAI
- 使用python對oracle進行簡單效能測試PythonOracle
- 【TEST】Oracle19c使用benchmarksql進行效能測試OracleSQL
- 備庫的切換狀態為SWITCHOVER PENDING時進行dataguard主備庫角色切換
- Oracle進行模擬測試資料的一個例子Oracle
- 使用 HTTPie 進行 API 測試HTTPAPI
- 使用PostMan進行API測試PostmanAPI
- postman進行http介面測試PostmanHTTP
- webbench進行壓力測試Web
- postman工具進行介面測試Postman
- 介面測試怎麼進行,如何做好介面測試
- DataGuard---->物理StandBy的角色切換之switchover
- dataguard主備switchover互切實驗及理解
- dataguard switchover的自動化指令碼實現指令碼
- 使用 MeterSphere 進行 Dubbo 介面測試
- 使用JUnit進行單元測試
- 使用Wiremock進行整合測試 - kubilayREMMock
- 使用Jmeter進行http介面測試JMeterHTTP
- 【java】使用jprofiler進行效能測試Java
- 執行database replay進行升級測試Database
- fiddler進行修改網路進行弱網測試