对于10g版本,资源管理工作由CRS来完成。
可以通过crs_stat -t -v来查看CRS管理的资源:
根据上面的输出, 可以看到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 需要管理的资源列表之后, 来看一下CRSD是如何实现资源管理的。首先介绍一些资源相关的术语。
1. 动作(Action): 动作定义了CRSD对资源进行启动、停止、检查和清除操作时所需要运行的步骤, 它可以是一段shell脚本、一段应用程序、数据库命令等。
2. 资源概要文件(profile) : 概要文件定义了资源的很多属性, 以便CRSD能够根据概要文件定义的属性来创建资源。例如:检查间隔、动作脚本等。
3. 依赖关系( Dependency): 资源之间并不是独立的, 有些资源之间是存在互相依赖关系的。例如: 数据库实例启动的前提是ASM实例先要被启动, 这表示数据库实例资源需要依赖于ASM实例资源, 而这种依赖关系是通过资源属性REQUIRED_RESOURCES来实现的。
4. 权限:由于不同的资源需要执行的操作也是不同的, 这意味着执行操作的用户也会不同(主要是root和Oracle用户)所以, 每个资源都会针对不同的用户指定不同的权限。这也是为什么crsd.bin守护进程需要以root用户运行的原因之一。
Oracle集群管理软件(CRS)还定义了一些racg模块, 不同的racg模块负责管理不同的资源, 例如:racgvip负责管理VIP, 这些模块负责定义对资源操作的动作。看到这里, 读者对CRSD管理资源的方法应该有了比较清晰的认识, 基本上可以将这些方法总结为以下的两点:
第一点:CRSD通过OCR定义资源。当crsd.bin守护进程启动时, 通过读取OCR中的信息来获得资源定义。而当资源属性发生改变时,crsd.bin守护进程也会修改OCR中的信息。
第二点:CRSD通过调用racg模块来实现对资源的各种动作。
对于 11gr2版本,ohasd 变成了集群启动的唯一始点。而所有的其他守护进程和集群管理的资源统统被定义为资源, 例如: cssd 守护进程就以初始化资源ora.cssd 的形式存在,而obasd 守护进程负责管理集群所有的守护进程对应的资源。
同时, 集群管理软件(GI) 不再使用racg 模块来管理资源, 而是用代理进程(agent) 统一实现对所有资源的管理。
既然一切都变成了资源, 那么和10g 版本类似, 就需要有一个注册表来保存资源的属性。OCR 是用于保存CRSD 所管理的资源的注册表, 但是在CRSD 启动之前集群还有很多初始化资源(例如asm 实例) 需要启动, 所以只有OCR 是不够的。Oracle 在11gR2 版本中推出了另一个集群注册表OLR ( Oracle Local regist)。
(1) OLR
顾名思义, OLR 是保存在本地的集群注册表, 也就是说OLR 是保存在每个节点本地的,而且其中的信息大部分是针对每个节点的。OLR 的主要作用就是为ohasd 守护进程提供集群的配置信息和初始化资源的定义信息。当集群启动时ohasd 会从/etc/oracle/olr.loc 文件(不同平台, 文件位置会不同) 中读取OLR 的位置, OLR 默认保存在<gi home>/cdata 下, 文件名为<节点名>.olr 。
[root@node1 bin]# more /etc/oracle/olr.loc
olrconfig_loc=/u01/app/11.2.0/grid/cdata/node1.olr
crs_home=/u01/app/11.2.0/grid
接下来看一下OLR信息,OLR信息需要通过ocrdump来产生一个转存储文件才能查看
[grid@node1.localdomain$]ls -l /u01/app/11.2.0/grid/cdata/node1.olr
-rw------- 1 root oinstall 272756736 Oct 13 09:18 /u01/app/11.2.0/grid/cdata/node1.olr
ocrdump使用方法:
[grid@node1.localdomain$]ocrdump -help
Name:
ocrdump - Dump contents of Oracle Cluster/Local Registry to a file.
Synopsis:
ocrdump [-local] [<filename>|-stdout] [-backupfile <backupfilename>] [-keyname <keyname>] [-xml] [-noheader]
Description:
Default filename is OCRDUMPFILE. Examples are:
prompt> ocrdump
writes cluster registry contents to OCRDUMPFILE in the current directory
prompt> ocrdump MYFILE
writes cluster registry contents to MYFILE in the current directory
prompt> ocrdump -stdout -keyname SYSTEM
writes