CRS提供了很多命令可以管理和查看集群服务状态,常用的有crs_stat、crs_start、crs_stop、crsctl等,这里依次介绍。
1、 查看集群状态
通过crs_stat命令可以查看集群中所有资源的状态,包括资源状态、资源运行在哪个节点上、资源类型等信息。例如:
- [oracle@node-rac1 ~]$ crs_stat –t
- Name Type Target State Host
- ------------------------------------------------------------
- ora....SM1.asm application ONLINE ONLINE node-rac1
- ora....C1.lsnr application ONLINE ONLINE node-rac1
- ora....ac1.gsd application ONLINE ONLINE node-rac1
- ora....ac1.ons application ONLINE ONLINE node-rac1
- ora....ac1.vip application ONLINE ONLINE node-rac1
- ora....SM2.asm application ONLINE ONLINE node-rac2
- ora....C2.lsnr application ONLINE ONLINE node-rac2
- ora....ac2.gsd application ONLINE ONLINE node-rac2
- ora....ac2.ons application ONLINE ONLINE node-rac2
- ora....ac2.vip application ONLINE ONLINE node-rac2
- ora.racdb.db application ONLINE ONLINE node-rac2
- ora....b1.inst application ONLINE ONLINE node-rac1
- ora....b2.inst application ONLINE ONLINE node-rac2
- ora....test.cs application ONLINE ONLINE node-rac2
- ora....db1.srv application ONLINE ONLINE node-rac1
- ora....db2.srv application ONLINE ONLINE node-rac2
如果要更详细的了解每个资源的名称及状态,还可以使用“crs_stat -l”命令,例如:
- [oracle@node-rac2 ~]$crs_stat -l|head -n 15
- NAME=ora.node-rac1.ASM1.asm
- TYPE=application
- TARGET=ONLINE
- STATE=ONLINE on node-rac1
- NAME=ora.node-rac1.LISTENER_NODE-RAC1.lsnr
- TYPE=application
- TARGET=ONLINE
- STATE=ONLINE on node-rac1
- NAME=ora.node-rac1.gsd
- TYPE=application
- TARGET=ONLINE
- STATE=ONLINE on node-rac1
可以看到,这个输出中包含了每个服务完整的名称和运行状态。通过了解节点运行状态,有助于对RAC集群的管理和维护。
还可以使用crs_stat -p <resource_name> 来查看资源的属性情况,包括依赖关系等等,例如:
- [oracle@node-rac1 ~]$crs_stat -p ora.node-rac2.LISTENER_NODE-RAC2.lsnr
2.1 crs_stop与crs_start命令
通过crs_stop可以方便的关闭某个服务资源,例如:
- [oracle@node-rac1 admin]$ crs_stop ora.node-rac1.LISTENER_NODE-RAC1.lsnr
- Attempting to stop `ora.node-rac1.LISTENER_NODE-RAC1.lsnr` on member `node-rac1`
- Stop of `ora.node-rac1.LISTENER_NODE-RAC1.lsnr` on member `node-rac1` succeeded.
此时,查看node-rac1节点的LISTENER服务状态:
- [oracle@node-rac1 ~]$ crs_stat -t|grep lsnr
- ora....C1.lsnr application OFFLINE OFFLINE
- ora....C2.lsnr application ONLINE ONLINE node-rac2
从输出可知,node-rac1节点的LISTENER服务已经处于OFFLINE状态了。
接着启动node-rac1节点的LISTENER服务:
- [oracle@node-rac1 ~]$crs_start ora.node-rac1.LISTENER_NODE-RAC1.lsnr
- Attempting to start `ora.node-rac1.LISTENER_NODE-RAC1.lsnr` on member `node-rac1`
- Start of `ora.node-rac1.LISTENER_NODE-RAC1.lsnr` on member `node-rac1` succeeded.
其实RAC数据库的监听还可以通过如下方式启动和关闭:
- [oracle@node-rac1 ~]$lsnrctl start LISTENER_NODE-RAC1
- [oracle@node-rac1 ~]$lsnrctl stop LISTENER_NODE-RAC1
有时候,可能需要将集群资源全部关闭,可以通过如下命令完成:
- [oracle@node-rac1 ~]$ crs_stop -all
也通过一个命令将集群所有资源全部启动,操作如下:
- [oracle@node-rac2 ~]$ crs_start -all
2.2 crsctl命令
crsctl命令功能非常强大,它可以检查CRS后台进程运行状态、可以添加/删除表决磁盘、可以启动/关闭集群所有资源、可以启动/关闭CRS服务等等,下面简单介绍下此命令的几个常用参数组合。
检测node-rac1节点的状态:
[oracle@node-rac2 ~]$crsctl check cluster -node node-rac1
node-rac1 is ONLINE
检查cssd服务的运行状态:
[oracle@node-rac2 ~]$crsctl check cssd
Cluster Synchronization Services appears healthy
检查CRS的运行版本:
[oracle@node-rac2 ~]$crsctl query crs activeversion
Oracle Clusterware active version on the cluster is [11.1.0.6.0]
查看css加载的模块:
[oracle@node-rac2 ~]$ crsctl lsmodules css
The following are the Cluster Synchronization Services modules::
CSSD
COMMCRS
COMMNS
停止本节点所有CRS资源:
[oracle@node-rac1 ~]$crsctl stop resources
Stopping resources.
This could take several minutes.
Successfully stopped Oracle Clusterware resources
启动本节点所有CRS资源:
[oracle@node-rac1 ~]$crsctl start resources
Starting resources.
Successfully started CRS resources
在本节点关闭CRS服务,此操作需要root用户身份:
- [root@node-rac1 ~]#/app/oracrs/product/11.0.6/crs/bin/crsctl stop crs
- Stopping resources.
- This could take several minutes.
- Successfully stopped Oracle Clusterware resources
- Stopping Cluster Synchronization Services.
- Shutting down the Cluster Synchronization Services daemon.
- Shutdown request successfully issued.
3、启动与关闭CRS
在RAC数据库中,CRS接管了数据库的启动和关闭等操作,集群节点的实例随着CRS服务的启动而自动启动,但是crs也可以进行手工启动和关闭。
管理CRS服务的命令如下:
[root@node-rac1 ~]# /etc/init.d/init.crs {stop|start|enable|disable}
例如,要关闭某个节点的CRS服务,可以执行如下操作:
- [root@node-rac1 ~]# /etc/init.d/init.crs stop
- Shutting down Oracle Cluster Ready Services (CRS):
- Sep 08 10:57:14.806 | INF | daemon shutting down
- Stopping resources.
- This could take several minutes.
- Successfully stopped Oracle Clusterware resources
- Stopping Cluster Synchronization Services.
- Shutting down the Cluster Synchronization Services daemon.
- Shutdown request successfully issued.
- Shutdown has begun. The daemons should exit soon.
CRS服务关闭后,与此节点相关的集群实例也将随之停止,同时此节点的vip地址也将转移到另一个节点。
接着启动CRS服务,执行如下操作:
[root@node-rac1 ~]# /etc/init.d/init.crs start
Startup will be queued to init within 30 seconds.
CRS启动后,主要有以下四个后台进程:
- [oracle@node-rac1 ~]$ ps -ef|grep d.bin
- root 5166 4186 0 Sep07 ? 00:02:33 /app/oracrs/product/11.0.6/crs/bin/crsd.bin reboot
- oracle 5176 5170 0 Sep07 ? 00:00:05 /app/oracrs/product/11.0.6/crs/bin/evmd.bin
- oracle 5840 5309 0 Sep07 ? 00:01:04 /app/oracrs/product/11.0.6/crs/bin/ocssd.bin
- oracle 6306 1 0 Sep07 ? 00:00:00 /app/oracrs/product/11.0.6/crs/bin/oclskd.bin
- oracle 30233 30185 0 10:01 pts/1 00:00:00 grep d.bin
下面简单介绍下每个进程的含义:
ocssd:用于管理与协调集群中各节点的关系,并用于节点间通信。该进程非常重要,如果这个进程异常中止,会导致系统自动重启。在某些极端情况下,如果ocssd无法正常启动,就会导致操作系统循环重启。
crsd:监控节点各种资源,当某个资源发生异常时,自动重启或者切换该资源。
evmd:是一个基于后台的事件检测程序。
oclskd:该守护进程是Oracle 11g(11.1.0.6)新增的一个后台进程,主要用于监控RAC数据库节点实例,当某个实例挂起时,就重启该节点。
4、管理Voting disk
Voting disk(表决磁盘)主要用于记录节点成员信息,例如包含哪些节点成员、节点添加删除信息的记录等。
(1)查看Voting disk
要查看Voting disk信息,可执行如下命令:
crsctl query css votedisk
例如:
- [oracle@node-rac1 ~]$ crsctl query css votedisk
- 0. 0 /dev/raw/raw3
- 1. 0 /dev/raw/raw4
- 2. 0 /dev/raw/raw5
- Located 3 voting disk(s).
(2)备份Voting disk
Voting disk的信息很重要,需要定期备份votedisk,例如:
[oracle@node-rac1 ~]$dd if=/dev/raw/raw3 of=/tmp/votedisk.bak
这样就把备份到了/tmp目录下。
(3)恢复Voting disk
例如:
[oracle@node-rac1 ~]$dd if=/tmp/votedisk.bak of=/dev/raw/raw3
(4)删除voting disk镜像盘
如果要删除一块表决磁盘,可以执行如下命令:
crsctl delete css votedisk /dev/raw/raw5 -force
这个操作需要root用户身份,例如:
- [root@node-rac1 ~]#/app/oracrs/product/11.0.6/crs/bin/crsctl \
- >delete css votedisk /dev/raw/raw5
- Successful deletion of voting disk /dev/raw/raw5.
- [oracle@node-rac1 ~]$ crsctl query css votedisk
- 0. 0 /dev/raw/raw3
- 1. 0 /dev/raw/raw4
(5)添加voting disk镜像盘
添加一块表决磁盘时,执行如下命令:
crsctl add css votedisk /dev/raw/raw5 -force
这个操作需要root用户身份,例如:
- [root@node-rac1 ~]#/app/oracrs/product/11.0.6/crs/bin/crsctl add css votedisk /dev/raw/raw5 Now formatting voting disk: /dev/raw/raw5.
- Successful addition of voting disk /dev/raw/raw5.
- [oracle@node-rac1 ~]$ crsctl query css votedisk
- crsctl query css votedisk
- 0. 0 /dev/raw/raw3
- 1. 0 /dev/raw/raw4
- 2. 0 /dev/raw/raw5
5、管理OCR
OCR磁盘主要用于记录节点成员的配置信息,如数据库、服务、实例、vip地址、监听器、应用进程等CRS资源配置信息,OCR可以存储在裸设备或者群集文件系统上。
(1)检查ocr设置
可以通过如下命令查看当前的OCR设置:
- [oracle@node-rac1 ~]$ ocrcheck
- Status of Oracle Cluster Registry is as follows :
- Version: 2
- Total space (kbytes): 4000280
- Used space (kbytes): 3840
- Available space (kbytes) : 3996440
- ID: 1806962807
- Device/File Name: /dev/raw/raw1
- Device/File integrity check succeeded
- Device/File Name: /dev/raw/raw2
- Device/File integrity check succeeded
- Cluster registry integrity check succeeded
(2)OCR的备份与恢复
默认情况下,Oracle每四个小时自动备份一次OCR,并保存三个有效版本,但是仅保存在集群的某一个节点上。
要查看自动备份OCR文件的路径,执行如下命令:
- [oracle@node-rac1 ~]$ocrconfig -showbackup
- node-rac2 2011/03/11 13:10:27 /app/crs/product/11.0.6/crs/cdata/rac-cluster/backup00.ocr
- node-rac2 2011/03/11 09:10:25 /app/crs/product/11.0.6/crs/cdata/rac-cluster/backup01.ocr
- node-rac2 2011/03/11 05:10:24 /app/crs/product/11.0.6/crs/cdata/rac-cluster/backup02.ocr
- node-rac2 2011/03/10 21:10:20 /app/crs/product/11.0.6/crs/cdata/rac-cluster/day.ocr
- node-rac2 2011/03/10 21:10:20 /app/crs/product/11.0.6/crs/cdata/rac-cluster/week.ocr
恢复OCR的方法也很简单,例如:
[oracle@node-rac1 ~]$ocrconfig –restore \
> /app/oracrs/product/11.0.6/crs/cdata/rac-cluster/backup01.ocr
其实OCR也可以通过手动的方式导出、导入,方法如下:
手动导出:ocrconfig -export /tmp/ocr_bak
手动导入:ocrconfig -import /tmp/ocr_bak
(3)添加OCR镜像盘
向磁盘组中添加OCR磁盘的基本步骤如下:
执行命令crsctl stop crs停掉CRS服务
创建用于镜像OCR的RAW设备,例如:/dev/raw/raw11
执行“ocrconfig –export”命令导出OCR的信息
修改/etc/oracle/ocr.loc文件,添加新增的raw设备,例如:
- [oracle@node-rac1 ~]$more /etc/oracle/ocr.loc
- ocrconfig_loc=/dev/raw/raw1
- ocrmirrorconfig_loc=/dev/raw/raw2
- ocrmirrorconfig_loc=/dev/raw/raw11
- local_only=FALSE
执行命令“ocrconfig -import”将OCR备份信息导入磁盘
检查ocr设置信息,看是否增加成功
最后用“crsctl start crs”启动CRS服务
6、快速卸载CRS
CRS安装非常简单,但是如果CRS出现问题,需要重新安装时,卸载CRS并不是一件轻松的事情,下面就重点讲述下如何在Linux下卸载CRS程序。
(1)关闭CRS服务
在卸载CRS之前,必须要停止CRS服务,即执行:
/etc/init.d/init.crs stop
如果无法停止crs服务,那么就将CRS服务禁用,即:
/etc/init.d/init.crs disable
然后重启系统。
(2)执行删除脚本
首先在集群中的所有节点上执行$ORA_CRS_HOME/install/rootdelete.sh,这里以节点node-rac1为例
- [root@node-rac1 install]# /app/oracrs/product/11.0.6/crs/install/rootdeinstall.sh
- Verifying existence of ocr.loc file
- Removing contents from OCR mirror device
- 2560+0 records in
- 2560+0 records out
- 10485760 bytes (10 MB) copied, 3.90308 seconds, 2.7 MB/s
- Removing contents from OCR device
- 2560+0 records in
- 2560+0 records out
- 10485760 bytes (10 MB) copied, 3.84383 seconds, 2.7 MB/s
接着,在机(集)群中的任意一个节点上执行$ORA_CRS_HOME/install/rootdeinstall.sh。
(3)用图形界面OUI卸载crs
首先在CRS安装包目录下启动CRS安装欢迎界面,然后在欢迎界面点击“Installed Products”,接着会弹出如下界面: 在这个界面中可以看到已经安装的CRS信息,点击右下角的“Remove”按钮,开始卸载CRS。
(4)删除剩余其它文件
CRS卸载程序可以删除大部分安装程序,但是并不能完全卸载,所以需要手动删除未卸载的一些文件,在集群所有节点上执行如下删除命令:
- rm -rf /app/oracrs/product/11.0.6/crs/
- /bin/rm -rf /var/tmp/.oracle
- /bin/rm -f /etc/oraInst.loc
- rm -rf /etc/oracle/
- rm -f /etc/oratab
所有操作执行完毕后,重启集群的每个节点,重新安装CRS即可。