RAC 管理(crs_stat、crsctl、srvctl)

Oracle Clusterware的命令集可以分爲以下4種: 
節點層:osnodes 
網絡層:oifcfg 
集羣層:crsctl, ocrcheck,ocrdump,ocrconfig 
應用層:srvctl,onsctl,crs_stat 
下面分別來介紹這些命令。

1、節點層

olsnodes,這個命令用來顯示集羣點列表,可用的參數如下:

$olsnodes -h

用法: olsnodes [-n] [-p][-i] [<node> | -l] [-g] [-v] 
-n打印節點編號和節點名 
-p打印專用互聯名和節點名 
-i打印虛擬IP名和節點名 
<node>打印指定節點的信息 
-l打印本地節點的信息 
-g啓用事件記錄 
-v在詳細模式下運行

這些參數可以混合使用。 
[root@rac1 bin]#$olsnodes

racnode1

racnode2 
[root@rac1 bin]#olsnodes-n

racnode11

racnode22

注:若命令不能運行,添加path,或直接進入命令所在目錄運行。本例位於:

/u01/crs/oracle/product/11.1.0/crs/bin

2、網絡層

網絡層由各個節點的網絡組件組成,包括2個物理網卡和3個IP地址。也只有一個命令:oifcfg

Oifcfg命令的格式如下:

用法: oifcfg iflist [-p [-n]] 
oifcfg setif {-node <nodename> | -global} {<if_name>/<subnet>:<if_type>}… 
oifcfg getif [-node <nodename> | -global] [ -if <if_name>[/<subnet>] [-type <if_type>] ] 
oifcfg delif [-node <nodename> | -global] [<if_name>[/<subnet>]] 
oifcfg [-help]

<nodename> -爲通信網絡所知的主機名 
<if_name> -系統中配置的接口的名稱 
<subnet> -接口的子網地址 
<if_type> -接口類型{ cluster_interconnect | public | storage } 
Oifctg命令用來定義和修改Oracle集羣需要的網卡屬性,這些屬性包括網卡的網段地址,子網掩碼,接口類型等。要想正確的使用這個命令,必須先知道Oracle是如何定義網絡接口的,Oracle的每個網絡接口包括名稱,網段地址,接口類型3個屬性:interface_name/subnet:interface_type。

這些屬性中沒有IP地址,但接口類型有兩種,public和private,前者說明接口用於外部通信,用於Oracle Net和VIP地址,而後者說明接口用於Interconnect。

接口的配置方式分爲兩類:

global和node-specific。前者說明集羣所有節點的配置信息相同,也就是說所有節點的配置是對稱的;而後者意味着這個節點的配置和其他節點配置不同,是非對稱的。 
Iflist:顯示網口列表 
Getif:獲得單個網口信息 
Setif:配置單個網口 
Delif:刪除網口 
[root@rac1 bin]# ./oifcfg -help

[root@rac1 bin]# ./oifcfg iflist 
[root@rac1 bin]# ./oifcfg getif 
–查看public類型的網卡 
[root@rac1 bin]# ./oifcfg getif -type public 
–刪除接口配置 
[root@rac1 bin]# ./oifcfg delif–global 
–添加接口配置 
[root@rac1 bin]# ./oifcfg setif -global eth0/192.168.1.119:public 
[root@rac1 bin]# ./oifcfg setif -globaleth1/10.85.10.119:cluster_interconnect

3、集羣層

集羣層是指由Clusterware組成的核心集羣, 這一層負責維護集羣內的共享設備,併爲應用集羣提供完整的集羣狀態視圖,應用集羣依據這個視圖進行調整。這一層共有4個命令:crsctl, ocrcheck,ocrdump,ocrconfig.後三個是針對OCR磁盤的。

3.1 Crsctl

Crsctl命令可以用來檢查CRS進程棧,每個crs進程狀態,管理Votedisk,跟蹤CRS進程功能。 
[root@rac1 bin]# ./crsctl

3.1.1 檢查crs狀態

[root@rac1 bin]# ./crsctl check crs 
Cluster Synchronization Services appears healthy

Cluster Ready Services appears healthy

Event Manager appears healthy 
–檢查單個狀態 
[root@rac1 bin]# ./crsctl check cssd 
CSS appears healthy 
[root@rac1 bin]# ./crsctl check crsd 
CRS appears healthy 
[root@rac1 bin]# ./crsctl check evmd 
EVM appears healthy

3.1.2 配置crs棧是否自啓動

CRS進程棧默認隨着操作系統的啓動而自啓動,有時出於維護目的需要關閉這個特性,可以用root用戶執行下面命令。 
[root@rac1 bin]# ./crsctl disable crs 
[root@rac1 bin]# ./crsctl enable crs 
這個命令實際是修改了/etc/oracle/scls_scr/raw/root/crsstart這個文件裏的內容。

