Oracle 10G R2 RAC 日常管理
一、使用srvctl管理RAC数据库
[root@NODE01 bin]# pwd
/orac/crs/bin # srvctl在$CRS_HOME/bin目录下,它可以在任何节点上维护。
[root@NODE01 bin]# ./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
常用的命令主要如下:
1、使用srvctl status命令
查看数据库的状态:
[root@NODE01 bin]# ./srvctl status database -d racdb
Instance RACDB1 is running on node node01
Instance RACDB2 is running on node node02
查看数据库实例的状态:
[root@NODE01 bin]# ./srvctl status instance -d racdb -i racdb1,racdb2
Instance racdb1 is running on node node01
Instance racdb2 is running on node node02
查看ASM实例的状态:
[root@NODE01 bin]# ./srvctl status asm -n node01
ASM instance +ASM1 is running on node node01.
[root@NODE01 bin]# ./srvctl status asm -n node02
ASM instance +ASM2 is running on node node02.
查看节点应用程序(VIP、GSD、Listener、ONS)的状态:
[root@NODE01 bin]# ./srvctl status nodeapps -n node01
VIP is running on node: node01
GSD is running on node: node01
Listener is running on node: node01
ONS daemon is running on node: node01
[root@NODE01 bin]#
[root@NODE01 bin]# ./srvctl status nodeapps -n node02
VIP is running on node: node02
GSD is running on node: node02
Listener is running on node: node02
ONS daemon is running on node: node02
以上的命令在任何节点上都可以执行。其中-d表示数据库的名字,-i表示instance名称,-n表示节点的主机名。
2、使用srvctl start/stop命令
srvctl start asm –n node01 # to start the ASM instance
srvctl stop asm –n node01 # to stop the ASM instance
srvctl start asm –n node02 # to start the ASM instance
srvctl stop asm –n node02 # to stop the ASM instance
# 这里的node01和node02是这个节点的机器名称,通过以上命令,可以在任何节点上执行,用来关闭与启动任何节点上的ASM。
srvctl start database –d racdb # to start the database instance
srvctl stop database –d racdb # to stop the database instance
# for instance 1
srvctl start instance –d racdb –i racdb1
srvctl stop instance –d racdb –i racdb1
# for instance 2
srvctl start instance –d racdb –i racdb2
srvctl stop instance –d racdb –i racdb2
3、使用srvctl config命令
查看数据库的配置:
[root@NODE01 bin]# ./srvctl config database
RACDB
[root@NODE01 bin]# ./srvctl config database -d racdb
node01 RACDB1 /orac/orahome/oracle/product/10.2.0/db_1
node02 RACDB2 /orac/orahome/oracle/product/10.2.0/db_1
查看ASM实例的配置:
[root@NODE01 bin]# ./srvctl config asm -n node01
+ASM1 /orac/orahome/oracle/product/10.2.0/db_1
[root@NODE01 bin]# ./srvctl config asm -n node02
+ASM2 /orac/orahome/oracle/product/10.2.0/db_1
查看节点应用程序(VIP、GSD、Listener、ONS)的配置:
[root@NODE01 bin]# ./srvctl config nodeapps -h
Usage: srvctl config nodeapps -n <node_name> [-a] [-g] [-o] [-s] [-l]
-n <node> Node name
-a Display VIP configuration
-g Display GSD configuration
-s Display ONS daemon configuration
-l Display listener configuration
-h Print usage
[root@NODE01 bin]#
[root@NODE01 bin]# ./srvctl config nodeapps -n node01
node01 RACDB1 /orac/orahome/oracle/product/10.2.0/db_1
[root@NODE01 bin]#
[root@NODE01 bin]# ./srvctl config nodeapps -n node01 -a -g -s -l
VIP exists.: /vip01/192.168.1.170/255.255.255.0/eth0
GSD exists.
ONS daemon exists.
Listener exists.
[root@NODE01 bin]# ./srvctl config nodeapps -n node02 -a -g -s -l
VIP exists.: /vip02/192.168.1.171/255.255.255.0/eth0
GSD exists.
ONS daemon exists.
Listener exists.
二、管理OCR和Voting Disk
Clusterware由2个部分组成,分别是Voting Disk和OCR。一旦它们丢失或者损坏的话,Clusterware将无法启动,这样整个RAC都将无法启动。
1、Voting Disk(表决磁盘方面)
Voting Disk里面记录着节点成员信息,比如说RAC数据库中有哪些节点成员,节点增加或者删除时也同样会将信息记录进来。Voting Disk必须存放在共享存储上,通常来说是存放在裸设备上。为保证Voting Disk的安全,需要配置多个Voting Disk,Oracle建议Voting Disk的个数应该配置为奇数个,每个Voting Disk的大小约为20MB。
查看Voting Disk位置:
[root@NODE01 bin]# crsctl query css votedisk
0. 0 /orac/orahome/clusterdata/votedisk
located 1 votedisk(s).
[root@NODE01 bin]# ll /orac/orahome/clusterdata/votedisk
-rw-rw---- 1 oracle oinstall 10240000 Dec 25 02:13 /orac/orahome/clusterdata/votedisk
如果需要更改Voting Disk的配置,对Voting Disk的更改必须以root用户进行修改。如:
添加一个Voting Disk成员:crsctl add css votedisk ‘/dev/raw/raw3’
删除一个Voting Disk成员:crsctl delete css votedisk ‘/dev/raw/raw3’
Voting Disk的备份与恢复可以通过dd命令来操作。
备份Voting Disk:dd if=/dev/rhdisk3 of=/tmp/votedisk.bak
恢复Voting Disk:dd if=/tmp/votedisk.bak of=/dev/rhdisk3
2、OCR方面
OCR记录的是节点成员的配置信息,比如数据库、ASM、实例、监听、VIP等CRS资源的配置信息,CRS进程管理的信息来自于OCR的内容。OCR记录这CRS进程管理资源的所有配置信息,大小约为100MB。
默认情况下RAC会在其中一个节点每4个小时都自动进行一次OCR的备份,并且保留最近的3次备份。可以通过命令ocrconfig –showbackup来查看。
[root@NODE01 bin]# ocrconfig -showbackup
node02 2008/12/19 03:38:17 /orac/crs/cdata/crs
node02 2008/12/18 20:23:45 /orac/crs/cdata/crs
node01 2008/12/18 04:15:47 /orac/crs/cdata/crs
node01 2008/12/18 04:15:47 /orac/crs/cdata/crs
node01 2008/12/14 04:21:00 /orac/crs/cdata/crs
[root@NODE01 bin]#
[root@NODE01 bin]# ll /orac/crs/cdata/crs/
total 15696
-rw-r--r-- 1 root root 4014080 Dec 18 04:15 backup00.ocr
-rw-r--r-- 1 root root 4014080 Dec 14 04:21 backup01.ocr
-rw-r--r-- 1 root root 4014080 Dec 18 04:15 day.ocr
-rw-r--r-- 1 root root 4014080 Dec 14 04:21 week.ocr
OCR默认的备份路径为$CRS_HOME/cdata/crs,可以通过ocrconfig –backuploc来更改OCR的备份路径;
可以通过ocrconfig –export来导出OCR的内容;
可以通过ocrconfig –import导入OCR的内容;
可以通过ocrconfig –restore命令对OCR进行恢复。
3、其它一些常用命令:
$ORA_CRS_HOME/bin/crsctl check crs # 用于检查后台进程状态
$ORA_CRS_HOME/bin/crsctl start resources # 启动crs资源
$ORA_CRS_HOME/bin/crsctl start crs # 启动crs,需要超级用户操作
$ORA_CRS_HOME/bin/crsctl stop crs # 关闭crs,需要超级用户操作
$ORA_CRS_HOME/bin/crs_unregister # 取消注册crs
$ORA_CRS_HOME/bin/ocrcheck # 检查ocr设置信息用ocrcheck
$ORA_CRS_HOME/bin/crsctl query css votedisk # 检查表决磁盘信息
注意:
执行crsctl命令的可以是root用户,也可以是oracle用户,如果是root用户要指定绝对路径,但是对于crsctl start crs和crsctl stop crs必须是root用户来执行。
crs主要进程:
(1)crsd
负责管理ha操作
管理crs资源,如listener,vip,ons,gsn等
由root用户管理、启动
(2)ocssd
管理各节点的关系,用于节点间通信
由oracle用户运行管理
(3)oprocd
集群进程管理 —Process monitor for the cluster.
仅在没有使用vendor的集群软件状态下运行
(4)evmd
事件检测进程,由oracle用户运行管理
(5)主要log位置
$ORA_CRS_HOME/log/节点主机名/racg
$ORA_CRS_HOME/log/节点主机名/crsd
$ORA_CRS_HOME/crs/init
$ORA_CRS_HOME/css/log
$ORA_CRS_HOME/css/init
$ORA_CRS_HOME/evm/log
$ORA_CRS_HOME/evm/init
$ORA_CRS_HOME/srvm/log
CRSCTL命令控制着本地节点的CRS服务(Oracle clusterware processes)
停止CRS:
$ crsctl stop crs或者
$ /etc/init.crs stop或者
$ crs_stop –all
启动CRS:
$ crsctl start crs或者
$ /etc/init.crs start
禁止Clusterware在系统重启后自动启动的方法:
$ /etc/init.crs disable
启动Clusterware在系统重启后自动启动的方法:
$ /etc/init.crs enable
查看CRS服务状态
$ crsctl check crs
OCR的资源管理
OCR的资源,当RAC cluster启动并成功运行以后,你可以使用crs_stat工具看到如下内容:
$ORA_CRS_HOME/bin/crs_stat
通常情况下,所有的资源的状态都应该是online。另外,OCR每4个小时会备份一次。有一些情况你可以通过恢复的OCR的配置文件来恢复出现问题的OCR。
比如使用出现如下情况:
$ crs_stat -t
CRS-0184: Cannot communicate with the CRS daemon.
$ crsctl check boot
Failure 4 at procr_open_key with status 4.
PROC-4: The cluster registry key to be operated on does not exist.
$ crsctl check crs
Failure 1 contacting CSS daemon
Cannot communicate with CRS
Cannot communicate with EVM
引起这个错误的一种可能原因是OCR配置丢了。这个我们可以利用这些备份来还原以前的配置。
# /etc/init.crs disable
# /etc/init.crs stop
先保证所有的crs进程全部停止。
# su – oracle
$ cd $ORA_CRS_HOME/bin
$./ocrconfig -restore /opt/app/oracle/crs/cdata/crs/week.ocr
然后切换到root用户下,重新enable CRS
# /etc/init.crs enable
最后reboot两个节点
SRVCTL命令介绍
SRVCTL命令可以控制RAC数据库中的instance,listener以及services。
通常SRVCTL在ORACLE用户下执行。下面我们来介绍srvctl命令。
1、通过SRVCTL命令来start/stop/check所有的实例:
$ srvctl start|stop|status database -d
2、start/stop指定的实例:
$ srvctl start|stop|status instance -d -i
3、列出当前RAC下所有的
$ srvctl config database -d
4、start/stop/check所有的nodeapps,比如:VIP, GSD, listener, ONS:
$ srvctl start|stop|status nodeapps -n
5、如果你使用ASM,srvctl也可以start/stop ASM实例:
$ srvctl start|stop asm -n [-i ] [-o]
6、可以获取所有的环境信息:
$ srvctl getenv database -d [-i ]
7、设置全局环境和变量:
$ srvctl setenv database -d -t LANG=en
8、从OCR中删除已有的数据库:
$ srvctl remove database -d
9、向OCR中添加一个数据库:
$ srvctl add database -d -o
[-m ] [-p] [-A /netmask] [-r {PRIMARY | PHYSICAL_STANDBY |LOGICAL_STANDBY}] [-s ]
10、向OCR中添加一个数据库的实例:
$ srvctl add instance -d -i -n
$ srvctl add instance -d -i -n
11、向OCR中添加一个ASM实例:
$ srvctl add asm -n -i -o
12、添加一个service
$ srvctl add service -d -s -r [-a ] [-P ] [-u]
13、修改在其他节点上的service
$ srvctl modify service -d -s -I -t
14、relocate某个节点的service到其他节点
srvctl relocate service -d -s -I
CRS及相关服务的常用命令的演示
1、查看状态的命令
# su–oracle --先切换到oracle用户
$ crs_stat -t --查看crs及所有的service的状态
$ crsctl check crs --用crsctl命令,检查crs相关服务的状态
$ srvctl status nodeapps -n db01 (db02) --使用srvctl查看所有节点上的服务是否正常
$ srvctl status database -d db --使用srvctl查看数据库状态
启动和关闭相关服务的命令
# 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 --停止数据