NOTE:
资源管理方式
10g版本:
对于10GR2版本的集群,资源管理的工作是由CRS(Cluster Ready Service)组件来实现,就是说crsd守护进程负责管理资源,包括资源的启动,停止,监控等。所谓的资源实际上就是集群管理软件所需要管理的应用程序的实体。
[root@webdb1 ~]# ps -ef| grep crsd
root 9429 30870 0 19:14 pts/1 00:00:00 grep crsd
root 15523 1 0 Oct23 ? 00:00:00 /bin/sh /etc/init.d/init.crsd run
root 25385 15523 0 Oct23 ? 01:22:19 /oracle/product/10.2.0/crs_1/bin/crsd.bin reboot
首先,需要了解10GR2版本的集群有哪些资源需要被管理,可以通过crs_stat命令查看资源的列表,下面只是其中的一些。
$ crs_stat
NAME=ora.ydqxnew.db
TYPE=application
TARGET=ONLINE
STATE=ONLINE on zjxdkt06
NAME=ora.ydqxnew.ydqxnew1.inst
TYPE=application
TARGET=ONLINE
STATE=ONLINE on zjxdkt05
NAME=ora.zjxdkt05.YDQX_ZJXDKT05.lsnr
TYPE=application
TARGET=ONLINE
STATE=ONLINE on zjxdkt05
........................................................................................................
为了格式整洁使用crs_stat -t命令来查看
根据上面的输出,可以看到CRSD会管理以下资源:
VIP资源(ora.<节点名>.vip)
ONS资源(ora.<节点名>.ons)
GSD资源(ora.<节点名>.gsd)
ASM实例资源(ora.ASM<节点编号>.asm)
监听资源程序(ora.<节点名><监听程序名>.lsnr)
数据库资源(ora.<数据库名>.db)
数据库实例资源(ora.<数据库名>.<实例名>.inst)
数据库服务资源(ora.<数据库名>.<服务名>.cs)和(ora.<数据库名><服务名><实例名>.srv)
CRSD是如何实现资源管理的,下面是一些资源相关术语。
(1)动作(Action):动作定义了CRSD对资源进行的启动,停止,检查和清楚操作时需要的步骤,它可以是一段shell脚本,一段程序,数据库命令等。
(2)资概要文件(Profile):概要文件定义了资源的很多属性,以便CRSD能够根据概要文件定义的属性来创建资源,例如:检查间隔,动作脚本。
(3)依赖关系(dependency):资源之间并不是独立的,有些资源之间是存在相互依赖关系的。例如:数据库实例启动的前提是ASM实例要先启动,这表示数据库资源要依赖于ASM实例资源,而这种依赖关系是通过资源属性required_resource来实现的。
(4)权限:由于不同的资源执行的操作也是不同的,这意味着执行操作的用户也会不同(主要是root用户和Oracle用户),所以每个资源都会针对不同的用户制定不同的权限。这也是为什么crsd.bin守护进程需要以root用户运行原因之一。
(5)OCR(Oracle cluster register):OCR实际上是包含了以上所有信息的一个注册列表,CRSD通过访问OCR来获得集群资源列表(当然也包括其他很重要的信息)以及各个资源的属性。
Oracle集群管理软件(CRS)还定义了一些racg模块,不同的racg模块负责管理不同的资源,例如:racgvip负责管理VIP,这些模块负责定义对资源操作的动作,总结如下:
第一点:CRSD通过OCR定义资源。当crsd.bin守护进程启动时,通过读取OCR中信息来获取资源定义。而当资源属性发生改变时候crsd.bin守护进程也会修改OCR中的信息。
第二点:CRSD通过调用racg模块来实现对资源的各种动作。
最后通过一段CRSD的日志来看看CRSD启动的时候做了些什么,其实也就是对上面的总结
crsd日志内容
[root@webdb1 ~]# find / -name crsd.log
/oracle/product/10.2.0/crs_1/log/webdb1/crsd/crsd.log
[root@webdb1 ~]# more /oracle/product/10.2.0/crs_1/log/webdb1/crsd/crsd.log
Oracle Database 10g CRS Release 10.2.0.1.0 Production Copyright 1996, 2005 Oracle. All rights reserved.
2013-01-18 06:31:10.052: [ default][2309855984][ENTER]0
Oracle Database 10g CRS Release 10.2.0.1.0 Production Copyright 1996, 2004, Oracle. All rights reserved
2013-01-18 06:31:10.053: [ default][2309855984]0CRS Daemon Starting
2013-01-18 06:31:10.053: [ CRSMAIN][2309855984]0Checking the OCR device
2013-01-18 06:31:10.068: [ CRSMAIN][2309855984]0Connecting to the CSS Daemon
2013-01-18 06:31:10.088: [ COMMCRS][1097718080]clsc_connect: (0x1e4e2740) no listener at (ADDRESS=(PROTOCOL=ipc)(KEY
=OCSSD_LL_webdb1_crs))
2013-01-18 06:31:10.088: [ CSSCLNT][2309855984]clsssInitNative: connect failed, rc 9
2013-01-18 06:31:10.091: [ CRSRTI][2309855984]0CSS is not ready. Received status 3 from CSS. Waiting for good status ..
2013-01-18 06:31:11.111: [ COMMCRS][1097718080]clsc_connect: (0x1e4e29e0) no listener at (ADDRESS=(PROTOCOL=ipc)(KEY=OCSSD_LL_webdb1_crs))
2013-01-18 06:31:11.111: [ CSSCLNT][2309855984]clsssInitNative: connect failed, rc 9
2013-01-18 06:31:11.114: [ CRSRTI][2309855984]0CSS is not ready. Received status 3 from CSS. Waiting for good status ..
2013-01-18 06:31:12.134: [ COMMCRS][1097718080]clsc_connect: (0x1e4e2c50) no listener at (ADDRESS=(PROTOCOL=ipc)(KEY=OCSSD_LL_webdb1_crs))
CRSD守护进程启动,之后尝试联系CSSD守护进程,但是由于ocssd.bin没有完全启动,所以CRSD守护进程还不能继续向下运行。在ocssd.bin完全启动后,CRSD才可以启动。
......................................................................................................
2013-01-18 06:34:51.800: [ CSSCLNT][2309855984]clssgsGroupJoin: CSS has not reached fatal mode.Registration is not yet safe. Retrying
2013-01-18 06:34:52.802: [ CRSD][2309855984]0Registered in CSS group crs_version
2013-01-18 06:34:52.802: [ CRSMAIN][2309855984]0Initializing OCR
2013-01-18 06:34:52.802: [ CRSD][1108207936]0Monitoring the crs_version group for AV change notification
2013-01-18 06:34:52.802: [ CRSD][1108207936]0Doing grpstat on crs_version group
2013-01-18 06:34:52.802: [ CRSD][1108207936]0Returned from grpstat with event 1
2013-01-18 06:34:52.802: [ CRSD][1108207936]0Doing grpstat on crs_version group
2013-01-18 06:34:52.825: [ OCRRAW][2309855984]proprioo: for disk 0 (/dev/raw/raw1), id match (1), my id set (1669906634,10282478
21) total id sets (1), 1st set (1669906634,1028247821), 2nd set (0,0) my votes (2), total votes (2)
2013-01-18 06:34:52.918: [ OCRSRV][1244576064]th_select_handler: Failed to retrieve procctx from ht. constr = [518059696] retval
CRSD守护进程发现了OCR对应的设备/dev/raw/raw1
[root@webdb1 ~]# ls -l /dev/raw/raw1
crw-r--r-- 1 oracle oinstall 162, 1 Dec 19 18:55 /dev/raw/raw1
......................................................................................................
2013-01-18 06:34:53.673: [ CRSMAIN][2309855984]0Filename is /oracle/product/10.2.0/crs_1/crs/init/webdb1.pid
[ clsdmt][1422903616]Listening to (ADDRESS=(PROTOCOL=ipc)(KEY=webdb1DBG_CRSD))
CRSD守护进程的pid被创建之后,之后对应的套接地址被创建
......................................................................................................
2013-01-18 06:34:54.084: [ CRSMAIN][2309855984]0CRS Daemon Started.
CRSD守护进程启动完成
......................................................................................................
2013-01-18 06:43:39.749: [ CRSRES][1508006208]0Attempting to start `ora.webdb1.gsd` on member `webdb1`
2013-01-18 06:43:39.879: [ CRSRES][1076025664]0Attempting to start `ora.webdb1.ons` on member `webdb1`
2013-01-18 06:43:41.310: [ CRSRES][1508006208]0Start of `ora.webdb1.gsd` on member `webdb1` succeeded.
2013-01-18 06:43:42.549: [ CRSRES][1076025664]0Start of `ora.webdb1.ons` on member `webdb1` succeeded.
CRSD开始启动资源