3.1.3 啓動,停止crs棧

Oracle在10.1時,必須通過重新啓動系統重啓Clusterware,但是從Oracle 10.2開始,可以通過命令來啓動和停止CRS。 
–啓動CRS: 
[root@rac1 bin]# ./crsctl start crs

Attempting to start CRS stack 
The CRS stack will be started shortly 
–關閉CRS: 
[root@rac1 bin]# ./crsctl stop crs 
Stopping resources. 
Successfully stopped CRS resources 
Stopping CSSD. 
Shutting down CSS daemon. 
Shutdown request successfully issued.

3.1.4 查看votedisk磁盤位置

[root@rac1 bin]# ./crsctl query css votedisk

3.1.5 查看和修改crs參數

–查看參數:用get 
[root@rac1 bin]# ./crsctl get css misscount 
60 
–修改參數: 用set,但是這個功能要慎用 
[root@rac1 bin]# ./crsctl set css miscount 60

3.1.6 跟蹤crs模塊,提供輔助功能

CRS由CRS,CSS,EVM三個服務組成,每個服務又是由一系列module組成,crsctl允許對每個module進行跟蹤,並把跟蹤內容記錄到日誌中。 
[root@rac1 bin]# ./crsctl lsmodules css 
[root@rac1 bin]# ./crsctl lsmodules evm 
–跟蹤CSSD模塊,需要root用戶執行: 
[root@rac1 bin]# ./crsctl debug log css "CSSD:1" 
Configuration parameter trace is now set to 1. 
Set CRSD Debug Module: CSSD Level: 1 
–查看跟蹤日誌 
[root@rac1 cssd]# pwd 
/u01/app/oracle/product/crs/log/rac1/cssd 
[root@rac1 cssd]# more ocssd.log 

3.1.7 維護votedisk

以圖形方式安裝Clusterware的過程中,在配置Votedisk時,如果選擇External Redundancy策略,則只能填寫一個Votedisk。但是即使使用External Redundancy作爲冗餘策略,也可以添加多個Vodedisk,只是必須通過crsctl命令來添加,添加多個Votedisk後,這些Votedisk互爲鏡像,可以防止Votedisk的單點故障。 
需要注意的是,Votedisk使用的是一種“多數可用算法”,如果有多個Votedisk,,則必須一半以上的Votedisk同時使用,Clusterware才能正常使用。 比如配置了4個Votedisk,壞一個Votedisk,集羣可以正常工作,如果壞了2個,則不能滿足半數以上,集羣會立即宕掉,所有節點立即重啓,所以如果添加Votedisk,儘量不要只添加一個,而應該添加2個。這點和OCR不一樣。OCR只需配置一個。 
添加和刪除Votedisk的操作比較危險,必須停止數據庫,停止ASM,停止CRS Stack後操作,並且操作時必須使用-force參數。 
1) 查看當前配置 
[root@rac1 bin]# ./crsctl query css votedisk 
2) 停止所有節點的CRS: 
[root@rac1 bin]# ./crsctl stop crs 
3) 添加Votedisk 
[root@rac1 bin]# ./crsctl add css votedisk /dev/raw/rac1 -force 
注意:即使在CRS關閉後,也必須通過-force參數來添加和刪除Votedisk,並且-force參數只有在CRS關閉的場合下使用才安全,否則會報:Cluter is not a ready state for online disk addition. 
4) 確認添加後的情況: 
[root@rac1 bin]# ./crsctl query css votedisk 
5) 啓動CRS 
[root@rac1 bin]# ./crsctl start crs

3.2 ocr命令系列

Oracle Clusterware把整個集羣的配置信息放在共享存儲上,這個存儲就是OCR Disk.在整個集羣中,只有一個節點能對OCR Disk進行讀寫操作,這個節點叫作Master Node,所有節點都會在內存中保留一份OCR的拷貝,同時喲一個OCR Process從這個內存中讀取內容。OCR內容發生改變時,由Master Node的OCR Process負責同步到其他節點的OCR Process。 
因爲OCR的內容如此重要,Oracle每4個小時對其做一次備份,並且保留最後的3個備份,以及前一天,前一週的最後一個備份。這個備份由Master Node CRSD進程完成,備份的默認位置是$CRS_HOME\crs\cdata\<cluster_name>目錄下。每次備份後,備份文件名自動更改,以反應備份時間順序,最近一次的備份叫作backup00.ocr。這些備份文件除了保存在本地,DBA還應該在其他存儲設備上保留一份,以防止意外的存儲故障。

3.2.1 ocrdump

該命令能以ASCII的方式打印出OCR的內容,但是這個命令不能用作OCR的備份恢復,也就是說產生的文件只能用作閱讀,而不能用於恢復。 
命令格式:ocrdump [-stdout] [filename] [-keyname name] [-xml] 
參數說明: 
-stdout:把內容打印輸出到屏幕上 
Filename:內容輸出到文件中 
-keyname:只打印某個鍵及其子健內容 
-xml:以xml格式打印輸出

