RAC資料庫與單一實例的差異主要表現在多個執行個體通過叢集件來統一管理共用的資源。因此原有的單一實例的管理方式,如資料庫、監聽器等的關閉啟動等可以使用原有的方式進行,也可以通過叢集管理工具,命令列來集中管理,這也是推薦的管理方式。由於叢集件crs位於資料庫之上,即RAC資料庫依賴於叢集件,因此資料庫的啟動與關閉應該結合叢集來考慮,下面以10g RAC來描述資料庫啟動與關閉過程,不涉及叢集層的啟動與關閉。
一、RAC 資料庫啟動與關閉順序
1、關閉順序
關閉OEM,關閉監聽,關閉 Oracle 執行個體,關閉 ASM 執行個體,關閉節點應用程式
2、啟動順序
啟動節點應用程式,啟動ASM執行個體,啟動oracle執行個體,啟動監聽,啟動OEM<可選>
如果未使用ASM,則啟動與關閉過程的有關ASM的操作可忽略
3、主要工具
srvctl,OEM,sqlplus。本文主要描述的是使用srvctl命令來完成
二、示範環境
1、環境
主機名稱 庫名 執行個體名 asm執行個體
-------- ------ ------- --------
bo2dbp GOBO4 GOBO4A +ASM1
bo2dbs GOBO4 GOBO4B +ASM2
2、資料庫狀態
oracle@bo2dbp:~> ./crs_stat.sh
Resource name Target State
-------------- ------ -----
ora.GOBO4.GOBO4A.inst ONLINE ONLINE on bo2dbp
ora.GOBO4.GOBO4B.inst ONLINE ONLINE on bo2dbs
ora.GOBO4.db ONLINE ONLINE on bo2dbp
ora.bo2dbp.ASM1.asm ONLINE ONLINE on bo2dbp
ora.bo2dbp.LISTENER_BO2DBP.lsnr ONLINE ONLINE on bo2dbp
ora.bo2dbp.LISTENER_ORA10G_BO2DBP.lsnr ONLINE ONLINE on bo2dbp
ora.bo2dbp.gsd ONLINE ONLINE on bo2dbp
ora.bo2dbp.ons ONLINE ONLINE on bo2dbp
ora.bo2dbp.vip ONLINE ONLINE on bo2dbp
ora.bo2dbs.ASM2.asm ONLINE ONLINE on bo2dbs
ora.bo2dbs.LISTENER_BO2DBS.lsnr ONLINE ONLINE on bo2dbs
ora.bo2dbs.LISTENER_ORA10G_BO2DBS.lsnr ONLINE ONLINE on bo2dbs
ora.bo2dbs.gsd ONLINE ONLINE on bo2dbs
ora.bo2dbs.ons ONLINE ONLINE on bo2dbs
ora.bo2dbs.vip ONLINE ONLINE on bo2dbs
ora.ora10g.db ONLINE ONLINE on bo2dbs
ora.ora10g.hr_ora10g.cs ONLINE ONLINE on bo2dbp
ora.ora10g.hr_ora10g.ora10g1.srv ONLINE ONLINE on bo2dbp
ora.ora10g.ora10g1.inst ONLINE ONLINE on bo2dbp
ora.ora10g.ora10g2.inst ONLINE ONLINE on bo2dbs
上面的查詢結果表明,當前叢集中存在2個RAC資料庫,一個是GOBO4,一個是ora10g
每個節點上配置了兩個監聽器,一個是預設的1521連接埠監聽器,一個是非預設的監聽器(LISTENER_ORA10G_BO2DBP)
資料庫ora10g上建立了service為hr_ora10g
3、srvctl 命令
srvctl是管理RAC資料庫使用最頻繁的命令,是service control的縮寫,基本的用法是srvctl <command> <object> [<options>]。
直接在命令列下輸入srvctl 則出現該命令的用法說明
該命令方式可以操作下列資源
database,instance,asm,service,listener,node application(GSD,ONS,VIP)
三、關閉資料庫
1、關閉oem服務(如果啟動了oem,則應首先關閉oem服務,否則跳過)
export ORACLE_SID=GOBO4A
emctl stop dbconsole
2、關閉Oracle執行個體
srvctl stop instance -d GOBO4 -i GOBO4A
3、關閉ASM執行個體
srvctl stop asm -n bo2dbp
4、關閉節點服務(此操作將關閉指定節點的所有監聽以及GSD,ONS,VIP)
srvctl stop nodeapps -n bo2dbp
節點bo2dbp關閉後的結果
oracle@bo2dbp:~> ./crs_stat.sh
Resource name Target State
-------------- ------ -----
ora.GOBO4.GOBO4A.inst OFFLINE OFFLINE
ora.GOBO4.GOBO4B.inst ONLINE ONLINE on bo2dbs
ora.GOBO4.db ONLINE ONLINE on bo2dbs
ora.bo2dbp.ASM1.asm OFFLINE OFFLINE
ora.bo2dbp.LISTENER_BO2DBP.lsnr OFFLINE OFFLINE
ora.bo2dbp.LISTENER_ORA10G_BO2DBP.lsnr OFFLINE OFFLINE
ora.bo2dbp.gsd OFFLINE OFFLINE
ora.bo2dbp.ons OFFLINE OFFLINE
ora.bo2dbp.vip OFFLINE OFFLINE
ora.bo2dbs.ASM2.asm ONLINE ONLINE on bo2dbs
ora.bo2dbs.LISTENER_BO2DBS.lsnr ONLINE ONLINE on bo2dbs
ora.bo2dbs.LISTENER_ORA10G_BO2DBS.lsnr ONLINE ONLINE on bo2dbs
ora.bo2dbs.gsd ONLINE ONLINE on bo2dbs
ora.bo2dbs.ons ONLINE ONLINE on bo2dbs
ora.bo2dbs.vip ONLINE ONLINE on bo2dbs
ora.ora10g.db ONLINE ONLINE on bo2dbs
ora.ora10g.hr_ora10g.cs ONLINE ONLINE on bo2dbs
ora.ora10g.hr_ora10g.ora10g1.srv ONLINE ONLINE on bo2dbs
ora.ora10g.ora10g1.inst OFFLINE OFFLINE #注,由於bo2dbp上的ASM被關閉,所以執行個體ora10g1也被關閉
ora.ora10g.ora10g2.inst ONLINE ONLINE on bo2dbs
如果是關閉整個資料庫,則使用如下命令
srvctl stop database -d <db_name>
上述命令使用後則,所有該資料庫上的執行個體都將被關閉以及對應的.db的服務也會被關閉,如下
oracle@bo2dbp:~> ./crs_stat.sh
Resource name Target State
-------------- ------ -----
ora.GOBO4.GOBO4A.inst OFFLINE OFFLINE
ora.GOBO4.GOBO4B.inst OFFLINE OFFLINE
ora.GOBO4.db OFFLINE OFFLINE
對於監聽器也可以使用srvctl來完成
srvctl stop listener -n bo2dbp #關閉節點上預設連接埠的監聽器
srvctl stop listener -n bo2dbp -l LISTENER_ORA10G_BO2DBP #此監聽器為非預設的,因此指定-l 加監聽器的名字
四、啟動資料庫
1、啟動節點服務
srvctl start nodeapps -n bo2dbp
2、啟動ASM執行個體
srvctl start asm -n bo2dbp
3、啟動Oracle執行個體
srvctl start instance -d GOBO4 -i GOBO4A
4、啟動OEM
export ORACLE_SID=GOBO4A
emctl start dbconsole
如果是啟動整個資料庫,則使用如下命令
srvctl start database -d <db_name>
五、小結
1、RAC資料庫的啟動需要考慮各個層次之間的依賴關係。叢集資料庫依賴於叢集件上的服務,因此必須先啟動叢集上的相關服務(ONS,GSD,VIP)
2、接下來在叢集件服務之下的為ASM,ASM為共用儲存提供統一管理,因此需要於執行個體先啟動
3、啟動執行個體,將資料庫切換到open 模式
4、RAC資料庫的關閉則正好與之相反,同樣是按逐層遞進的關係來進行
oracle視頻教程請關注:http://u.youku.com/user_video/id_UMzAzMjkxMjE2.html