上周又做了一次ASM+RAC的實驗,這次體驗了srvctl這個強大的工具來管理RAC,對srvctl命令使用總結了一下:
SRVCTL是ORACLE RAC叢集組態管理的工具
SRVM server management:
1. SRVCTL Add命令
添加資料庫或執行個體的配置資訊。在增加執行個體中,與-i一起指定的名字應該與INSTANCE_NAME 和 ORACLE_SID參數匹配。
srvctl add database -d <database name> [-m domain_name] -o <ORACLE_HOME path> -p <spfile location and name>
srvctl add instance -d <database name> -i <instance 1 name> -n <node 1 name >
srvctl add instance -d <database name> -i <instance 2 name> -n <node 2 name >
命令參數:
-m 資料庫網域名稱 格式如”us.oracle.com”
指定的資料庫網域名稱必須匹配資料庫INIT.ORA或者SPFILE中DB_DOMAIN 和DB_NAME參數。在增加資料庫時,-d指定的資料庫名必須與DB_NAME參數匹配
-n 執行個體節點名
-o $ORACLE_HOME(用來確定lsnrctl和Oracle等命令路徑)
-p SPFILE 檔案名稱
Eg:
$srvctl add database -d RAC -o /u01/oracle/product/10.2.0/db_1 -p +RAC_DISK/rac/spfilerac.ora
$srvctl add instance -d RAC -i rac1 -n node1
$srvctl add instance -d RAC -i rac2 -n node2
2.SRVCTL Config命令
顯示儲存在SRVM設定檔中的配置資訊
srvctl config database
顯示資料庫配置列表
srvctl config database -d database_name
資料庫配置資訊顯示的格式:
nodename1 instancename1 oraclehome
nodename2 instancename2 oraclehome
Eg:
$ srvctl config database
RAC
$srvctl config database -d rac
node1 rac1 /u01/oracle/product/10.2.0/db_1
node2 rac2 /u01/oracle/product/10.2.0/db_1
3.SRVCTL Modify命令
修改執行個體的節點配置資訊,這些修改會在程式下次重新啟動後生效,修改後的資訊將永久儲存。
srvctl modify instance -d database_name -i instance_name -n node_name
Eg:
$srvctl modify instance -d rac -n new_node
4.SRVCTL Remove命令
這是用來刪除SRVM庫中配置資訊的命令,對象相關的環境設定也同樣刪除,如果你未使用強制標誌(-f),ORACLE將提示你確認是否刪除。
使用強制選項(-f),刪除操作將不進行提示
srvctl remove database -d database_name [-f]
srvctl remove instance -d database_name -i instance_name [-f]
命令參數:
-f 強制移除應用時不進行確認提示
Eg:
$srvctl remove database -d rac
$srvctl remove instance -d rac -i rac1
$srvctl remove instance -d rac -i rac2
5.SRVCTL Start命令
啟動資料庫,所有執行個體或指定的執行個體,及啟動所有相關未啟動的監聽。
註:對於start命令和其它一些可以使用連接字串的操作,如果你不提供連接字串,那麼ORACLE會使用”/ as sysdba”在執行個體上執行相關的操作。另外,要執行類似的操作,你必須是OSDBA組的成員。
srvctl start database -d database_name [-o start_options] [-c connect_string]
srvctl start instance -d database_name -i instance_name [,instance_name-list] [-o start_options][-c connect_string]
命令參數:
-o 在SQL*Plus直接傳遞的startup命令選項,可以包括PFILE
-c 使用SQL*Plus串連資料庫執行個體的連接字串
Eg:
$srvctl start database -d rac
$ srvctl stop database -d rac -c “SYS/SYS_password as SYSDBA”
$srvctl start instance -d rac -i rac1,rac2
##############################################################
$srvctl start listener -n node1
$srvctl stop listener -n node2
$ srvctl stop listener -n node [-l listenername]
今天發現一個SRVCTL命令的小bug。(http://yangtingkun.itpub.net/post/468/275571)
如果用srvctl關閉監聽後,再用lsnrctl start開啟監聽。這時srvctl仍然認為監聽已經關閉。因此,再次使用srvctl關閉監聽,似乎srvctl根本沒有去執行。如果希望srvctl可以關閉監聽,那麼需要先用srvctl啟動監聽,然後再關閉。搜尋了一下metalink,沒有發現關於這個問題的說明。而且,這個問題只在關閉監聽時出現,啟動監聽則沒有問題。svrctl顯然只記錄它自己的操作,而不去檢查listener真正的狀態。
##############################################################
6.SRVCTL Status命令
顯示指定資料庫的目前狀態
srvctl status database -d database_name
srvctl status instance -d database_name -i instance_name [,instance_name-list]
Eg:
$srvctl status database -d rac
$srvctl status instance -d rac -i rac1,rac2
7.SRVCTL Stop命令
停止資料庫所有執行個體可者指定執行個體
srvctl stop database -d database_name [-o stop_options] [-c connect_string]
srvctl stop instance -d database_name -i instance_name [,instance_name_list] [-o stop_options][-c connect_string]
命令參數:
-c 使用SQL*Plus串連資料庫執行個體的連接字串
-o 在SQL*Plus直接傳遞的shutdown命令選項
Eg:
$srvctl stop database -d rac
$srvctl stop instance -d rac -i rac2
$ srvctl stop service -d db_name [-s service_name_list [-i inst_name]]
$ srvctl stop asm -n node
8.使用SRVCONFIG匯入和匯出RAW裝置配置資訊
你可使用SRVCONFIG匯入和匯出RAW裝置配置資訊,不管設定檔是在叢集檔案系統上還是在RAW裝置上。你可以使用這種方法來備份與恢複SRVM配置資訊。
Eg:
下面的命令用來匯出配置資訊的內容到你指定檔案名稱的文字檔中。
$srvconfig -exp file_name
下面的命令用來從指定文字檔中匯入配置資訊到到你運行命令的RAC環境配置資訊庫。
$srvconfig -imp file_name
9.SRVCTL Getenv命令
getenv操作用來從SRVM設定檔中擷取與顯示環境變數
srvctl getenv database -d database_name [-t name[,name,……]]
srvctl getenv instance -d database_name -i instance_name [-t name[,name,……]]
Eg:
$srvctl getenv database -d rac
10.SRVCTL Setenv命令
設定SRVM設定檔中的環境變數值。
srvctl setenv database -d database_name -t [,name=value,……]
srvctl setenv instance -d database_name [-i instance_name] -t [,name=value,……]
Eg:
$srvctl setenv database -d rac -t LANG=en
11.SRVCTL Unsetenv命令
取消SRVM設定檔中環境變數定義值
srvctl unsetenv database -d database_name-t name[,name,……]
srvctl unsetenv instance -d database_name[-i instance_name] -t name[,name,……]
Eg:
$srvctl unsetenv database -d rac -t CLASSPATH
Updated @ 11-12-09 11:43
Example:In windows, the correct startup/shutdown steps is:
STARTUP:
node1$srvctl start nodeapps -n rac1
node1$srvctl start nodeapps -n rac2
node1$srvctl start asm -n rac1
node1$srvctl start asm -n rac2
node1$srvctl start database -d rac
node1$srvctl start service -d rac
node1$crs_stat -t
SHUTDOWN:
node1$srvctl stop service -d rac
node1$srvctl stop database -d rac
node1$srvctl stop asm -n rac2
node1$srvctl stop asm -n rac1
node1$srvctl stop nodeapps -n rac2
node1$srvctl stop nodeapps -n rac1
node1$crs_stat -t
-The End-