關閉oracle rac的方法:1、停止各節點的監聽服務;2、關閉數據庫實例;3、關閉ASM實例;4、使用crs_stat命令查詢RAC節點的服務狀態是否正常;5、停止CRS集群軟件即可。
本教程操作環境:Windows7系統、Oracle 11g版、Dell G3電腦。
如何正確啟動關閉 Oracle RAC?
如果要關閉Oracle集群數據庫系統,簡單粗暴的方式是,操作系統執行OS命令:shutdown -h now;
這種方式比較暴力,可以將數據庫系統關閉,但是這樣操作,Oracle的某些服務可能沒有正常關閉,再次啟動OS之后會出現好多服務處于UNKNOW的狀態。
那么如何正確的根據Oracle工作機制來關閉和啟動RAC?
RAC關閉的合理順序:(注意事項:退出所有的客戶端連接,比如SQLplus …)
停止各節點的監聽服務–>>關閉數據庫(實例)–>>關閉ASM實例–>>關閉節點集群服務–>>關閉服務器
1.停止各節點的監聽服務
檢查監聽狀態:
srvctl status listener -n node1
關閉監聽:
[oracle@node1 ~]$ srvctl stop listener -n node1 [oracle@node2 ~]$ srvctl stop listener -n node2
可以用上述命令在兩個節點上分別停止對應的監聽,也可以用以下命令在一個節點上執行,停止所有的監聽。
[oracle@node1 ~]$ srvctl stop listener
再次檢查監聽狀態:
2.關閉數據庫實例
(1)查看數據庫實例名:select instance_name from v$instance;
例如查到的數據庫實例名是:DEVDB
(2)使用srvctl (service control)命令依次關閉集群服務 (注意:退出上邊的sqlplus客戶端,否則數據庫無法正常關閉)
A.檢查數據庫實例狀態 (oracle用戶下執行)
srvctl?status?database?-d?DEVDB?(數據庫實例名根據實際填寫,并且區分大小寫)
b 關閉數據庫實例:
srvctl?stop?database?-d?DEVDB
以上命令僅在一個節點上執行就可以,也可以分別在兩個節點上分開執行以下命令,實現相同的功能。
srvctl stop instance -d DEVDB -i devdb1 (填寫自實際的INSTANCE_NAME) srvctl stop instance -d DEVDB -i devdb2
C 查看關閉狀態:srvctl status database -d DEVDB
3.關閉ASM實例
查看ASM運行狀態:srvctl status asm -n node1
停止ASM實例:
srvctl stop asm -n node1
4.關閉RAC(CRS)集群服務
(1)使用crs_stat 命令查詢RAC節點的服務狀態是否正常 (root或者grid用戶)
crs_stat?-t?-v
(2)停止CRS集群服務
停止兩個節點的服務:
srvctl stop nodeapps -n node1 srvctl stop nodeapps -n node2
****
(3)停止CRS集群軟件
[root@node1 ~]# find / -name crsctl [root@node1 ~]# /u01/grid/11.2.0.4/bin/crsctl stop crs (分別在兩個節點的root用戶下執行) CRS-2791: 正在啟動用于關閉 'rac1' 上 Oracle High Availability Services 管理的資源的操作 CRS-2673: 嘗試停止 'ora.crsd' (在 'rac1' 上) CRS-2790: 正在啟動關閉 'rac1' 上集群就緒服務管理的資源的操作 CRS-2673: 嘗試停止 'ora.asm' (在 'rac1' 上) CRS-2677: 成功停止 'ora.asm' (在 'rac1' 上) CRS-2792: 關閉 'rac1' 上集群就緒服務管理的資源的操作已完成 CRS-2677: 成功停止 'ora.crsd' (在 'rac1' 上) CRS-2673: 嘗試停止 'ora.cssdmonitor' (在 'rac1' 上) CRS-2673: 嘗試停止 'ora.ctssd' (在 'rac1' 上) CRS-2673: 嘗試停止 'ora.evmd' (在 'rac1' 上) CRS-2673: 嘗試停止 'ora.asm' (在 'rac1' 上) CRS-2673: 嘗試停止 'ora.mdnsd' (在 'rac1' 上) CRS-2677: 成功停止 'ora.cssdmonitor' (在 'rac1' 上) CRS-2677: 成功停止 'ora.evmd' (在 'rac1' 上) CRS-2677: 成功停止 'ora.mdnsd' (在 'rac1' 上) CRS-2677: 成功停止 'ora.ctssd' (在 'rac1' 上) CRS-2677: 成功停止 'ora.asm' (在 'rac1' 上) CRS-2673: 嘗試停止 'ora.cssd' (在 'rac1' 上) CRS-2677: 成功停止 'ora.cssd' (在 'rac1' 上) CRS-2673: 嘗試停止 'ora.gpnpd' (在 'rac1' 上) CRS-2673: 嘗試停止 'ora.diskmon' (在 'rac1' 上) CRS-2677: 成功停止 'ora.gpnpd' (在 'rac1' 上) CRS-2673: 嘗試停止 'ora.gipcd' (在 'rac1' 上) CRS-2677: 成功停止 'ora.gipcd' (在 'rac1' 上) CRS-2677: 成功停止 'ora.diskmon' (在 'rac1' 上) CRS-2793: 關閉 'rac1' 上 Oracle High Availability Services 管理的資源的操作已完成 CRS-4133: Oracle High Availability Services has been stopped.
注意:停止數據庫集群軟件,在一個節點執行即可,在節點2就不用執行了。
(4)再次查看兩個節點的CRS服務狀態:
[grid@node1 ~]$ crs_stat -t -v CRS-0184: Cannot communicate with the CRS daemon. (服務已經關閉) [grid@node2 ~]$ crs_stat -t -v CRS-0184: Cannot communicate with the CRS daemon. (服務已經關閉)
當上述操作都執行完成,并且正常關閉后,就可以將服務器的關閉了。
================
啟動的順序和關閉相反
啟動服務器–>>啟動服務–>>啟動ASM–>>啟動實例–>>啟動監聽
這里我們需要注意;Oracle RAC集群軟件有一個屬性可以設置,就是當服務器操作系統重啟后,集群服務是否會隨著操作系統一塊啟動;上邊啟動的順序步驟是在:當禁用該自啟動屬性的情況下的操作順序;關于該屬性的查看與設置,詳見下一篇穩文章:關于集群自啟動的查看。
(1)首先啟動服務器
(2)啟動CRS軟件:
[root@node1 ~]# find / -name crsctl [root@node1 ~]# /u01/grid/11.2.0.4/bin/crsctl start crs
查看服務:
srvctl status nodeapps -n node1 srvctl status nodeapps -n node2 crsctl status res – -t
(3)啟動ASM
查看ASM狀態
srvctl status asm -n node1
啟動ASM
srvctl start asm -n node1 srvctl start asm -n node2
(4)啟動實例
srvctl status database -d node1 srvctl start database -d node2
(5)啟動監聽
srvctl status listener (RAC環境) srvctl start listener 或者 lsnrctl start
===============================
重啟=關閉+啟動
從上述各步可以看出,關閉和開啟都是分步執行的,這樣操作還有一個好處,可以幫助我們發現定位問題。
推薦教程:《Oracle使用教程》