示例:把system.css鍵的內容以.xml格式打印輸出到屏幕 
[root@rac1 bin]#./ocrdump -stdout -keyname system.css -xml|more 
…… 
這個命令在執行過程中,會在$CRS_HOME\log\<node_name>\client目錄下產生日誌文件,文件名ocrdump_<pid>.log,如果命令執行出現問題,可以從這個日誌查看問題原因。

3.2.2 ocrcheck

Ocrcheck命令用於檢查OCR內容的一致性,命令執行過程會在$CRS_HOME\log\nodename\client目錄下產生ocrcheck_pid.log日誌文件。 這個命令不需要參數。 
[root@rac1 bin]#./ocrcheck

3.2.3 ocrconfig

該命令用於維護OCR磁盤,安裝clusterware過程中,如果選擇External Redundancy冗餘方式,則只能輸入一個OCR磁盤位置。但是Oracle允許配置兩個OCR磁盤互爲鏡像,以防止OCR磁盤的單點故障。OCR磁盤和Votedisk磁盤不一樣,OCR磁盤最多只能有兩個,一個Primary OCR和一個Mirror OCR。 
[root@rac1 bin]# ./ocrconfig –help

–查看自助備份 
[root@rac1 bin]#./ocrconfig -showbackup 
在缺省情況下,OCR自動備份在$CRS_HOME\CRS\CDATA\cluster_name目錄下,可以通過ocrconfig -backuploc <directory_name>命令修改到新的目錄

3.2.4 使用導出,導入進行備份和恢復

Oracle推薦在對集羣做調整時,比如增加,刪除節點之前,應該對OCR做一個備份,可以使用export備份到指定文件,如果做了replace或者restore等操作,Oracle建議使用cluvfy comp ocr -n all命令來做一次全面的檢查。該命令在clusterware的安裝軟件裏。 
1) 首先關閉所有節點的CRS 
[root@rac1 bin]#./crsctl stop crs 
2) 用root用戶導出OCR內容

[root@rac1 bin]# ./ocrconfig -export /u01/ocr.exp

3) 重啓CRS 
[root@rac1 bin]# ./crsctl start crs

4) 檢查CRS狀態 
[root@rac1 bin]# ./crsctl check crs 
CSS appears healthy 
CRS appears healthy 
EVM appears healthy

5)破壞OCR內容 
[root@rac1 bin]# dd if=/dev/zero f=/dev/raw/rac1 bs=1024 count=102400 
102400+0 records in 
102400+0 records out 
6) 檢查OCR一致性 
[root@rac1 bin]# ./ocrcheck 
PROT-601: Failed to initialize ocrcheck

7)使用cluvfy工具檢查一致性 
[root@rac1 cluvfy]# ./runcluvfy.sh comp ocr -n all 
Verifying OCR integrity 
Unable to retrieve nodelist from Oracle clusterware. 
Verification cannot proceed. 
8) 使用Import恢復OCR內容 
[root@rac1 bin]# ./ocrconfig -import /u01/ocr.exp 
9)再次檢查OCR 
[root@rac1 bin]# ./ocrcheck 
10) 使用cluvfy工具檢查 
[root@rac1 cluvfy]# ./runcluvfy.sh comp ocr -n all

3.2.5 移動ocr文件位置

實例演示將OCR從/dev/raw/rac1移動到/dev/raw/raw3上。 
1) 查看是否有OCR備份 
[root@rac1 bin]#./ocrconfig -showbackup 
如果沒有備份,可以立即執行一次導出作爲備份: 
[root@rac1 bin]#./ocrconfig -export /u01/ocrbackup -s online 
2) 查看當前OCR配置 
[root@rac1 bin]# ./ocrcheck 
3)添加一個Mirror OCR 
[root@rac1 bin]#./ocrconfig -replace ocrmirror /dev/raw/raw4 
4)確認添加成功 
[root@rac1 bin]#./ocrcheck

5)改變primary OCR位置 
[root@rac1 bin]#./ocrconfig -replace ocr /dev/raw/raw3 
確認修改成功: 
[root@rac1 bin]#./ocrcheck

6)使用ocrconfig命令修改後,所有RAC節點上的/etc/oracle/ocr.loc文件內容也會自動同步了,如果沒有自動同步,可以手工的改成以下內容。 
[root@rac1 bin]#more /etc/oracle/ocr.loc 
ocrconfig_loc=/dev/raw/rac1 
Ocrmirrorconfig_loc=/dev/raw/raw3 
local_only=FALSE

4、應用層

應用層就是指RAC數據庫了,這一層有若干資源組成,每個資源都是一個進程或者一組進程組成的完整服務,這一層的管理和維護都是圍繞這些資源進行的。有如下命令:srvctl, onsctl, crs_stat三個命令。

