DG環境的日常巡檢
目錄
1.2.6、備庫上查看歸檔日志有沒有裂縫(同操作2.5部分類似)9
2.2.3、啟動DG環境的備庫到mount或open狀態12
3.3.2、查看switchover之前主庫的角色和狀態14
3.3.3、查看switchover之前備庫的角色和狀態15
1、DG環境的日常巡檢
1.1、主庫環境檢查
1.1.1、主庫實例啟動狀態檢查
操作命令:
SQL> select instance_name,status from v$instance;
操作結果:
---------------------------------------------------
cs02OPEN
操作說明:如果主庫在對外提供服務,那其實例狀態應一定是OPEN的。
1.1.2、主庫啟動模式檢查
操作命令:
SQL> select name,open_mode from v$database;
操作結果:
------------------ --------------------------
CS02READ WRITE
操作說明:如果主庫在對外提供服務,那其數據庫狀態應一定是READ WRITE的。
1.1.3、主庫DG環境的保護模式檢查
操作位置:主庫
操作命令:
SQL> select database_role, protection_mode, protection_level from v$database;
DATABASE_ROLE PROTECTION_MODE PROTECTION_LEVEL
-------------------------- --------------------------------------------------------------------------
PRIMARY MAXIMUM PERFORMANCE MAXIMUM PERFORMANCE
1.1.4、主庫用於控制日志同步的參數檢查
操作命令:
SQL> show parameter log_archive_dest_2
操作結果:
-------------------------------- ----------- -------------------------------------------------------------------------------------------------------
log_archive_dest_2stringservice=cs01 valid_for=(online_logfiles,primary_role) db_unique_name=cs01
操作說明:
通過該參數設置的網絡服務名,主庫能夠找到該DG環境當中的備庫,通過將主庫的歸檔日志同步到備庫;
查詢結果並沒有看到lgwr/arch、sync/async、affirm/noaffirm的參數設置,說明當前主庫沒有對這三個參數進行設置,當前使用的是默認設置,即:arch、async、noaffirm的設置。
1.1.5、主庫查看是否開啟強制日志功能
操作命令:
SQL> select name,force_logging from v$database;
操作結果:
--------- --------
CS02YES
操作說明:
DG環境下主庫要求必須開啟強制日志功能,如果發現狀態是NO,需要手動執行下面的命令開啟該功能。
SQL> alter database force logging;
1.1.6、主庫上查看設置的歸檔日志路徑是否可用
操作命令:
SQL> col error for a30
SQL> select dest_name,status,error from v$archive_dest;
DEST_NAMESTATUS ERROR
------------------------------------------------- ------------------------------
LOG_ARCHIVE_DEST_1VALID
LOG_ARCHIVE_DEST_2VALID
LOG_ARCHIVE_DEST_3INACTIVE
操作說明:
該視圖用戶查看本地和遠程的歸檔日志路徑是否可用,如果遠程的歸檔日志路徑不可用,在ERROR列會有相應報錯。
1.1.7、主庫上查詢歸檔日志的應用情況
操作命令:
SQL> col name for a50
SQL> select name,SEQUENCE#,APPLIED from v$archived_log order by sequence#;
NAMESEQUENCE# APPLIED
-------------------------------------------------------------- --------------------------
/u01/app/oracle/arch/1_5_886855721.dbf5 NO
cs015 YES
/u01/app/oracle/arch/1_6_886855721.dbf6 NO
cs016 YES
/u01/app/oracle/arch/1_7_886855721.dbf7 NO
cs017 YES
操作說明:
該視圖記錄了歸檔日志的應用情況,由查詢結果可以看出,主庫上的該視圖會同時記錄主庫和同步到備庫的歸檔日志的應用情況。視圖中顯示歸檔到本地路徑的歸檔日志的名字使用的是絕對路徑,並且應用狀態為NO,而同步到遠端備庫上的歸檔日志名字統一都為cs01,並且應用狀態顯示為YES。這說明同步到備庫上的歸檔日志都已經被應用了。
1.1.8、主庫上查看DG環境進程的狀態
操作命令:
SQL> select process,status from v$managed_standby;
操作結果:
------------- ------------
ARCH CLOSING
ARCH CLOSING
ARCH CLOSING
ARCH CLOSING
LNS WRITING
操作說明:
ARCH進程:用於主庫上復制redo log,從而生成歸檔日志,當前狀態為CLOSING表示該進程目前正在復制
redo log,我們在參數文件中設置了該進程的數量上限是4個。
LNS進程:用於在主庫上將主庫的歸檔日志同步到備庫上,將歸檔日志投遞給備庫上的RFS進程。
1.1.9、主庫上查看DG的狀態信息
操作命令:
SQL> select message_num,message from v$dataguard_status;
1.1.10、主庫SWITCH OVER角色和狀態的檢查
操作命令:
SQL> select name,database_role,switchover_status from v$database;
操作結果:
NAMEDATABASE_ROLE SWITCHOVER_STATUS
------------------ ------------------------- --------------------------------
CS02PRIMARY TO STANDBY
操作說明:
如果主庫的切換狀態顯示為SESSION ACTIVED狀態也是正常的。
1.2、備庫環境檢查
1.2.1、備庫實例的啟動狀態檢查
操作命令:
SQL> select instance_name,status from v$instance;
操作結果:
---------------------------------------------------
cs01MOUNTED
操作說明:
一般備庫會被啟動到MOUNT狀態,不過根據具體需要,在確認備庫沒的應用歸檔日志進程沒有啟動的前提下也可以將其啟動到OPEN狀態,執行命令:alter database open;
1.2.2、備庫啟動模式檢查
操作命令:
SQL> select name,open_mode from v$database;
操作結果:
------------------ --------------------------
CS01READ ONLY
操作說明:
發現是read only模式,說明備庫當前並沒有開啟歸檔日志應用進程,這個時候我們可以手動開啟該進程,執行下面的命令:
SQL> alter database recover managed standby database disconnect from session;
如果發現當前數據庫的打開模式是read only with apply我們也可以手工關閉歸檔應用程序,執行下面的命令:
SQL> alter database recover managed standby database cancel;
重新查看備庫的啟動模式,執行下面的命令:
SQL> select name,open_mode from v$database;
操作結果:
------------------ ----------------------------------
CS01READ ONLY WITH APPLY
1.2.3、備庫DG環境的保護模式檢查
執行命令:
SQL> select database_role, protection_mode, protection_level from v$database;
SQL> set linesize 160
DATABASE_ROLEPROTECTION_MODEPROTECTION_LEVEL
------------------------------------------------------------------- -----------------------------------
PHYSICAL STANDBY MAXIMUM PERFORMANCEMAXIMUM PERFORMANCE
1.2.4、備庫用於控制日志同步的參數檢查
操作命令:
SQL> show parameter log_archive_dest_2
操作結果:
-------------------------------- ----------- -------------------------------------------------------------------------------------------------------
log_archive_dest_2stringservice=cs02 valid_for=(online_logfiles,primary_role) db_unique_name=cs02
1.2.5、備庫上查看同步過來的歸檔日志的應用情況
操作命令:
SQL> col name for a50
SQL> select name,SEQUENCE#,APPLIED from v$archived_log order by sequence#;
操作結果:
-------------------------------------------------------------------------------- ------------------
/u01/app/oracle/arch/1_5_886855721.dbf5 YES
/u01/app/oracle/arch/1_6_886855721.dbf6 YES
/u01/app/oracle/arch/1_7_886855721.dbf7 YES
操作說明:
如果發現備庫歸檔日志的編號不連續,則需要到主庫去對照主庫的歸檔日志編號,找到主庫上已經歸檔但卻沒有同步到備庫上的那些歸檔日志手動拷貝過來,並將其注冊到備庫內,注冊歸檔日志的命令如下所示:
SQL> alter database register physical logfile '/opt/arch/歸檔文件名’
然后再重新開啟備庫的應用歸檔日志進程,執行下面的命令即可:
SQL> alter database recover automatic standby database;
1.2.6、備庫上查看歸檔日志有沒有裂縫(同操作2.5部分類似)
操作命令:
SQL> select * from v$archive_gap;
操作說明:
如果DG環境日志同步正常,則不會查到任何記錄,如果查出結果,則說明目前的DG環境歸檔日志有裂縫,需要執行2.5部分的操作去解決。
1.2.7、備庫上查看DG環境特有進程的狀態
操作命令:
SQL> select process,status from v$managed_standby;
操作結果:
------------------ ------------------------
ARCHCLOSING
ARCHCLOSING
ARCHCONNECTED
ARCHCLOSING
RFSIDLE
RFSIDLE
RFSIDLE
RFSIDLE
MRP0WAIT_FOR_LOG
操作說明:
FRS進程:用於備庫接收從主庫LNS進程或ARCH進程投遞過來的歸檔日志。
ARCH:用於復制從主庫上同步過來的歸檔日志。
MRP0:用於應用歸檔日志。
1.2.8、備庫上查看DG環境的狀態信息
操作命令:
SQL> select message_num,message from v$dataguard_status;
1.2.9、備庫SWITCH OVER角色和狀態的檢查
操作命令:
SQL> select name,database_role,switchover_status from v$database;
操作結果:
NAMEDATABASE_ROLE SWITCHOVER_STATUS
------------------ ------------------------- --------------------------------
CS02PHYSICAL STANDBY NOT ALLOWED
操作說明:
如果主庫的切換狀態顯示為TO PRIMARY狀態也是正常的。
對於Data Guard環境的日常運維工作,其核心就在於確保主庫上的日志能通正常同步到備庫上,並能夠被備庫及時的應用。這些信息在主備數據庫的告警日志中都會有所體現,所有要經常關注主庫和備庫的告警日志的內容。做到發現報錯,及時處理,將會對數據庫運行造成不良影響的因素消滅在萌芽狀態...
2、DG環境的啟動與關閉
2.1、DG環境的關閉
2.1.1、檢查DG環境主備庫的日志使用情況
操作位置:主庫&備庫
操作命令:
操作結果:
主庫與備庫當前使用的日志編號相同
2.1.2、停主庫的監聽程序
操作命令:
2.1.3、停備庫的監聽程序
操作命令:
2.1.4、關閉主數據庫
操作命令:
2.1.5、查看備庫的開啟模式
操作命令:
SQL> select open_mode from v$database;
如果發現當前數據庫是read only with apply模式,則需要執行下面命令關閉歸檔日志應用程序,如果發現是read only模式則直接關閉數據庫即可。正常情況下備庫應該時刻處於應用歸檔日志的模式。
2.1.6、關閉備數據庫的歸檔應用程序
操作命令:
SQL> alter database recover managed standby database cancel;
2.1.7、關閉備數據庫
操作命令:
這樣,整個Data Guard環境就算是完整的關閉掉了...
2.2、DG環境的啟動
2.2.1、啟動DG環境的主庫
操作命令:
[oracle@cs02 ~]$ sqlplus / as sysdba
SQL> startup;
SQL> select status from v$instance;
2.2.2、啟動主庫的監聽程序
操作命令:
[oracle@cs02 ~]$ lsnrctl status
[oracle@cs02 ~]$ lsnrctl start
2.2.3、啟動DG環境的備庫到mount或open狀態
操作命令:
[oracle@cs01 ~]$ sqlplus / as sysdba
SQL> startup;
或SQL> startup mount;
2.2.4、啟動備庫的監聽程序
操作命令:
[oracle@cs01 ~]$ lsnrctl status
[oracle@cs01 ~]$ lsnrctl start
2.2.5、主庫切換歸檔日志
操作命令:
SQL> alter system archive log current;
2.2.6、查看備庫是否有新應用過來的日志
操作命令:
SQL> select sequence#,applied from v$archived_log;
2.2.7、備庫上開啟歸檔日志應用進程
操作命令:
SQL> alter database recover managed standby database disconnect from session;
2.2.8、主庫與備庫驗證當前redo log
操作位置:主庫&備庫
操作命令:
如果此時發現主庫與備庫當前使用的redo日志的編號一致則說明重啟的DG環境一切正常。
這樣,這個Data Guard環境就算是去正常的啟動了...
3、DG環境的主備切換-SWITCHOVER
3.1、SWITCHOVER切換的特點
一般SWITCHOVER切換都是計划中的切換,特點是在切換后,不會丟失任何的數據,而且這個過程是可逆的,整個DATA GUARD環境不會被破壞,原來DATA GUARD環境中的所有物理和邏輯STANDBY都可以繼續工作。
3.2、SWITCHOVER切換的注意事項
1)確認主庫和從庫間網絡連接通暢;
2)確認沒有活動的會話連接在數據庫中;
3)PRIMARY數據庫處於打開的狀態,STANDBY數據庫處於MOUNT狀態;
4)確保STANDBY數據庫處於ARCHIVELOG模式;
5)如果設置了REDO應用的延遲,那么將這個設置去掉;
6)確保配置了主庫和從庫的初始化參數,使得切換完成后,DATA GUARD機制可以順利的運行。
3.3、SWITCHOVER的切換操作流程
3.3.1、主庫與備庫運行狀態確認
在執行主備SWITCH OVER之前,需要首先確認主庫與備庫的實例以及數據庫的啟動狀態,確保主庫與備庫滿足下面的要求:
數據庫 |
實例啟動狀態 |
數據庫啟動模式 |
主庫-CS02 |
open |
read write |
備庫-CS01 |
mount/open |
mount with apply/read only with apply |
可以通過如下命令進行查看:
SQL> select status from v$instance;
SQL> select open_mode from v$database;
3.3.2、查看switchover之前主庫的角色和狀態
SQL> select name,database_role,switchover_status from v$database;
操作結果:
NAMEDATABASE_ROLESWITCHOVER_STATUS
--------- -------------------------------------------------------
CS02PRIMARYSESSIONS ACTIVE
操作說明:
1)如果是第一次做主備的SWITCH OVER操作,那么主庫的SWITCHOVER_STATUS狀態會是SESSIONS ACTIVE狀態。表示當前主庫還有活動的會話連接,屬於正常的主庫准備切換之前的狀態。
2)如果之前已經做過主備的SWITCH OVER操作,那么主庫的SWITCHOVER_STATUS狀態會是TO_STANDBY狀態,表明當前主庫已經准備好隨時切換成備庫了。
3.3.3、查看switchover之前備庫的角色和狀態
操作命令:
SQL> select name,database_role,switchover_status from v$database;
NAMEDATABASE_ROLESWITCHOVER_STATUS
--------- ------------------------------------------------------------
CS02PHYSICAL STANDBY TO PRIMARY
操作說明:
1)如果是第一次做主庫的SWITCH OVER操作,那么備庫的SWITCHOVER_STATUS狀態會是TO_PRIMARY狀態。表明備庫已經隨時可以切換成主庫了。
2)如果之前已經做過主備的SWITCH OVER操作,在主庫沒有發出要做主備切換的操作之前(即:執行主庫切成備庫的那條命令),備庫的SWITCHOVER_STATUS狀態會是NOT ALLOWED,屬於正常狀態。
3.3.4、將主庫切換成備庫
操作命令:
SQL> alter database commit to switchover to physical standby with session shutdown;
操作說明:此時主庫會被自動關閉掉。
3.3.5、將備庫啟動到mount狀態
1)關閉備庫的歸檔日志應用進程
SQL> alter database recover managed standby database cancel;
2)關閉備庫並啟動到mount狀態
SQL> startup mount;
3)查看備庫的角色狀態
SQL> select name,database_role,switchover_status from v$database;
備注:如果之前查看備庫的切換狀態是NOT ALLOWED,那么由於現在在主庫上已經做了切換到備庫的操作,該操作的信息已經發送到了備庫上,所以備庫此時的切換狀態會變成TO PRIMARY。
3.3.6、主庫啟動到mount狀態
1)主庫啟動到nomount狀態
2)主庫以備庫的身份啟動到mount狀態
SQL> alter database mount standby database;
3)主庫以備庫的身份開啟歸檔日志應用進程
SQL> alter database recover managed standby database disconnect from session;
4)查看主庫現在在DG環境中的角色
SQL> select name,database_role,switchover_status from v$database;
NAMEDATABASE_ROLESWITCHOVER_STATUS
------------------ -------------------------------- ----------------------------------------
CS02PHYSICAL STANDBYTO PRIMARY
至此,主庫的切換相關操作已經完成,主庫角色已經切換成了備庫,切換狀態變成了TO PRIMARY。
3.3.7、備庫切換成主庫
1)備庫開啟歸檔日志應用進程
SQL> alter database recover managed standby database disconnect from session;
2)查看備庫當前在DG環境中的角色
SQL> select name,database_role,switchover_status from v$database;
NAMEDATABASE_ROLE SWITCHOVER_STATUS
--------- -----------------------------------------------------------
CS02PHYSICAL STANDBY TO PRIMARY
備注:在開啟應用歸檔日志進程之前,備庫的切換狀是NOT ALLOWED。在開啟了歸檔日志應用進程之后,發現現在備庫的角色狀態變成了TO PRIMARY
3)備庫切換成主庫
SQL> alter database commit to switchover to primary;
4)切換后重新查看備庫在DG環境中的角色和狀態
SQL> select name,database_role,switchover_status from v$database;
NAMEDATABASE_ROLESWITCHOVER_STATUS
------------ ------------------------- -------------------------------
CS02PRIMARY NOT ALLOWED
4)關閉備庫
5)啟動備庫
備注:查看當前備庫的SWITCH OVER狀態,這個時候可能會出現RESOLVABLE GAP的狀態
6)切換備庫的redo log
SQL> alter system switch logfile;
備注:查看當前備庫的SWITCH OVER狀態,這個時候可能會出現RESOLVABLE GAP的狀態,再等一會就好了。
7)查看備庫當前的切換狀態
SQL> select name,database_role,switchover_status from v$database;
NAMEDATABASE_ROLESWITCHOVER_STATUS
--------- ------------------------ --------------------------------
CS02PRIMARYSESSIONS ACTIVE
發現備庫已經成功切換成主庫了,並且數據庫中存在活動的會話...
3.3.8、檢查切換后主庫與備庫的日志編號
操作位置:主庫&備庫
操作命令:
如果確認切換之后主庫與備庫的當前日志編號一致,則說明主備切換完成。可以在主庫上做切換日志操作,做進一步的驗證。
操作命令:
SQL> alter system switch logfile;
如果切換日志之后主備兩端的日志編號依舊一致則說明本次主備的SWITCH OVER順利完成。
至此,我們的主備SWITCH OVER操作就算是順利的完成了...
About Me
...............................................................................................................................
● 本文作者:小麥苗,只專注於數據庫的技術,更注重技術的運用
● 本文在itpub(http://blog.itpub.net/26736162)、博客園(http://www.cnblogs.com/lhrbest)和個人微信公眾號(xiaomaimiaolhr)上有同步更新
● 本文itpub地址:http://blog.itpub.net/26736162/abstract/1/
● 本文博客園地址:http://www.cnblogs.com/lhrbest
● 本文pdf版及小麥苗雲盤地址:http://blog.itpub.net/26736162/viewspace-1624453/
● 數據庫筆試面試題庫及解答:http://blog.itpub.net/26736162/viewspace-2134706/
● QQ群:230161599 微信群:私聊
● 聯系我請加QQ好友(646634621),注明添加緣由
● 於 2017-06-02 09:00 ~ 2017-06-30 22:00 在魔都完成
● 文章內容來源於小麥苗的學習筆記,部分整理自網絡,若有侵權或不當之處還請諒解
● 版權所有,歡迎分享本文,轉載請保留出處
...............................................................................................................................
拿起手機使用微信客戶端掃描下邊的左邊圖片來關注小麥苗的微信公眾號:xiaomaimiaolhr,掃描右邊的二維碼加入小麥苗的QQ群,學習最實用的數據庫技術。
![]()