RAC環境STANDBY的SWITCHOVER切換
介紹一下RAC環境下STANDBY資料庫的SWITCHOVER切換。
PRIMARY資料庫和STANDBY資料庫採用的都是RAC 11.1.0.6 for Solaris10 sparc,共享儲存PRIMARY資料庫採用VOLUMN CLUSTER MANAGER,而STANDBY資料庫使用ASM。
STANDBY資料庫環境已經建立完成,下面準備實施SWITCHOVER切換:
SWITCHOVER切換是計劃中的切換,在切換後不會丟失任何的資料,而且過程可逆,整個DATA GUARD環境不會被破壞,原來DATA GUARD環境中的所有物理和邏輯STANDBY都可以繼續工作。
在進行DATA GUARD的物理STANDBY切換前需要注意:
確認主庫和從庫間網路連線通暢;
確認沒有活動的會話連線在資料庫中;
PRIMARY資料庫處於開啟的狀態,STANDBY資料庫處於MOUNT狀態;
確保STANDBY資料庫處於ARCHIVELOG模式;
如果設定了REDO應用的延遲,那麼將這個設定去掉;
確保配置了主庫和從庫的初始化引數,使得切換完成後,DATA GUARD機制可以順利的執行。
檢查主資料庫,確保所有的會話全部斷開:
SQL> select inst_id,
2 username,
3 program,
4 module
5 from gv$session
6 where username is not null;
INST_ID USERNAME PROGRAM MODULE
---------- --------------- ------------------------------ ------------------------------
1 SYS sqlplus@newtrade1 (TNS V1-V3) sqlplus@newtrade1 (TNS V1-V3)
1 SYSMAN OMS OEM.SystemPool
1 SYSMAN OMS OEM.DefaultPool
1 SYS oracle@newtrade1 (PZ99) sqlplus@newtrade1 (TNS V1-V3)
1 SYS racgimon@newtrade1 (TNS V1-V3) racgimon@newtrade1 (TNS V1-V3)
1 SYS racgimon@newtrade1 (TNS V1-V3) racgimon@newtrade1 (TNS V1-V3)
1 SYSMAN OMS OEM.SystemPool
1 SYS racgimon@newtrade1 (TNS V1-V3) racgimon@newtrade1 (TNS V1-V3)
1 DBSNMP emagent@newtrade1 (TNS V1-V3) emagent@newtrade1 (TNS V1-V3)
1 DBSNMP emagent@newtrade1 (TNS V1-V3) emagent@newtrade1 (TNS V1-V3)
1 SYS racgimon@newtrade1 (TNS V1-V3) racgimon@newtrade1 (TNS V1-V3)
2 SYS sqlplus@newtrade2 (TNS V1-V3) sqlplus@newtrade2 (TNS V1-V3)
2 SYS racgimon@newtrade2 (TNS V1-V3) racgimon@newtrade2 (TNS V1-V3)
2 SYS racgimon@newtrade2 (TNS V1-V3) racgimon@newtrade2 (TNS V1-V3)
2 SYSMAN OMS OEM.DefaultPool
2 SYSMAN OMS OEM.BoundedPool
2 SYS oracle@newtrade2 (PZ99) sqlplus@newtrade1 (TNS V1-V3)
2 SYS racgimon@newtrade2 (TNS V1-V3) racgimon@newtrade2 (TNS V1-V3)
2 SYSMAN OMS OEM.SystemPool
已選擇19行。
上面的sqlplus程式是當前使用者連線,racgimon程式是檢測RAC環境的,也沒有關係,需要關閉的是SYSMAN使用者的連線,可以透過emctl命令進行關閉。
bash-3.00$ emctl stop dbconsole
Oracle Enterprise Manager 11g Database Control Release 11.1.0.6.0
Copyright (c) 1996, 2007 Oracle Corporation. All rights reserved.
Stopping Oracle Enterprise Manager 11g Database Control ...
... Stopped.
對於RAC資料庫來說,切換的時候只能保留一個例項,其他的例項必須關閉:
SQL> select instance_name from v$instance;
INSTANCE_NAME
----------------
rac11g2
SQL> select name,
2 open_mode,
3 database_role,
4 guard_status,
5 db_unique_name,
6 primary_db_unique_name
7 from v$database;
NAME OPEN_MODE DATABASE_ROLE GUARD_S DB_UNIQUE_NAME PRIMARY_DB_UNIQUE_NAME
--------- ---------- ---------------- ------- --------------- -------------------------
RAC11G READ WRITE PRIMARY NONE rac11g
SQL> shutdown immediate
資料庫已經關閉。
已經解除安裝資料庫。
ORACLE 例程已經關閉。
下面再次檢查主資料庫:
SQL> select instance_name from gv$instance;
INSTANCE_NAME
----------------
rac11g1
SQL> select name, switchover_status from v$database;
NAME SWITCHOVER_STATUS
--------- --------------------
RAC11G SESSIONS ACTIVE
SQL> select inst_id,
2 username,
3 program,
4 module
5 from gv$session
6 where username is not null;
INST_ID USERNAME PROGRAM MODULE
---------- --------------- ------------------------------ ------------------------------
1 SYS sqlplus@newtrade1 (TNS V1-V3) sqlplus@newtrade1 (TNS V1-V3)
1 SYS racgimon@newtrade1 (TNS V1-V3) racgimon@newtrade1 (TNS V1-V3)
1 SYS racgimon@newtrade1 (TNS V1-V3) racgimon@newtrade1 (TNS V1-V3)
1 SYS racgimon@newtrade1 (TNS V1-V3) racgimon@newtrade1 (TNS V1-V3)
1 SYS racgimon@newtrade1 (TNS V1-V3) racgimon@newtrade1 (TNS V1-V3)
現在主庫只剩下一個例項了,雖然資料庫的狀態仍然是SESSIONS ACTIVE,但是會話中只有racgimon程式和當前的sqlplus程式,已經可以進行切換了。
下面檢查STANDBY資料庫:
bash-3.00$ sqlplus "/ as sysdba"
SQL*Plus: Release 11.1.0.6.0 - Production on 星期四 9月 11 14:32:08 2008
Copyright (c) 1982, 2007, Oracle. All rights reserved.
連線到:
Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - 64bit Production
With the Partitioning, Real Application Clusters, OLAP, Data Mining
and Real Application Testing options
SQL> select instance_name from v$instance;
INSTANCE_NAME
----------------
rac11g2
SQL> select name,
2 open_mode,
3 database_role,
4 guard_status,
5 db_unique_name,
6 primary_db_unique_name
7 from v$database;
NAME OPEN_MODE DATABASE_ROLE GUARD_S DB_UNIQUE_NAME PRIMARY_DB_UNIQUE_NAME
--------- ---------- ---------------- ------- --------------- -------------------------
RAC11G READ ONLY PHYSICAL STANDBY NONE rac11g_s rac11g
SQL> shutdown immediate
資料庫已經關閉。
已經解除安裝資料庫。
ORACLE 例程已經關閉。
關閉例項二之後,將例項一取消應用日誌,置於MOUNT狀態下:
SQL> select instance_name from gv$instance;
INSTANCE_NAME
----------------
rac11g1
SQL> shutdown immediate
資料庫已經關閉。
已經解除安裝資料庫。
ORACLE 例程已經關閉。
SQL> startup mount
ORACLE 例程已經啟動。
Total System Global Area 1.7108E+10 bytes
Fixed Size 2101632 bytes
Variable Size 3344420480 bytes
Database Buffers 1.3757E+10 bytes
Redo Buffers 4431872 bytes
資料庫裝載完畢。
下面可以開始正式切換,首先登陸到PRIMARY資料庫:
SQL> alter database commit to switchover to physical standby with session shutdown;
資料庫已更改。
SQL> shutdown immediate
ORA-01507: 未裝載資料庫
ORACLE 例程已經關閉。
SQL> startup mount
ORACLE 例程已經啟動。
Total System Global Area 1.7108E+10 bytes
Fixed Size 2101632 bytes
Variable Size 3545747072 bytes
Database Buffers 1.3556E+10 bytes
Redo Buffers 4431872 bytes
資料庫裝載完畢。
SQL> select switchover_status from v$database;
SWITCHOVER_STATUS
--------------------
TO PRIMARY
下面在STANDBY資料庫執行:
SQL> select switchover_status from v$database;
SWITCHOVER_STATUS
--------------------
SWITCHOVER PENDING
SQL> alter database commit to switchover to primary;
alter database commit to switchover to primary
*
第 1 行出現錯誤:
ORA-16139: 需要介質恢復
由於RAC環境的特殊性,造成了這個問題,下面只需要執行一下RECOVER MANAGED STANDBY DATABASE語句,確保所有的日誌都已經應用就可以了:
SQL> alter database recover managed standby database disconnect from session;
資料庫已更改。
SQL> select sequence#, thread#, name, applied from v$archived_log;
SEQUENCE# THREAD# NAME APP
---------- ---------- ------------------------------------------------------------ ---
533 1 +DATA/rac11g/1_533_660235173.dbf YES
198 2 +DATA/rac11g/2_198_660235173.dbf YES
532 1 +DATA/rac11g/1_532_660235173.dbf YES
199 2 +DATA/rac11g/2_199_660235173.dbf YES
534 1 +DATA/rac11g/1_534_660235173.dbf YES
535 1 +DATA/rac11g/1_535_660235173.dbf YES
536 1 +DATA/rac11g/1_536_660235173.dbf YES
537 1 +DATA/rac11g/1_537_660235173.dbf YES
538 1 +DATA/rac11g/1_538_660235173.dbf YES
539 1 +DATA/rac11g/1_539_660235173.dbf YES
540 1 +DATA/rac11g/1_540_660235173.dbf YES
541 1 +DATA/rac11g/1_541_660235173.dbf YES
200 2 +DATA/rac11g/2_200_660235173.dbf YES
542 1 +DATA/rac11g/1_542_660235173.dbf YES
201 2 +DATA/rac11g/2_201_660235173.dbf YES
543 1 +DATA/rac11g/1_543_660235173.dbf YES
202 2 +DATA/rac11g/2_202_660235173.dbf YES
203 2 +DATA/rac11g/2_203_660235173.dbf YES
204 2 +DATA/rac11g/2_204_660235173.dbf YES
205 2 +DATA/rac11g/2_205_660235173.dbf YES
544 1 +DATA/rac11g/1_544_660235173.dbf YES
207 2 +DATA/rac11g/2_207_660235173.dbf YES
206 2 +DATA/rac11g/2_206_660235173.dbf YES
545 1 +DATA/rac11g/1_545_660235173.dbf YES
546 1 +DATA/rac11g/1_546_660235173.dbf YES
547 1 +DATA/rac11g/1_547_660235173.dbf YES
已選擇26行。
SQL> alter database recover managed standby database cancel;
alter database recover managed standby database cancel
*
第 1 行出現錯誤:
ORA-16136: 受管備用恢復未啟用
SQL> select switchover_status from v$database;
SWITCHOVER_STATUS
--------------------
TO PRIMARY
Oracle應用了所有日誌後,自動停止了恢復,且此時資料庫已經變為TO PRIMARY狀態,下面就可以切換到PRIMARY了:
SQL> alter database commit to switchover to primary;
資料庫已更改。
SQL> alter database open;
資料庫已更改。
下面回到原來的PRIMARY資料庫,也就是切換後的STANDBY資料庫:
SQL> select instance_name, status from v$instance;
INSTANCE_NAME STATUS
---------------- ------------
rac11g1 MOUNTED
SQL> select name,
2 open_mode,
3 database_role,
4 guard_status,
5 db_unique_name,
6 primary_db_unique_name
7 from v$database;
NAME OPEN_MODE DATABASE_ROLE GUARD_S DB_UNIQUE_NAME PRIMARY_DB_UNIQUE_NAME
--------- ---------- ---------------- ------- -------------------- ----------------------
RAC11G MOUNTED PHYSICAL STANDBY NONE rac11g rac11g_s
SQL> alter database recover managed standby database disconnect from session;
資料庫已更改。
至此SWITCHOVER切換已經完成,檢查一下遠端的歸檔能否應用到本地環境即可。
首先啟動例項2,執行日誌的切換:
SQL> startup
ORACLE 例程已經啟動。
Total System Global Area 1.7108E+10 bytes
Fixed Size 2101632 bytes
Variable Size 3478638208 bytes
Database Buffers 1.3623E+10 bytes
Redo Buffers 4431872 bytes
資料庫裝載完畢。
資料庫已經開啟。
SQL> select instance_name from v$instance;
INSTANCE_NAME
----------------
rac11g2
SQL> select name,
2 open_mode,
3 database_role,
4 guard_status,
5 db_unique_name,
6 primary_db_unique_name
7 from v$database;
NAME OPEN_MODE DATABASE_ROLE GUARD_S DB_UNIQUE_NAME PRIMARY_DB_UNIQUE_NAME
--------- ---------- ---------------- ------- --------------- -------------------------
RAC11G READ WRITE PRIMARY NONE rac11g_s rac11g
SQL> select group#, thread#, sequence#, status from v$log;
GROUP# THREAD# SEQUENCE# STATUS
---------- ---------- ---------- ----------------
1 1 548 INACTIVE
2 1 549 CURRENT
3 2 208 INACTIVE
4 2 209 CURRENT
SQL> alter system archive log current;
系統已更改。
SQL> select group#, thread#, sequence#, status from v$log;
GROUP# THREAD# SEQUENCE# STATUS
---------- ---------- ---------- ----------------
1 1 550 CURRENT
2 1 549 ACTIVE
3 2 210 CURRENT
4 2 209 ACTIVE
下面檢查新的STANDBY資料庫是否可以正常接收歸檔:
SQL> select sequence#, thread#, name, applied from v$archived_log
2 where (thread# = 1 and sequence# = 549)
3 or (thread# = 2 and sequence# = 209);
SEQUENCE# THREAD# NAME APP
---------- ---------- --------------------------------------------------------------- ---
209 2 /data/oracle/oradata/rac11g/archivelog/2_209_660235173.dbf YES
549 1 /data/oracle/oradata/rac11g/archivelog/1_549_660235173.dbf NO
至此SWITCHOVER切換完成。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4227/viewspace-611058/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- DataGuard---->物理StandBy的角色切換之switchover
- 含有replication環境的sqlserver切換到standbySQLServer
- pycharm切換conda環境PyCharm
- openGauss主備切換之switchover與failoverAI
- 【DG】Data Guard主備庫Switchover切換
- jenkins動態切換環境Jenkins
- Oracle 11g dg switchover切換操作流程Oracle
- jupyter notebook中 切換不同的Python環境Python
- RAC的VIP切換測試
- MySQL高可用之MHA切換測試(switchover & failover)MySqlAI
- Oracle DataGuard 主備切換 (switchover) oracle11gOracle
- window環境下安裝和切換兩個python環境Python
- Homestead 環境中 PHP 版本快速切換PHP
- vue 構建環境切換指令碼Vue指令碼
- Mac環境下WingIDE切換python版本MacIDEPython
- 【Linux】gnome桌面環境切換KDE PlasmaLinuxASM
- app 測試環境切換問題APP
- webpack介面環境切換的配置-超簡單Web
- Pytest 如何使用切換被測試環境
- (全)Python 的虛擬環境構建和jupyter notebook 中虛擬環境切換Python
- Oracle RAC DG手動切換Oracle
- RAC環境修改spfile的位置
- RAC+單例項DG的切換單例
- Physical Standby Switchover_status Showing Not Allowed. (Doc ID 1392763.1)
- Nacos 解決 laravel 多環境下配置切換Laravel
- 使用maven的profile切換專案各環境的引數Maven
- oracle 19c使用dgmgrl來執行switchover和failover切換OracleAI
- 深圳java培訓:SpringBoot的yml配置及多環境切換JavaSpring Boot
- 關於使用springboot的application.yml切換dev配置環境Spring BootAPPdev
- yml檔案中使用profile配置切換多環境
- Oracle RAC 環境下的連線管理Oracle
- KingbaseES RAC部署案例之---SAN環境構建RAC
- [小白工具書]一行命令切換本地Python環境Python
- 一鍵快速切換開發環境以及多渠道打包開發環境
- ORACLE 12C DATAGUARD環境搭建和主從切換Oracle
- 【原創】vs2022配置切換多個ollvm環境LVM
- 生產環境中如何切換MySQL儲存引擎GAMySql儲存引擎
- 【dgmgrl】使用dgmgrl做switchover切換報錯ORA-16501, ORA-16625等
- PyCharm的本地終端,無法進入、啟用、切換conda環境PyCharm