1、简述crsctl和srvctl的区别
crsctl 应该是cluster control 用的,它管理的是cluster level的内容,如crsd cssd css 等进程和配置的管理
srvctl 是资源的管理,是cluster内资源的管理,比如instance asm listener vip ons gsd service .....
2、oracle对crsctl和srvctl的描述
•CRSCTL
CRSCTL是DBA和Oracle Clusterware之间的接口,为Oracle Clusterware对象解析和调用Oracle Clusterware api。
Oracle Clusterware 11g release 2(11.2)引入了支持集群的命令,可以使用这些命令在集群上执行检查、启动和停止操作。您可以从集群中的任何节点在集群中的另一个节点上或集群中的所有节点上运行这些命令,具体取决于操作。
用户可以使用CRSCTL命令在Oracle集群软件上执行几个操作,例如:
启动和停止Oracle集群程序资源;
启用和禁用Oracle集群程序守护进程;
检查集群的运行状况;
管理代表第三方应用程序的资源;
将智能平台管理接口(IPMI)与Oracle集群软件集成,提供故障隔离支持,确保集群的完整性;
调试Oracle集群组件。
•SRVCTL
使用SRVCTL管理配置信息。可以使用SRVCTL命令添加、删除、启动、停止、修改、启用和禁用许多实体,例如数据库、实例、监听、scan监听、服务、grid命名服务(GNS)和Oracle ASM。
一些SRVCTL操作修改存储在Oracle集群注册表(OCR)中的配置数据。SRVCTL通过向Oracle集群件进程(CRSD)发送请求来执行其他操作,比如启动和停止实例,然后由CRSD启动或停止Oracle集群件资源。
3、CRSCTL命令的用法及举例
Usage:
crsctl check crs –checks the viability of the CRS stack 检查CRS堆栈的可行性
crsctl check cssd – checks the viability of CSS 检查CSS的可行性
crsctl check crsd – checks the viability of CRS 检查CRS的可行性
crsctl check evmd – checks the viability of EVM 检查EVM的可行性
crsctl set css– sets a parameter override 设置css参数
crsctl get css– gets the value of a CSS parameter 获取css参数的值
crsctl unset css– sets CSS parameter to its default 设置css参数默认值
crsctl query css votedisk – lists the voting disks used by CSS 列出voting disk盘的信息
crsctl add css votedisk– adds a new voting disk 添加一个voting disk
crsctl delete css votedisk– removes a voting disk 删除一个voting disk
crsctl enable crs – enables startup for all CRS daemons 开机自启动crs进程
crsctl disable crs – disables startup for all CRS daemons 关闭开机自启动crs进程
crsctl start crs – starts all CRS daemons. 启动crs进程
crsctl stop crs – stops all CRS daemons. Stops CRS resources in case of cluster. 关闭所有crs进程,关闭集群资源
crsctl start resources – starts CRS resources.启动crs资源
crsctl stop resources – stops CRS resources. 关闭crs资源
crsctl debug statedump evm – dumps state info for evm objects 获取evm的状态信息
crsctl debug statedump crs – dumps state info for crs objects 获取crs的状态信息
crsctl debug statedump css – dumps state info for css objects 获取css的状态信息
crsctl debug log css [module:level]{,module:level} … – Turns on debugging for CSS 调试css
crsctl debug trace css – dumps CSS in-memory tracing cache 获取css trace缓存跟踪
crsctl debug log crs [module:level]{,module:level} … – Turns on debugging for CRS 调试crs
crsctl debug trace crs – dumps CRS in-memory tracing cache 获取crs trace缓存跟踪
crsctl debug log evm [module:level]{,module:level} … – Turns on debugging for EVM 调试EVM
crsctl debug trace evm – dumps EVM in-memory tracing cache 获取evm trace缓存跟踪
crsctl debug log resturns on debugging for resources 获取资源信息
crsctl query crs softwareversion [] – lists the version of CRS software installed 列出所安装的CRS软件的版本
crsctl query crs activeversion – lists the CRS software operating version 列出CRS软件操作版本
crsctl lsmodules css – lists the CSS modules that can be used for debugging 列出可以用于调试的css模块
crsctl lsmodules crs – lists the CRS modules that can be used for debugging 列出可用于调试的crs模块
crsctl lsmodules evm – lists the EVM modules that can be used for debugging 列出可用于调试的evm模块
复制
•使用案例
Ø检查crs状态
[grid@bx-xddb-02 ~]$ crsctl check crs
CRS-4638: Oracle High Availability Services is online
CRS-4537: Cluster Ready Services is online
CRS-4529: Cluster Synchronization Services is online
CRS-4533: Event Manager is online
Ø检查单个状态
[grid@bx-xddb-02 ~]$ crsctl check css
CRS-4529: Cluster Synchronization Services is online
[grid@bx-xddb-02 ~]$ crsctl check evm
CRS-4533: Event Manager is online
[grid@bx-xddb-02 ~]$ crsctl check ctss
CRS-4701: The Cluster Time Synchronization Service is in Active mode.
CRS-4702: Offset (in msec): 0
Ø启动crs栈,必须使用root用户
# ./crsctl start crs
Attempting to start CRS stack
The CRS stack will be started shortly
Ø停止crs栈,必须使用root用户
# ./crsctl stop crs
Stopping resources.
Successfully stopped CRS resources
Stopping CSSD.
Shutting down CSS daemon.
Shutdown request successfully issued.
Ø配置crs进程栈是否随着操作系统的启动而自启动,有时出于维护目的需要关闭这个特性,可以用root用户执行下面命令。
# ./crsctl disable crs
# ./crsctl enable crs
这个命令实际是修改了
/etc/oracle/scls_scr/raw/root/crsstart这个文件里的内容。
Ø查看votedisk磁盘位置
[grid@bx-xddb-02 ~]$ crsctl query css votedisk
## STATE File Universal Id File Name Disk group
-- ----- ----------------- --------- ---------
1. ONLINE 9fadab36332d4f56bfb4f5c72f514dff (/dev/mapper/griddg1) [GRIDDG]
2. ONLINE 92691835341b4fd2bf48a0ca5f18be37 (/dev/mapper/griddg2) [GRIDDG]
3. ONLINE 278f6e0260844ff5bff11f16293e6542 (/dev/mapper/griddg3) [GRIDDG]
复制
Ø增加votedisk
# ./crsctl add css votedisk {PATH}
Ø删除votedisk
# ./crsctl delete css votedisk {PATH}
Ø查看crs参数
[grid@bx-xddb-02 ~]$ crsctl get css misscount
CRS-4678: Successful get misscount 30 for Cluster Synchronization Services.
Ø修改crs参数,必须为root用户
# ./crsctl set css miscount 60
Ø跟踪crs模块,提供辅助功能
CRS由CRS,CSS,EVM三个服务组成,每个服务又是由一系列module组成,crsctl允许对每个module进行跟踪,并把跟踪内容记录到日志中。
[root@bx-xddb-02 ~]# oracle/app/grid/product/11.2.0/bin/crsctl lsmodules css
List CSSD Debug Module: CLSF
List CSSD Debug Module: CSSD
List CSSD Debug Module: GIPCCM
List CSSD Debug Module: GIPCGM
List CSSD Debug Module: GIPCNM
List CSSD Debug Module: GPNP
List CSSD Debug Module: OLR
List CSSD Debug Module: SKGFD
[root@bx-xddb-02 ~]# oracle/app/grid/product/11.2.0/bin/crsctl lsmodules evm
List EVMD Debug Module: CLSVER
List EVMD Debug Module: CLUCLS
List EVMD Debug Module: COMMCRS
List EVMD Debug Module: COMMNS
List EVMD Debug Module: CRSCCL
List EVMD Debug Module: CRSOCR
List EVMD Debug Module: CSSCLNT
List EVMD Debug Module: EVMAGENT
List EVMD Debug Module: EVMAPP
List EVMD Debug Module: EVMCOMM
List EVMD Debug Module: EVMD
List EVMD Debug Module: EVMDMAIN
List EVMD Debug Module: EVMEVT
List EVMD Debug Module: OCRAPI
List EVMD Debug Module: OCRCLI
List EVMD Debug Module: OCRMSG
复制
Ø跟踪CSSD模块,需要root用户执行:
# ./crsctl debug log css "CSSD:1"
Configuration parameter trace is now set to 1.
Set CRSD Debug Module: CSSD Level: 1
复制
Ø查看跟踪日志
# pwd
/oracle/app/grid/product/11.2.0/log/bx-xddb-02/cssd
# more ocssd.log
2020-07-08 09:18:49.516: [ CSSD][1086634304]clssscSelect: cookie accept request 0x122b9520
2020-07-08 09:18:49.516: [ CSSD][1086634304]clssgmAllocProc: (0x1268c070) allocated
2020-07-08 09:18:49.517: [ CSSD][1086634304]clssgmClientConnectMsg: properties of cmProc 0x1268c070 - 1,2,3,4,5
2020-07-08 09:18:49.517: [ CSSD][1086634304]clssgmClientConnectMsg: Connect from con(0xf695f687) proc(0x1268c070) pid(25708) version 11:2:1:4, properties: 1,2,3,4,5
2020-07-08 09:18:49.517: [ CSSD][1086634304]clssgmClientConnectMsg: msg flags 0x0000
2020-07-08 09:18:49.519: [ CSSD][1086634304]clssgmExecuteClientRequest: CONFIG recvd from proc 43 (0x1268c070)
2020-07-08 09:18:49.519: [ CSSD][1086634304]clssgmConfig: type(1)
2020-07-08 09:18:49.521: [ CSSD][1086634304]clssgmDeadProc: proc 0x1268c070
2020-07-08 09:18:49.521: [ CSSD][1086634304]clssgmDestroyProc: cleaning up proc(0x1268c070) con(0xf695f687) skgpid ospid 25708 with 0 clients, refcount 0
2020-07-08 09:18:49.521: [ CSSD][1086634304]clssgmDiscEndpcl: gipcDestroy 0xf695f687
复制
4、SRVCTL命令的用法及举例
SRVCTL是ORACLE RAC集群配置管理的工具,可以管理Database、Instance、ASM、Service、Listener和Node Application,Node Application包括GSD,ONS,VIP。
srvctl的命令格式为
srvctl
[grid@bx-xddb-02 ~]$ srvctl
用法:srvctl[]
命令:enable|disable|start|stop|relocate|status|add|remove|modify|getenv|setenv|unsetenv|config|convert|upgrade
对象:database|instance|service|nodeapps|vip|network|asm|diskgroup|listener|srvpool|server|scan|scan_listener|oc4j|home|filesystem|gns|cvu
复制
有关各个命令和对象的详细帮助, 请使用:
srvctl
srvctl
Ø如果需要跟踪srvctl命令的信息,需设置OS的SRVM_TRACE=true
[grid@bx-xddb-02 ~]$ export SRVM_TRACE=true
[grid@bx-xddb-02 ~]$ srvctl config database -d xddb|more
[main] [ 2020-07-08 09:31:51.021 CST ] [OPSCTLDriver.setInternalDebugLevel:198] tracing is true at level 2 to file null
[main] [ 2020-07-08 09:31:51.027 CST ] [OPSCTLDriver.main:141] SRVCTL arguments : args[0]=config args[1]=database args[2]=-d args[3]=xddb
[main] [ 2020-07-08 09:31:51.069 CST ] [Version.isPre:528] version to be checked 11.2.0.3.0 major version to check against10
[main] [ 2020-07-08 09:31:51.069 CST ] [Version.isPre:539] isPre.java: Returning FALSE
[main] [ 2020-07-08 09:31:51.072 CST ] [OCR.loadLibrary:312]
Inside constructor of OCR
[main] [ 2020-07-08 09:31:51.096 CST ] [OCR.loadLibrary:320] Going to load the ocr library
[main] [ 2020-07-08 09:31:51.096 CST ] [Library.load:188] library.load
[main] [ 2020-07-08 09:31:51.098 CST ] [sPlatform.isHybrid:66] osName=Linux osArch=amd64 JVM=64 rc=false
[main] [ 2020-07-08 09:31:51.098 CST ] [sPlatform.isHybrid:66] osName=Linux osArch=amd64 JVM=64 rc=false
[main] [ 2020-07-08 09:31:51.099 CST ] [Library.load:264] Loading library oracle/app/grid/product/11.2.0/lib/libsrvmocr11.so
[main] [ 2020-07-08 09:31:51.111 CST ] [OCR.loadLibrary:322] loaded ocr libraries
[main] [ 2020-07-08 09:31:51.111 CST ] [OCR.isCluster:952] Calling OCRNative for isCluster()
[main] [ 2020-07-08 09:31:51.114 CST ] [nativesystem.OCRNative.Native] JNI: isCluster() Successfully initialized meta context
[main] [ 2020-07-08 09:31:51.115 CST ] [nativesystem.OCRNative.Native] JNI: procr_get_conf() retValue = 0
[main] [ 2020-07-08 09:31:51.115 CST ] [nativesystem.OCRNative.Native] The OCR file is configured & local_only=false
[main] [ 2020-07-08 09:31:51.116 CST ] [OCR.isCluster:956] OCR Result status = true
[main] [ 2020-07-08 09:31:51.116 CST ] [OCR.isCluster:968] Bolean result = true
[main] [ 2020-07-08 09:31:51.117 CST ] [CommandLineParser.:403] Is this a cluster? : true
[main] [ 2020-07-08 09:31:51.117 CST ] [CommandLineParser.parse:415] parsing cmdline args
[main] [ 2020-07-08 09:31:51.118 CST ] [CommandLineParser.parse2WordCommandOptions:2485] parsing 2-word cmdline, args count = 4
[main] [ 2020-07-08 09:31:51.118 CST ] [CommandLineParser.parse2WordCommandOptions:2493] Checking single valued options
[main] [ 2020-07-08 09:31:51.119 CST ] [CommandLineParser.parse2WordCommandOptions:2498] argInx = 2, option =-d
[main] [ 2020-07-08 09:31:51.119 CST ] [CommandLineParser.parse2WordCommandOptions:2500] Option string: -d
[main] [ 2020-07-08 09:31:51.120 CST ] [CommandLineParser.parse2WordCommandOptions:2587] Checking mandatory options
[main] [ 2020-07-08 09:31:51.121 CST ] [CommandLineParser.parse2WordCommandOptions:2600] brace_begin_index: -1 vertical_bar_index: -1 brace_end_index: -1
[main] [ 2020-07-08 09:31:51.121 CST ] [CommandLineParser.checkIntegersAndSpecificValues:3534] check specificMultiValues
..................................................................
复制
•SRVCTL Config命令
Ø显示OCR中所有注册的数据库
[grid@bx-xddb-02 ~]$ srvctl config database
xddb
-d选项可以查看特定数据库配置,下面的配置显示,rac1节点上运行有xddb1实例,$ORACLE_HOME为/oracle/app/oracle/product/11.2.0
[grid@bx-xddb-01 ~]$ srvctl config database -d xddb
数据库唯一名称: xddb
数据库名:
Oracle 主目录: oracle/app/oracle/product/11.2.0
Oracle 用户: oracle
Spfile: +DATADG/xddb/spfilexddb.ora
域:
启动选项: open
停止选项: immediate
数据库角色: PRIMARY
管理策略: AUTOMATIC
服务器池: xddb
数据库实例: xddb1,xddb2
磁盘组: DATADG
装载点路径:
服务:
类型: RAC
数据库是管理员管理的
复制
-a选项查看详细信息
[grid@bx-xddb-01 ~]$ srvctl config database -d xddb -a
数据库唯一名称: xddb
数据库名:
Oracle 主目录: oracle/app/oracle/product/11.2.0
Oracle 用户: oracle
Spfile: +DATADG/xddb/spfilexddb.ora
域:
启动选项: open
停止选项: immediate
数据库角色: PRIMARY
管理策略: AUTOMATIC
服务器池: xddb
数据库实例: xddb1,xddb2
磁盘组: DATADG
装载点路径:
服务:
类型: RAC
数据库已启用
数据库是管理员管理的
复制
Ø查看Node Application的配置
[grid@bx-xddb-01 ~]$ srvctl config nodeapps
网络存在: 1/23.4.160.0/255.255.248.0/eth2, 类型 static
VIP 存在: /bx-xddb-01-vip/23.4.160.12/23.4.160.0/255.255.248.0/eth2, 托管节点 bx-xddb-01
VIP 存在: /bx-xddb-02-vip/23.4.160.13/23.4.160.0/255.255.248.0/eth2, 托管节点 bx-xddb-02
ONS 存在: 本地端口 6100, 远程端口 6200, EM 端口 2016
PRKO-2312 : GSD 不存在。
复制
Ø查看ASM,输出的为ASM实例的$ORACLE_HOME
$ srvctl config asm
[grid@bx-xddb-01 ~]$ srvctl config asm
ASM 主目录: oracle/app/grid/product/11.2.0
ASM 监听程序: LISTENER
Ø查看数据库所有Service配置
$ srvctl config service -d xddb
Ø查看某个Service的配置
$ srvctl config service -d xddb -s olap
•SRVCTL Add命令
添加数据库或实例的配置信息。在增加实例中,与-i一起指定的名字应该与INSTANCE_NAME 和 ORACLE_SID参数匹配。
srvctl add database -d
srvctl add instance -d
srvctl add instance -d
命令参数:
-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 xddb
$srvctl disable database -d xddb
$srvctl enable database -d xddb -i xddb1
$srvctl disable database -d xddb -i xddb1 -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 xddb
$srvctl remove instance -d xddb -i xddb1
$srvctl remove instance -d xddb -i xddb2
复制
•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 xddb
$ srvctl stop database -d xddb -c “SYS/SYS_password as SYSDBA”
$srvctl start instance -d xddb -i xddb1,xddb2
复制
Ø启停监听
$ srvctl stop listener -n node [-l listenername]
$srvctl start listener -n node1
$srvctl stop listener -n node2
如果用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 xddb
实例 xddb1 正在节点 bx-xddb-01 上运行
实例 xddb2 正在节点 bx-xddb-02 上运行
[grid@bx-xddb-01 ~]$ srvctl status instance -d xddb -i xddb1,xddb2
实例 xddb1 正在节点 bx-xddb-01 上运行
实例 xddb2 正在节点 bx-xddb-02 上运行
[grid@bx-xddb-01 ~]$ srvctl status instance -d xddb -i xddb1
实例 xddb1 正在节点 bx-xddb-01 上运行
复制
•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 xddb
$srvctl stop instance -d xddb -i xddb2
$ 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 xddb
复制
•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 xddb -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 xddb -t CLASSPATH
复制
•启停数据库
STARTUP:
node1$srvctl start nodeapps -n bx-xddb-01
node1$srvctl start nodeapps -n bx-xddb-02
node1$srvctl start asm -n bx-xddb-01
node1$srvctl start asm -n bx-xddb-02
node1$srvctl start database -d xddb
node1$srvctl start service -d xddb
node1$crs_stat -t 或crsctl status resource -t
SHUTDOWN:
node1$srvctl stop service -d xddb
node1$srvctl stop database -d xddb
node1$srvctl stop asm -n bx-xddb-02
node1$srvctl stop asm -n bx-xddb-01
node1$srvctl stop nodeapps -n bx-xddb-02
node1$srvctl stop nodeapps -n bx-xddb-01
node1$crs_stat -t或crsctl status resource -t
复制