ORACLE物理DG日常管理
1、DG環境的日常巡檢?
1.1、主庫環境檢查?
1.1.1、主庫實例啟動狀態檢查?
操作命令:?
SQL> select instance_name,status from v$instance;?
操作結果:?
INSTANCE_NAME ?STATUS?
--------------------------- ------------------------
cs02 ? ? OPEN?
操作說明: 如果主庫在對外提供服務,那其實例狀態應一定是OPEN的。?
1.1.2、主庫啟動模式檢查?
操作命令:?
SQL> select name,open_mode from v$database;?
操作結果:?
NAME ? OPEN_MODE?
------------------ ?--------------------------?
CS02 ? READ 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;?
操作結果:?
NAME ? ? TYPE ? VALUE?
-------------------------------- ----------- ----------------------------------------------
log_archive_dest_2 ?string service=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;?
操作結果:?
NAME ? ? ?FOR?
--------- ?--------
CS02 ? ? YES?
操作說明: ?
? ?DG環境下主庫要求必須開啟強制日志功能,如果發現狀態是NO,需要手動執行下面的命令開啟該功能。?
SQL> alter database force logging;
1.1.6、主庫上查看設置的歸檔日志路徑是否可用?
操作命令:?
SQL> col dest_name for a30?
SQL> col error for a30?
SQL> select dest_name,status,error from v$archive_dest;?
操作結果:?
DEST_NAME ? ? ? ? ? ?STATUS ? ? ? ? ? ? ?ERROR?
---------------------------------- --------------- ?------------------------------ LOG_ARCHIVE_DEST_1 ? ? ?VALID LOG_ARCHIVE_DEST_2 ?VALID LOG_ARCHIVE_DEST_3 ?INACTIVE?
操作說明: ?
? ?該視圖用戶查看本地和遠程的歸檔日志路徑是否可用,如果遠程的歸檔日志路徑不可用,在ERROR列會有相應報錯。
1.1.7、主庫上查詢歸檔日志的應用情況?
操作命令:?
SQL> set pagesize 50; SQL> col name for a50?
SQL> select name,SEQUENCE#,APPLIED from v$archived_log order by sequence#;?
操作結果:?
NAME ? ? ? ? ? ? ? ? ? ? ? ?SEQUENCE# ?APPLIED?
-------------------------------------------------------------- ?----------------- -----
/u01/app/oracle/arch/1_5_886855721.dbf ?5 ? ?NO?
cs01 ? ? ? ? ? ? ? ? ? ? ? ? 5 ? ?YES?
/u01/app/oracle/arch/1_6_886855721.dbf ?6 ? ?NO?
cs01 ? ? ? ? ? ? ? ? ? ? ? ? 6 ? ?YES?
/u01/app/oracle/arch/1_7_886855721.dbf ?7 ? ?NO?
cs01 ? ? ? ? ? ? ? ? ? ? ? ? 7 ? ?YES?
操作說明: ?
? ?該視圖記錄了歸檔日志的應用情況,由查詢結果可以看出,主庫上的該視圖會同時記錄主庫和同步到備庫的歸檔日志的應用情況。視圖中顯示歸檔到本地路徑的歸檔日志的名字使用的是絕對路徑,并且應用狀態為NO,而同步到遠端備庫上的歸檔日志名字統一都為cs01,并且應用狀態顯示為YES。這說明同步到備庫上的歸檔日志都已經被應用了。
1.1.8、主庫上查看DG環境進程的狀態?
操作命令:?
SQL> select process,status from v$managed_standby;?
操作結果:?
PROCESS ? ?STATUS?
------------- ?------------?
ARCH ? ? ? CLOSING?
ARCH ? ? ? CLOSING?
ARCH ? ? ? CLOSING?
ARCH ? ? ? CLOSING?
LNS ? ? ? ?WRITING?
操作說明:?
ARCH進程: 用于主庫上復制redo log,從而生成歸檔日志,當前狀態為CLOSING表示該進程目前正在復 ? ? ? ?制redo log,我們在參數文件中設置了該進程的數量上限是4個。?
LNS進程: 用于在主庫上將主庫的歸檔日志同步到備庫上,將歸檔日志投遞給備庫上的RFS進程。
1.1.9、主庫上查看DG的狀態信息?
操作命令:?
SQL> col message for a100?
SQL> select message_num,message from v$dataguard_status;?
1.1.10、主庫SWITCH OVER角色和狀態的檢查?
操作命令:?
SQL> select name,database_role,switchover_status from v$database;?
操作結果:?
NAME ? DATABASE_ROLE ? ? ? ?SWITCHOVER_STATUS?
------------------ ?------------------------- ? --------------------------------?
CS02 ? PRIMARY ? ? ? ? ? ? ?TO STANDBY?
操作說明: ?
如果主庫的切換狀態顯示為SESSION ACTIVED狀態也是正常的。
1.2、備庫環境檢查?
1.2.1、備庫實例的啟動狀態檢查?
操作命令:?
SQL> select instance_name,status from v$instance;?
操作結果:?
INSTANCE_NAME ?STATUS?
--------------------------- ------------------------?
cs01 ? ? MOUNTED?
操作說明: ?
? ?一般備庫會被啟動到MOUNT狀態,不過根據具體需要,在確認備庫沒的應用歸檔日志進程沒有啟動的前提下也可以將其啟動到OPEN狀態,執行命令:alter database open;?
1.2.2、備庫啟動模式檢查?
操作命令:?
SQL> select name,open_mode from v$database;?
操作結果: ?
NAME ? OPEN_MODE?
------------------ ?--------------------------?
CS01 ? READ 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;?
操作結果:?
NAME ? OPEN_MODE?
------------------ ?----------------------------------?
CS01 ? READ ONLY WITH APPLY?
1.2.3、備庫DG環境的保護模式檢查?
執行命令:?
SQL> select database_role, protection_mode, protection_level from v$database;?
SQL> set linesize 160?
查詢結果:?
DATABASE_ROLE ?PROTECTION_MODE ? PROTECTION_LEVEL?
--------------------------- ---------------------------------------- ?--------------------
PHYSICAL STANDBY ?MAXIMUM PERFORMANCE ?MAXIMUM PERFORMANCE
1.2.4、備庫用于控制日志同步的參數檢查?
操作命令:?
SQL> show parameter log_archive_dest_2?
操作結果:?
NAME ? ? ? ? ? ?TYPE ? ? ? ? ?VALUE?
-------------------------------- ----------- ----------------------------------------------
log_archive_dest_2 ?string ? ? ?service=cs02 valid_for=(online_logfiles,primary_role) db_unique_name=cs02?
1.2.5、備庫上查看同步過來的歸檔日志的應用情況?
操作命令:?
SQL> set pagesize 50 SQL> col name for a50?
SQL> select name,SEQUENCE#,APPLIED from v$archived_log order by sequence#;?
操作結果:?
NAME ? ? ? ? ? ? ? ? ? ? ?SEQUENCE# ?APPLIED?
-------------------------------------------------------------- ------------------ ---------
/u01/app/oracle/arch/1_5_886855721.dbf ?5 ? ?YES?
/u01/app/oracle/arch/1_6_886855721.dbf ?6 ? ?YES?
/u01/app/oracle/arch/1_7_886855721.dbf ?7 ? ?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;?
操作結果:?
PROCESS ? ? ? ? STATUS?
------------------ ?------------------------?
ARCH ? CLOSING?
ARCH ? CLOSING?
ARCH ? CONNECTED?
ARCH ? CLOSING?
RFS ? ?IDLE?
RFS ? ?IDLE?
RFS ? ?IDLE?
RFS ? ?IDLE?
MRP0 ? WAIT_FOR_LOG?
操作說明:?
FRS進程: 用于備庫接收從主庫LNS進程或ARCH進程投遞過來的歸檔日志。?
ARCH: ?用于復制從主庫上同步過來的歸檔日志。?
MRP0: ?用于應用歸檔日志。
1.2.8、備庫上查看DG環境的狀態信息?
操作命令:?
SQL> col message for a100?
SQL> select message_num,message from v$dataguard_status;
1.2.9、備庫SWITCH OVER角色和狀態的檢查?
操作命令:?
SQL> select name,database_role,switchover_status from v$database;?
操作結果:?
NAME ? DATABASE_ROLE ? ? ? ?SWITCHOVER_STATUS?
------------------ ?------------------------- ? --------------------------------?
CS02 ? PHYSICAL STANDBY ? ? ?NOT ALLOWED?
操作說明: ?
? 如果主庫的切換狀態顯示為TO PRIMARY狀態也是正常的。?
重要說明: ?
? ?對于Data Guard環境的日常運維工作,其核心就在于確保主庫上的日志能通正常同步到備庫上,并能夠被備庫及時的應用。這些信息在主備數據庫的告警日志中都會有所體現,所有要經常關注主庫和備庫的告警日志的內容。做到發現報錯,及時處理,將會對數據庫運行造成不良影響的因素消滅在萌芽狀態...
2、DG環境的啟動與關閉?
2.1、DG環境的關閉?
2.1.1、檢查DG環境主備庫的日志使用情況?
操作位置:主庫&備庫?
操作命令:?
SQL> archive log list;?
操作結果:?
? ?主庫與備庫當前使用的日志編號相同
2.1.2、停主庫的監聽程序?
操作命令:?
[oracle@cs02 ~]$ lsnrctl stop?
2.1.3、停備庫的監聽程序?
操作命令:?
[oracle@cs01 ~]$ lsnrctl stop?
2.1.4、關閉主數據庫?
操作命令:?
SQL> shutdown immediate;
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、關閉備數據庫?
操作命令:?
SQL> shutdown immediate;?
這樣,整個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?
操作位置:主庫&備庫?
操作命令:?
SQL> archive log list;?
如果此時發現主庫與備庫當前使用的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;?
操作結果:?
NAME DATABASE_ROLE SWITCHOVER_STATUS?
--------- ?----------------------- --------------------------------?
CS02 PRIMARY ? SESSIONS 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;?
NAME DATABASE_ROLE ?SWITCHOVER_STATUS?
--------- ?---------------------------- --------------------------------?
CS02 PHYSICAL 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> shutdown immediate;?
SQL> startup mount;?
3)查看備庫的角色狀態
SQL> select name,database_role,switchover_status from v$database;?
備注:?
? 如果之前查看備庫的切換狀態是NOT ALLOWED,那么由于現在在主庫上已經做了切換到備庫的操作,該操 作的信息已經發送到了備庫上,所以備庫此時的切換狀態會變成TO PRIMARY。
3.3.6、主庫啟動到mount狀態?
1)主庫啟動到nomount狀態?
SQL> startup 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;?
NAME ?DATABASE_ROLE ?SWITCHOVER_STATUS?
------------------ -------------------------------- ---------------------------------------CS02 ?PHYSICAL STANDBY ?TO 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;?
NAME ?DATABASE_ROLE ? ? SWITCHOVER_STATUS?
--------- ?--------------------------- --------------------------------?
CS02 ?PHYSICAL 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;?
NAME ?DATABASE_ROLE ?SWITCHOVER_STATUS?
------------ ? ------------------------- ? -------------------------------?
CS02 ?PRIMARY ? ? ? ? ? ? NOT ALLOWED
4)關閉備庫?
SQL> shutdown immediate;?
5)啟動備庫?
SQL> startup;?
備注: 查看當前備庫的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;?
NAME ? DATABASE_ROLE ? SWITCHOVER_STATUS?
--------- ?------------------------ ?--------------------------------?
CS02 ? PRIMARY ? ? ? SESSIONS ACTIVE ?
發現備庫已經成功切換成主庫了,并且數據庫中存在活動的會話...?
3.3.8、檢查切換后主庫與備庫的日志編號?
操作位置:主庫&備庫?
操作命令:?
SQL> archive log list; ?
如果確認切換之后主庫與備庫的當前日志編號一致,則說明主備切換完成。可以在主庫上做切換日志操作,做進一步的驗證。?
操作命令:?
SQL> alter system switch logfile; ?
如果切換日志之后主備兩端的日志編號依舊一致則說明本次主備的SWITCH OVER順利完成。?
至此,我們的主備SWITCH OVER操作就算是順利的完成了...
轉載于:https://blog.51cto.com/4538453/1746713
總結
以上是生活随笔為你收集整理的ORACLE物理DG日常管理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 新买的路由器怎么设置 新买的路由器怎么设
- 下一篇: 两个无线路由器如何做桥接 两个无线路由器