4.1.1 crs_stat

Crs_stat這個命令用於查看CRS維護的所有資源的運行狀態,如果不帶任何參數時,顯示所有資源的概要信息。每個資源顯示是各個屬性:資源名稱,類型,目錄,資源運行狀態等。 
[root@rac1 bin]#./crs_stat 
…… 
也可以指定資源名,查看指定資源的狀態,並可以使用-V和-P選項,以查看詳細信息,其中-p參數顯示的內容比-V更詳細。 
1) 查看制定資源狀態 
[root@rac1 bin]#./crs_stat ora.rac2.vip 
2) 使用-v選項,查看詳細內容,這時輸出多出4項內容,分別是允許重啓次數,已執行重啓次數,失敗閥值,失敗次數。 
[root@rac1 bin]#./crs_stat -v ora.rac2.vip 
3) 使用-p選項查看更詳細內容 
[root@rac1 bin]#./crs_stat -p ora.rac2.vip

這些字段是所有資源共有的,但是根據資源類型不同,某些字段可以空值。 
4) 使用-ls選項,可以查看每個資源的權限定義,權限定義格式和Linux一樣。 
[root@rac1 bin]#./crs_stat -ls

4.1.2 onsctl

這個命令用於管理配置ONS(Oracle Notification Service). ONS是Oracle Clusterware實現FAN Event Push模型的基礎。在傳統模型中,客戶端需要定期檢查服務器來判斷服務端狀態,本質上是一個pull模型,Oracle 10g引入了一個全新的PUSH機制–FAN(Fast Application Notification),當服務端發生某些事件時,服務器會主動的通知客戶端這種變化,這樣客戶端就能儘早得知服務端的變化。而引入這種機制就是依賴ONS實現, 在使用onsctl命令之前,需要先配置ONS服務。

4.1.2.1 ons配置內容

在RAC環境中,需要使用$CRS_HOME下的ONS,而不是$ORACLE_HOME下面的ONS, 這點需要注意。 配置文件在$CRS_HOME\opmn\conf\ons.config. 
[root@rac1 conf]#pwd 
/u01/app/oracle/product/crs/opmn/conf 
[root@rac1 conf]# more ons.config 
參數說明: 
Localport:這個參數代表本地監聽端口,這裏本地特指:127.0.0.1這個迴環地址,用來和運行在本地的客戶端進行通信 
Remoteport:這個參數代表的是遠程監聽端口,也就是除了127.0.0.1以外的所有本地IP地址,用來和遠程的客戶端進行通信。 
Loglevel:Oracle允許跟蹤ONS進程的運行,並把日誌記錄到本地文件中,這個參數用來定義ONS進程要記錄的日誌級別,從1-9,缺省值是3. 
Logfile:這個參數和loglevel參數一起使用,用於定義ONS進程日誌文件的位置,缺省值是$CRS_HOME\opmn\logs\opmn.log 
nodes和useocr:這兩個參數共同決定餓了本地的ONS daemon要和哪些遠程節點上的ONS daemon進行通信。 
Nodes參數值格式如下:Hostname/IP:port[hostname/ip:port] 
如:useoce=off 
Nodes=rac1:6200,rac2:6200 
而useocr參數值爲on/off,如果useocr是ON, 說明信息保存在OCR中,如果是OFF,說明信息取nodes中的配置。對於單實例而言,要把useocr設置爲off。

4.1.2.2 配置ons

可以直接編譯ONS的配置文件來修改配置,如果使用了OCR,則可以通過racgons命令進行配置,但必須以root用戶來執行,如果用oracle用戶來執行,不會提示任何錯誤,但也不會更改任何配置。 
若要添加配置,可以使用下面命令: 
Racgons add_config rac1:6200 rac2:6200 
若要刪除配置,可以用下面命令: 
Racgons remove_config rac1:6200 rac2:6200

4.1.2.3 onsctl命令

使用onsctl命令可以啓動,停止,調試ONS,並重新載入配置文件,其命令格式如下: 
[root@rac1 bin]#./onsctl 
ONS進程運行,並不一定代表ONS正常工作,需要使用ping命令來確認。 
1) 在OS級別查看進程狀態。 
[root@rac1 bin]#ps -aef|grep ons 
2) 確認ONS服務的狀態 
[root@rac1 bin]#./onsctl ping 
3) 啓動ONS服務 
[root@rac1 bin]#./onsctl start

4)使用debug選項,可以查看詳細信息,其中最有意義的就是能顯示所有連接。 
[root@rac1 bin]#./onsctl debug 
[root@rac1 bin]#

4.1.3 srvctl

