srvctl命令詳解

SRVCTL概述

SRVCTL是ORACLE RAC集羣配置管理的工具,可以管理Database、Instance、ASM、Service、Listener和Node Application,Node Application包括GSD,ONS,VIP。srvctl的命令格式爲

srvctl <command> <target> [options]

srvctl

Usage: srvctl <command> <object> [<options>]

    command: enable|disable|start|stop|relocate|status|add|remove|modify|getenv|setenv|unsetenv|config

    objects: database|instance|service|nodeapps|asm|listener

For detailed help on each command and object and its options use:

    srvctl <command> <object> -h

如果需要跟蹤srvctl命令的信息,需設置OS的SRVM_TRACE=true

$export SRVM_TRACE=true

$ srvctl config database -d czmmiao|more

/u01/app/oracle/product/10.2.0/db_1/jdk/jre/bin/java -classpath /u01/app/oracle/product/10.2.0/db_1/jlib/netcfg.jar:/u01/app/oracle/

product/10.2.0/db_1/jdk/jre/lib/rt.jar:/u01/app/oracle/product/10.2.0/db_1/jdk/jre/lib/i18n.jar:/u01/app/oracle/product/10.2.0/db_1/

jlib/srvm.jar:/u01/app/oracle/product/10.2.0/db_1/jlib/srvmhas.jar:/u01/app/oracle/product/10.2.0/db_1/jlib/srvmasm.jar:/u01/app/ora

cle/product/10.2.0/db_1/srvm/jlib/srvctl.jar -DTRACING.ENABLED=true -DTRACING.LEVEL=2 oracle.ops.opsctl.OPSCTLDriver config database

 -d czmmiao

[main] [21:18:59:903] [OPSCTLDriver.setInternalDebugLevel:165]  tracing is true at level 2 to file null

[main] [21:19:0:36] [OPSCTLDriver.<init>:95]  Security manager is set

..................................................................

SRVCTL Config命令 

顯示OCR中所有註冊的數據庫

$ srvctl config database

czmmiao

-d選項可以查看特定數據庫配置,下面的配置顯示,rac1節點上運行有czmmmiao1實例,$ORACLE_HOME爲/u01/app/oracle/product/10.2.0/crs

$ srvctl config database -d czmmiao

rac1 czmmiao1 /u01/app/oracle/product/10.2.0/crs

rac2 czmmiao2 /u01/app/oracle/product/10.2.0/crs

-a選項查看詳細信息

$ srvctl config database -d czmmiao -a

czmmiao2 czmmiao1 /u01/app/oracle/product/10.2.0/crs

czmmiao1 czmmiao2 /u01/app/oracle/product/10.2.0/crs

DB_NAME: czmmiao

ORACLE_HOME: /u01/app/oracle/product/10.2.0/crs

SPFILE: +DATA/czmmiao/spfileczmmiao.ora

DOMAIN: null

DB_ROLE: null

START_OPTIONS: null

POLICY:  AUTOMATIC

ENABLE FLAG: DB ENABLED

查看Node Application的配置

$ srvctl config nodeapps -n czmmiao1

rac1 czmmiao2 /u01/app/oracle/product/10.2.0/crs

查看VIP配置

$ srvctl config nodeapps -n czmmiao1 -a

VIP exists.: /czmmiao1-vip/192.168.2.113/255.255.255.0/eth1

查看GSD配置

$ srvctl config nodeapps -n czmmiao1 -g

GSD exists.

查看ONS配置

$ srvctl config nodeapps -n czmmiao1 -s

ONS daemon exists.

查看listener配置

$ srvctl config nodeapps -n czmmiao1 -l

Listener exists.

查看listener配置

$ srvctl config listener -n czmmiao1

czmmiao1 LISTENER_CZMMIAO1

查看ASM,輸出的爲ASM實例的$ORACLE_HOME

$ srvctl config asm -n czmmiao1

+ASM2 /u01/app/oracle/product/10.2.0/crs

查看數據庫所有Service配置

$ srvctl config service -d czmmiao -a

olap PREF: czmmiao2 AVAIL: czmmiao1 TAF: basic

查看某個Service的配置

$ srvctl config service -d czmmiao -s olap

olap PREF: czmmiao2 AVAIL: czmmiao1

查看某個Service的配置,包括TAF策略

$ srvctl config service -d czmmiao -s olap -a

olap PREF: czmmiao2 AVAIL: czmmiao1 TAF: basic

關於TAF策略配置,可以參見筆者的如下博客

http://czmmiao.iteye.com/blog/1735773

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 文件名

-S        服務名

-r         首選實例名

-a        備選實例名

-P        TAF策略

$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 -o$ORACLE_HOME
$srvctl add service -d RAC -s Service2 -r "RAC1,RAC2" -a "RAC3,RAC4" -P basic 

SRVCTL enable/disable命令 

缺省情況下數據庫、實例、服務、ASM都是隨着CRS的啓動而自動啓動的,有時由於維護需要,可以先關閉這個特性

$srvctl enable database -d czmmiao

 

$srvctl disable database -d czmmiao

$srvctl enable database -d czmmiao -i czmmiao1

$srvctl disable database -d czmmiao -i czmmiao1 -s abcservice

SRVCTL Modify命令 
修改實例的節點配置信息,這些修改會在程序下次重新啓動後生效,修改後的信息將永久保存。
srvctl modify instance -d database_name -i instance_name -n node_name 
Eg:
$srvctl modify instance -d rac -n new_node 
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 
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 stop listener -n node [-l listenername]
$srvctl start listener -n node1
$srvctl stop listener -n node2 
SRVCTL命令的小bug具體參見

http://yangtingkun.itpub.net/post/468/275571
如果用srvctl關閉監聽後,再用lsnrctl start打開監聽。這時srvctl仍然認爲監聽已經關閉。因此,再次使用srvctl關閉監聽,似乎srvctl根本沒有去執行。如果希望srvctl可以關閉監聽,那麼需要先用srvctl啓動監聽,然後再關閉。搜索了一下metalink,沒有發現關於這個問題的說明。而且,這個問題只在關閉監聽時出現,啓動監聽則沒有問題。svrctl顯然只記錄它自己的操作,而不去檢查listener真正的狀態。
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 
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 
使用SRVCONFIG導入和導出RAW設備配置信息 
可使用SRVCONFIG導入和導出RAW設備配置信息,不管配置文件是在集羣文件系統上還是在RAW設備上。你可以使用這種方法來備份與恢復SRVM配置信息。
Eg:
下面的命令用來導出配置信息的內容到你指定文件名的文本文件中。
$srvconfig -exp file_name 
下面的命令用來從指定文本文件中導入配置信息到到你運行命令的RAC環境配置信息庫。
$srvconfig -imp file_name 
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 
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 
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

啓停數據庫 
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

發佈了177 篇原創文章 · 獲贊 43 · 訪問量 46萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章