(三)clusterware和rac的交互
在集群中,当某个实例故障时,集群必须能够根据集群状态的变迁自动重构,这一点单靠数据库实例自己是不能完成的,必须要和clusterw交互。
clusterware决定集群组成、成员身份、成员状态。clusterware并不关心上层的应用是一个数据库还是一个web,它只负责集群的节点状态完整视图,并向上层提供这个视图。
而RAC依赖于clusterware,它需要从clusterware获得这个视图,根据这个视图来调整自己。RAC也不完全依赖于clusterware:先看clusterware能不能解决问题;如果不能,rac亲自登场。
所有节点的clusterware组成一个集群,这些节点构成了一个集群成员列表(cluster membership list),每个节点分配一个成员id(node id)。这些cluster之间互相通信,以了解各节点的状态,并从中选择一个节点作为master node,master node负责管理集群状态的变迁。当有新的节点接入集群或有节点离开集群,集群的状态就会发生变迁,到达一个新的稳态。每个稳定的集群状态用一个数值(cluster incarnation number)表示。
rac中的各实例也构成一个实例成员列表(instance membership list),rac的每个实例也使用clusterware层的node id作为身份标识,这个id在整个集群的生命期内是不会变化的。rac instance会在启动时把lmon、dbwr等需要操作共享存储的进程作为一个组注册到clusterware中,并从clusterware获得node id作为组id。
注意:
clusterware集群和rac集群是两个层次的集群,两个集群都有“脑裂”、“IO隔离”等问题。这两个集群有各自的故障检测机制,二者之间的机制可以有重叠也可以有不同。
如果rac层检测到节点故障:rac集群会做如下工作:
a、rac暂停对外服务;
b、rac通知clusterware这种异常,并等待clusterware完成clusterware集群重构,达到新的稳态;
c、clusterware集群完成重构后,通知上层的rac集群,rac集群收到这个信息后,开始自己的rac集群重构。
(四)相关工具及命令
1、工具
OUI
CVU
OEM
SRVCTL
SRVCTL is a command-line interface that you can use to manage an Oracle RAC database from a single point. You can use SRVCTL to start and stop the database and instances, and to delete or move instances and services. You can also use SRVCTL to add services and manage configuration information. You use SVRCTL to start and stop a group of applications that includes virtual IP addresses, Listeners, Oracle Notification Services, node-level applications, and Oracle Enterprise Manager agents (for maintenance purposes).
CRSCTL
CRSCTL is a command-line tool that you can use to manage Oracle Clusterware. You can use CRSCTL to start and stop Oracle Clusterware and to determine the current status of your Oracle Clusterware installation.
2、命令
节点层:osnodes
网络层:oifcfg
集群层:crsctl, ocrcheck,ocrdump,ocrconfig
应用层:srvctl,onsctl,crs_stat
浙公网安备 33010602011771号