該命令是RAC維護中最常用的命令,也是最複雜的命令。 這個工具可以操作下面的幾種資源:Database,Instance,ASM,Service,Listener和Node Application,其中Node application又包括GSD,ONS,VIP。 這些資源除了使用srvctl工具統一管理外,某些資源還有自己獨立的管理工具,比如ONS可以使用onsctl命令進行管理;Listener可以通過lsnrctl管理。 
[root@rac1 bin]#./srvctl –help

4.1.3.1 使用config查看配置

1)查看數據庫配置 
–不帶任何參數時,顯示OCR中註冊的所有數據庫 
[root@rac1 bin]#./srvctl config database 
–使用-d選項,查看某個數據庫配置 
[root@rac1 bin]#./srvctl config database -d raw 
注: 該輸出結果顯示數據庫raw由2個節點組成,各自實例名交rac1和rac2.兩個實例的$ORACLE_HOME是/u01/app/oracle/product/10.2.0/db_1 
–使用-a選項查看配置的詳細信息 
[root@rac1 bin]#./srvctl config database -d raw -a 
2)查看Node Application的配置 
–不帶任何參數,返回節點名,實例名和$ORACLE_HOME 
[root@rac1 bin]#./srvctl config nodeapps -n rac1

–使用-a選項,查看VIP配置 
[root@rac1 bin]#./srvctl config nodeapps -n rac1 -a

–使用-g選項, 查看GSD: 
[root@rac1 bin]#./srvctl config nodeapps -n rac1 -g 
–使用-s選項,查看ONS: 
[root@rac1 bin]#./srvctl config nodeapps -n rac1 -s 
–使用-l選項,查看Listener: 
[root@rac1 bin]# ./srvctl config nodeapps -n rac1 -l 
Listener exists. 
3)查看Listener. 
[root@rac1 bin]#./srvctl config listener -n rac1 
[root@rac1 bin]#./srvctl config listener -n rac2 
4)查看ASM 
[root@rac1 bin]#./srvctl config asm -n rac1 
[root@rac1 bin]#./srvctl config asm -n rac2 
5) 查看Service 
–查看數據庫所有service配置 
[root@rac1 bin]#./srvctl config service -d raw -a 
–查看某個Service配置 
[root@rac1 bin]#./srvctl config service -d raw -s dmm 
–使用-a選項,查看TAF策略 
[root@rac1 bin]#./srvctl config service -d raw -s dmm -a

4.1.3.2 使用add添加對象

一般情況下,應用層資源都是在圖形界面的幫助下注冊到OCR中的,比如VIP,ONS實在安裝最後階段創建的,而數據庫,ASM是執行DBCA的過程中自動註冊到OCR中的,Listener是通過netca工具。 但是有些時候需要手工把資源註冊到OCR中。 這時候就需要add命令了。 
1) 添加數據庫 
[root@rac1 bin]#./srvctl add database -d dmm -o $ORACLE_HOME 
2) 添加實例 
[root@rac1 bin]#./srvctl add instance -d dmm -n rac1 -i dmm1 
[root@rac1 bin]#./srvctl add instance -d dmm -n rac2 -i dmm2 
3)添加服務,需要使用4個參數 
-s :服務名 
-r:首選實例名 
-a:備選實例名 
-P:TAF策略,可選值爲None(缺省值),Basic,preconnect。 
[root@rac1 bin]# ./srvctl add service -d dmm -s dmmservice -r rac1 -a rac2 -P BASIC 
4)確認添加成功 
[root@rac1 bin]# ./srvctl config service -d dmm -s dmmservice -a

4.1.3.3 使用enable/disable啓動,禁用對象

缺省情況下數據庫,實例,服務,ASM都是隨着CRS的啓動而自啓動的,有時候由於維護的需要,可以先關閉這個特性。 
1)配置數據庫隨CRS的啓動而自動啓動 
–啓用數據庫的自啓動: 
[root@rac1 bin]#./srvctl enable database -d raw 
–查看配置 
[root@rac1 bin]# ./srvctl config database -d raw -a 
–禁止數據庫在CRS啓動後自啓動,這時需要手動啓動 
[root@rac1 bin]# ./srvctl disable database -d raw 
2) 關閉某個實例的自動啓動 
[root@rac1 bin]# ./srvctl disable instance -d raw -i rac1 
[root@rac1 bin]# ./srvctl enable instance -d raw -i rac1 
–查看信息 
[root@rac1 bin]# ./srvctl config database -d raw -a 
3)禁止某個服務在實例上運行 
[root@rac1 bin]# ./srvctl enable service -d raw -s rawservice -i rac1 
[root@rac1 bin]# ./srvctl disable service -d raw -s rawservice -i rac1 
–查看 
[root@rac1 bin]# ./srvctl config service -d raw -a 
dmm PREF: rac2 AVAIL: rac1 TAF: basic

4.1.3.4 使用remove刪除對象

使用remove命令刪除的是對象在OCR中的定義信息,對象本省比如數據庫的數據文件等不會被刪除,以後隨時可以使用add命令重新添加到OCR中。 
1)刪除Service,在刪除之前,命令會給出確定提示 
[root@rac1 bin]# ./srvctl remove service -d raw -s rawservice 
2)刪除實例,刪除之前同樣會給出提示 
[root@rac1 bin]# ./srvctl remove instance -d raw -i rac1 
3)刪除數據庫 
[root@rac1 bin]# ./srvctl remove database -d raw

4.1.3.5 啓動,停止對象與查看對象

在RAC環境下啓動,關閉數據庫雖然仍然可以使用SQL/PLUS方法,但是更推薦使用srvctl命令來做這些工作,這可以保證即使更新CRS中運行信息,可以使用start/stop命令啓動,停止對象,然後使用status命令查看對象狀態。 
1) 啓動數據庫,默認啓動到open狀態 
[root@rac1 bin]# ./srvctl start database -d raw 
2) 指定啓動狀態 
[root@rac1 bin]# ./srvctl start database -d raw -i rac1 -o mount 
[root@rac1 bin]# ./srvctl start database -d raw -i rac1 -o nomount 
3) 關閉對象,並指定關閉方式 
[root@rac1 bin]# ./srvctl stop instance -d raw -i rac1 -o immediate 
[root@rac1 bin]# ./srvctl stop instance -d raw -i rac1 -o abort 
4) 在指定實例上啓動服務: 
[root@rac1 bin]# ./srvctl start service -d raw -s rawservice -i rac1 
–查看服務狀態 
[root@rac1 bin]# ./srvctl status service -d raw -v 
5) 關閉指定實例上的服務 
[root@rac1 bin]# ./srvctl stop service -d raw -s rawservice -i rac1 
–查看服務狀態 
[root@rac1 bin]# ./srvctl status service -d raw -v

4.1.3.6 跟蹤srcctl

在Oracle 10g中要跟蹤srvctl非常簡單,只要設置srvm_trace=true這個OS環境變量即可,這個命令的所有函數調用都會輸出到屏幕上,可以幫助用戶進行診斷。 
[root@rac1 bin]# export SRVM_TRACE=TRUE 
[root@rac1 bin]# ./srvctl config database -d raw

4.1.4 恢復

設OCR磁盤和Votedisk磁盤全部破壞,並且都沒有備份,該如何恢復,這時最簡單的方法就是重新初始話OCR和Votedisk, 具體操作如下:

1) 停止所有節點的Clusterware Stack

Crsctl stop crs;

2) 分別在每個節點用root用戶執行$CRS_HOME\install\rootdelete.sh腳本

3) 在任意一個節點上用root用戶執行$CRS_HOME\install\rootinstall.sh腳本

4) 在和上一步同一個節點上用root執行$CRS_HOME\root.sh腳本

5) 在其他節點用root執行行$CRS_HOME\root.sh腳本

6) 用netca命令重新配置監聽,確認註冊到Clusterware中

#crs_stat -t -v 
到目前爲止,只有Listener,ONS,GSD,VIP註冊到OCR中,還需要把ASM, 數據庫都註冊到OCR中。

向OCR中添加ASM

#srvctl add asm -n rac1 -i +ASM1 -o /u01/app/product/database 
#srvctl add asm -n rac2 -i +ASM2 -o /u01/app/product/database

啓動ASM

#srvctl start asm -n rac1 
#srvctl start asm -n rac2 
若在啓動時報ORA-27550錯誤。是因爲RAC無法確定使用哪個網卡作爲Private Interconnect,解決方法:在兩個ASM的pfile文件裏添加如下參數: 
+ASM1.cluster_interconnects=’10.85.10.119′ 
+ASM2.cluster_interconnects=’10.85.10.121′

手工向OCR中添加Database對象

#srvctl add database -d raw -o /u01/app/product/database

添加2個實例對象

#srvctl add instance -d raw -i rac1 -n rac1 
#srvctl add instance -d raw -i rac2 -n rac2

修改實例和ASM實例的依賴關係

#srvctl modify instance -d raw -i rac1 -s +ASM1 
#srvctl modify instance -d raw -i rac2 -s +ASM2

啓動數據庫

#srvctl start database-d raw 
若也出現ORA-27550錯誤。也是因爲RAC無法確定使用哪個網卡作爲Private Interconnect,修改pfile參數在重啓動即可解決。 
SQL>alter system set cluster_interconnects=’10.85.10.119′ scope=spfile sid=’rac1′; 
SQL>alter system set cluster_interconnects=’10.85.10.121′ scope=spfile sid=’rac2′;



使用祕訣:

srvctl +<command:status,start,stop,config,modify,relocate>+<object:database,service,instance,nodeapps> + <option: -i ,-d,-s,-n>

srvctl -h

srvctl stop instance -h

srvctl relocate service -h 
eg:

AEG2_DB2:/oracle/product/10.2.0/crs>srvctl relocate service -h
Usage: srvctl relocate service -d <name> -s <service_name> -i <old_inst_name> -t <new_inst_name> [-f]
    -d <name>           Unique name for the database
    -s <service>        Service name
    -i <old_inst>       Old instance name
    -t <new_inst>       New instance name
    -f                  Disconnect all sessions during stop or relocate service operations
    -h                  Print usage

根據你寫出的長度不同的命令,會具體給出這個命令對應的作用的使用方法,非常好用。

---------------------Start/Stop Instance--------------------

$ srvctl status database -d racdb

$ srvctl stop instance -d racdb -i racdb1 -o abort

$ srvctl status database -d racdb


$ srvctl start instance –d db –i db02

-------------------Start/Stop CRS--------------------------

$ crsctl check crs

$ crsctl stop crs

$ /etc/init.crs stop

$ crs_stop –all

$ crsctl start crs

$ /etc/init.crs start

$ /etc/init.crs disable

$ /etc/init.crs enable

-----------------CRS Resource-----------------------------

$ crs_stat

$ crs_stat -t

$ crsctl check boot

$ crsctl check crs

# /etc/init.crs disable

# /etc/init.crs stop

# su – oracle

$ cd $ORA_CRS_HOME/bin

$./ocrconfig -restore /opt/app/oracle/crs/cdata/crs/week.ocr

# /etc/init.crs enable

$ crsctl

Usage: crsctl check crs          - checks the viability of the CRS stack

       crsctl check cssd         - checks the viability of CSS

       crsctl check crsd         - checks the viability of CRS

       crsctl check evmd         - checks the viability of EVM

       crsctl set    css <parameter> <value> - sets a parameter override

       crsctl get    css <parameter> - gets the value of a CSS parameter

       crsctl unset css <parameter> - sets CSS parameter to its default

       crsctl query css votedisk    - lists the voting disks used by CSS

       crsctl add    css votedisk <path> - adds a new voting disk

       crsctl delete css votedisk <path> - removes a voting disk

       crsctl enable crs    - enables startup for all CRS daemons

       crsctl disable crs    - disables startup for all CRS daemons

       crsctl start crs - starts all CRS daemons.

       crsctl stop crs - stops all CRS daemons. Stops CRS resources in case of cluster.

       crsctl start resources - starts CRS resources.

       crsctl stop resources - stops CRS resources.

       crsctl debug statedump evm - dumps state info for evm objects

       crsctl debug statedump crs - dumps state info for crs objects

       crsctl debug statedump css - dumps state info for css objects

       crsctl debug log css [module:level]{,module:level} ...

                             - Turns on debugging for CSS

       crsctl debug trace css - dumps CSS in-memory tracing cache

       crsctl debug log crs [module:level]{,module:level} ...

                             - Turns on debugging for CRS

       crsctl debug trace crs - dumps CRS in-memory tracing cache

       crsctl debug log evm [module:level]{,module:level} ...

                             - Turns on debugging for EVM

       crsctl debug trace evm - dumps EVM in-memory tracing cache

       crsctl debug log res <resname:level> turns on debugging for resources

       crsctl query crs softwareversion [<nodename>] - lists the version of CRS software installed

       crsctl query crs activeversion - lists the CRS software operating version

       crsctl lsmodules css - lists the CSS modules that can be used for debugging

       crsctl lsmodules crs - lists the CRS modules that can be used for debugging

       crsctl lsmodules evm - lists the EVM modules that can be used for debugging

SRVCTL命令介紹

SRVCTL命令可以控制RAC數據庫中的instance,listener以及services。

通常SRVCTL在ORACLE用戶下執行。下面我們來介紹srvctl命令。

1、通過SRVCTL命令來start/stop/check所有的實例:

$ srvctl start|stop|status database -d <db_name>

2、start/stop指定的實例:

$ srvctl start|stop|status instance -d <db_name> -i <instance_name>

3、列出當前RAC下所有的

$ srvctl config database -d <db_name>

4、start/stop/check 所有的nodeapps,比如:VIP, GSD, listener, ONS:

$ srvctl start|stop|status nodeapps -n <node_name>

5、如果你使用ASM,srvctl也可以start/stop ASM實例:

$ srvctl start|stop asm -n <node_name> [-i <asm_inst_name>] [-o<oracle_home>]

6、可以獲取所有的環境信息:

$ srvctl getenv database -d <db_name> [-i <instance_name>]

7、設置全局環境和變量:

$ srvctl setenv database -d <db_name> -t LANG=en

8、從OCR中刪除已有的數據庫:

$ srvctl remove database -d <db_name>

9、向OCR中添加一個數據庫:

$ srvctl add database -d <db_name> -o <oracle_home>

[-m <domain_name>] [-p<spfile>] [-A <name|ip>/netmask] [-r {PRIMARY | PHYSICAL_STANDBY |LOGICAL_STANDBY}] [-s <start_options>]

10、向OCR中添加一個數據庫的實例:

$ srvctl add instance -d <db_name> -i <instance_name> -n <node1>

$ srvctl add instance -d <db_name> -i <instance_name> -n <node2>

11、向OCR中添加一個ASM實例:

$ srvctl add asm -n <node_name> -i <asm_inst_name> -o <oracle_home>

12、添加一個service

$ srvctl add service -d <db_name> -s <service_name> -r <preferred_list>

[-a <available_list>] [-P <TAF_policy>] [-u]

13、修改在其他節點上的service(修改的是配置,此時使用的實例不變)

$ srvctl modify service -d <db_name> -s <service_name> -I <orig_instance_name> -t <target_instance_name>

14、relocate 某個節點的service到其他節點(當taf轉到avail實例上後,又想轉到pre的實例上,用relocate)

srvctl relocate service -d <db_name> -s <service_name> -I

<orig_instance_name> -t <target_instance_name>

SRVCTL相關的選項

SRVCTL START/STOP/STATUS options:

-d database name

-i instance name

-n node name (for nodeapps)

SRVCTL ADD options:

-A vip range, node, and database, address specification. The format of address string is:

[<logical host name>]/<VIP address>/<net mask> [/<host interface1 [ | host interface2 |..]>] [,]

[<logical host name>]/<VIP address>/<net mask> [/<host interface1[ | host interface2 |..]>]

-a for services, list of available instances, this list cannot include preferred instances

-m domain name with the format “us.domain.com”

-n node name that will support one or more instances

-o $ORACLE_HOME to locate Oracle binaries

-P for services, TAF preconnect policy - NONE, PRECONNECT

-r for services, list of preferred instances, this list cannot include available instances.

-s spfile name

-u updates the preferred or available list for the service to support the specified

instance. Only one instance may be specified with the -u switch. Instances that already

support the service should not be included.

SRVCTL MODIFY options:

-i <instance-name> -t <instance-name> : the instance name (-i) is replaced by the

instance name (-t) -i <instance-name>

-r : the named instance is modified to be a preferred instance -A address-list for VIP application,

at node level -s <asm_inst_name> : add or remove ASM dependency

SRVCTL RELOCATE options:

-i <instance-name> -t <instance-name> : the instance name (-i) is replaced by the instance name (-t)

CRS及相關服務的常用命令

1、查看狀態的命令

# su – oracle -- 先切換到oracle用戶

$ crs_stat -t -- 查看crs及所有的service的狀態

Name Type Target State Host

------------------------------------------------------------

ora.oradb.db application ONLINE ONLINE db01

ora....radb.cs application ONLINE ONLINE db01

ora....db1.srv application ONLINE ONLINE db01

ora....db2.srv application ONLINE ONLINE db02

ora....b1.inst application ONLINE ONLINE db01

ora....b2.inst application ONLINE ONLINE db02

ora....C1.lsnr application ONLINE ONLINE db01

ora.db01.gsd application ONLINE ONLINE db01

ora.db01.ons application ONLINE ONLINE db01

ora.db01.vip application ONLINE ONLINE db01

ora....C2.lsnr application ONLINE ONLINE db02

ora.db02.gsd application ONLINE ONLINE db02

ora.db02.ons application ONLINE ONLINE db02

ora.db02.vip application ONLINE ONLINE db02

$ crsctl check crs -- 用crsctl命令,檢查crs相關服務的狀態

CSS appears healthy

CRS appears healthy

EVM appears healthy

$ srvctl status nodeapps -n db01 (db02) -- 使用srvctl查看所有節點上的服務是否正常

VIP is running on node:db01

GSD is running on node:db01

Listener is running on node:db01

ONS daemon is running on node:db01

$ srvctl status database -d db -- 使用srvctl查看數據庫狀態

Instance db01 is running on node db01

Instance db02 is running on node db02

2、啓動和關閉相關服務的命令

# su – oracle

$ crs_start –all --啓動所有的crs服務

$ crs_stop –all --停止所有的crs服務

$ crsctl start crs --啓動crs服務

$ crsctl stop crs --停止crs服務

$ srvctl start nodeapps -n db01(db02) --啓動某節點上所有的應用

$ srvctl stop nodeapps -n db01(db02) --停止某節點上所有的應用

$ srvctl start listener -n db01(db02) --啓動某個節點的listener

$ srvctl stop listener -n db01(db02) --停止某個節點的listener

$ srvctl start instance –d db –i db01(db02) --啓動某個instance

$ srvctl stop instance –d db –i db01(db02) --停止某個instance

$ srvctl start database –d db --啓動數據庫

$ srvctl stop database –d db --停止數據庫

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章