Oracle11gRAC维护参考RAC集群,全称RealApplicationClusters,译为“实时应用集群”,是Oracle提供的一种高可用、并行集群系统,RAC除了具有高可用能力还有负载均衡能力,整个RAC集群系统由OracleClusterware(集群软件)和RealApplicationClusters(RAC)两大部分组成。1硬件环境RAC集群的硬件环境包括主机、共享存储、网络设备。1.1主机(节点)RAC集群环境中至少有两台主机,也就是两个节点,每个节点配置一样的硬件,至少配置两块物理网卡。1.2网络设备网卡,每个RAC集群节点上至少配置两块物理网卡。一块网卡用于集群内部的私有通信,集群节点间数据块的传输都是通过这块网卡,我们称之为私有网卡,IP别名PrivateIP;另一块网卡用于对外服务,比如数据库的查询等,我们称之为公有网卡,IP别名PublicIP。除此之外,每个节点还有第三个VIP(VirtualIP)的IP。RAC集群正常运行时,每个节点的VIP会被分配到公有网卡上,当某个节点出现故障宕机时,这个节点的VIP会被移到其它正常运行节点的公有网卡上。网络交换机,首先,用于连接所有节点的公有网卡以提供对外的数据库服务,其次,用于连接各个节点之间的私有网卡以传递集群节点之间的心跳数据和数据库数据块(CacheFusion)。1.3共享存储在RAC集群中,最重要的是共享存储,RAC是一个“多实例、单一数据库”的架构,所有的节点共享一个数据库。数据文件、联机日志、参数文件、控制文件存放在共享存储上以保证每个节点的实例都能访问。每个节点安装HBA卡,然后通过光纤线和存储设备连接。2软件环境RAC集群的软件组成包含:操作系统、集群软件、数据库软件。2.1操作系统每个节点上所安装的操作系统必须是相同版本的。2.2集群软件OracleClusterware(统称为CRS/ClusterReadyService)集群软件,负责管理整个集群环境中的硬件资源,并为上层的RAC集群提供基础服务。它与上层应用(例如数据库)的关系类似于单机环境中操作系统和应用程序的关系。单机环境下,OS能代理应用程序对硬件访问,但是在集群中有多台计算机,把整个集群想象成一台虚拟的计算机,那集群件就是这台虚拟计算机上的操作系统,RAC是运行在它上面的一个应用程序。Oracle11gClusterware集群软件为GI(OracleGridInfrastructure),由磁盘文件、后台进程、网络组件组成。2.2.1磁盘文件OCR(OracleClusterRegistry)保存RAC集群的配置信息,整个集群只有一份配置,所有节点共享,配置信息以“Key-value”的形式保存其中。当集群配置需要发生改变时,每个节点都有一个OCRProcess来读取OCRCache中的内容,而只有一个节点(OCRMaster)有权限读写OCRDisk的内容,然后同步到本地和其他节点的OCRCache。VotingDisk记录各个节点的状态,以防在某个或某几个节点出现问题时,决定哪部分节点具有集群的控制权,而把其他节点从集群中剔除,从而能够继续正常地对外提供服务。2.2.2后台进程其中最重要的三个进程是CSSD、EVMD、CRSD,对应CSS、EVM、CRS服务,而每个服务又是由一系列的模块组成。OCSSD进程是Clusterware最关键的进程,如果出现异常会导致系统重启,这个进程提供CSS(ClusterSynchronizationService)服务,它通过多种心跳机制实时监控集群的健康状态,提供集群的基础服务功能。CRSD实现高可用的主要进程,它提供了CRS服务。这些服务包括Clusterware上集群资源的关闭、重启、转移、监控等。集群资源分为两类:一类是Nodeapps型的,就是说每个节点只需要一个就行,这类有GSD(GlobalServiceDaemon)、ONS(OracleNotificationServiceDaemon)、VIP、Listener;另一类是Database-Related,就是和数据库相关,不受节点限制,这类有Database、Instance、Service等。EVMD该进程负责发布CRS产生的各种事件,同时也是CRSD和CSSD两个进程之间的桥梁。OHASD(OracleHighAvailabilityServicesDaemon)Oracle高可用服务后台进程启动其他的集群件守护进程。2.3数据库软件Oracle11g数据库软件,存储数据,对外提供数据服务。2.4RAC集群拓扑2.5网络组件RAC集群环境中的节点上配置两块物理网卡,在公网网卡上面我们除了设置公有IP外还设置了VIP,Oracle的TAF(所谓TAF就是连接建立后,如果某个实例发生故障,连接到这个实例上的用户会被自动迁移到其他健康实例上,对于应用程序而言,这个迁移过程透明,不需要人工介入)是建立在VIP技术上的,它与IP最主要的不同就是VIP是浮动的,IP是固定的,当某个节点宕机时,该节点上的VIP自动会移到健康节点的公网网卡上,所能对该节点的连接自动会移到健康节点。VIP还有几个特点需要我们注意一下:a)VIP是在Clusterware安装最后阶段通过脚本vipca创建的;b)VIP作为一个Nodeapps类型的CRS资源注册到OCR,并由CRS维护状态;c)每个节点的监听会同时在Public网卡的PublicIp和VIP两个地址上监听;d)客户端的tnsnames.ora一般配置指向节点的VIP3系统维护3.1集群维护Clusterware有非常丰富工具集,位于$GRID_HOME/bin目录下,在$ORACLE_HOME中也有部分CRS工具可用,常用的有crsctl、srvctl、oifcfg等。3.1.1启动CRS通常,RAC环境中的CRS服务配置成了随机自动启动,但有时候需要调试CRS,或者OS需要维护,或者需要为GI软件打补丁时,使用特权用户root来手工启停CRS,操作步骤如下:1、启动NetappFAS8020存储,操作如下:依次启动FC交换机、每套存储的磁盘框和控制器。2、启动以太网交换机。3、通过HMC控制台,依次启动POWER主机。4、启动CRS服务,操作如下:su-root;/grid/app/11.2/bin/crsctlstartcrs5、查询RAC节点的服务状态,操作如下:su-root;/grid/app/11.2/bin/crsctlstatusresource–t3.1.2验证CRS下面这些命令用来验证集群及其相关进程的状态(以grid、root用户执行皆可)。检查一个集群的当前运行状态:/grid/app/11.2/bin/crsctlcheckcluster检查CRS的当前状态:/grid/app/11.2/bin/crsctlcheckcrs检查ohasd进程的状态:/grid/app/11.2/bin/crsctlcheckhas检查ctssd进程的状态:/grid/app/11.2/bin/crsctlcheckctss3.1.3禁用与启用CRS若是不想让CRS随机启动,那么可以disable它:/grid/app/11.2/bin/crsctldisablecrs如果又改变了注意,可以enable:/grid/app/11.2/bin/crsctlenablecrs3.1.4显示集群资源状态显示集群资源的状态:/grid/app/11.2/bin/crsctlstatusresource-t3.1.5停止CRS通常,RAC环境中的CRS服务配置成了随机自动启动,但有时候需要调试CRS,或者OS需要维护,或者需要为GI软件打补丁时,使用特权用户root来手工启停CRS,操作步骤如下:1、全备份数据库文件和归档日志,操作如下:rmantarget/EOF_RMANrun{allocatechannelc1typedisk;sql'altersystemarchivelogcurrent';backuparchivelogall;backupdatabaseincludecurrentcontrolfile;releasechannelc1;}2、查询RAC节点的服务状态,操作如下:su-root;/grid/app/11.2/bin/crsctlstatusresource–t3、依次关闭集群服务,顺序为:关闭监听-数据库(实例)-关闭ASM实例,操作如下:su-grid;/grid/app/11.2/bin/srvctlstoplistener;/grid/app/11.2/bin/srvctlstopdatabase-dwnora4、关闭rac的crs集群服务,操作如下:su-root;/grid/app/11.2/bin/crsctlstopcrs5、关闭AIX主机,操作如下:su-root;shutdown-F6、关闭以太网交换机。7、关闭NetappFAS8020存储,操作如下:先关闭控制器,后关闭磁盘框,依次关闭两套存储、FC交换机。3.2ASM维护从Oracle11gR2开始,Oracle不再支持在dbca建库的时候选择裸设备,因此共享存储部分主要的选择就剩下了ASM,这里也只对ASM的管理进行简单的说明。在Oracle11gRAC中,Oracle将ASM集成于GI软件中,现在的VotingDisk与OCR可以放置于ASM上了,这省去了为他们单独创建并管理一些裸设备的麻烦,在GI安装好后ASM实例就创建好并已经启来了,因为CRS要用到OCR和VotingDisk,如果ASM没有启来,CRS就无法读取它们的信息,当然ASM实例创建和ASM磁盘组管理都可以使用图形界面asmca来完成,因此下面这两部分主要以命令为主。3.2.1ASM实例创建要想使用ASM,首要的工作就是创建ASM实例,既然是与数据库实例类似的实例,那么首先就需要有一个参数文件,只不过,ASM实例只需要关注少量的参数,与数据库的实例相比,比较特别的参数如下表所示:参数描述instance_type实例的类型,必须是ASMinstance_nameASM实例的名称,RAC系统中通常名称前有个“+”号asm_power_limitASM实例的磁盘重平衡的能力,取值范围为:0~11,默认为1,数值越高,重平衡能力越强,当然IO压力也越大asm_diskstring指定一个字符串,ASM实例在创建磁盘组时可以按照这个字符串搜索可用的磁盘asm_diskgroups指定磁盘组的名称,ASM实例在启动的时候自动挂载这些磁盘组srvctl工具可以用来操作ASM实例,这与以往版本是一样的:srvctlstatusasm、srvctlstartasm与srvctlstopasm,当然具体语法可以使用类似srvctlstatusasm–h来得到。3.2.2磁盘组的创建与删除我们想要使用ASM,就必须先创建ASMDG(DiskGroup),创建磁盘组的时候可以指定冗余策略,分别为:External外部冗余(依靠磁盘RAID),Normal为镜像冗余,而最高级的High则包含了总共三份冗余。创建DG的方法很简单,切换至grid用户,使用sqlplus命令来登录ASM实例:sqlplus‘/assysasm’,然后输入如下创建DG的语句:以grid用户sqlplus/assysasm登录asm实例,然后执行语句:creatediskgroupdata_bakexternalredundancydisk'ORCL:TESTVG','ORCL:TESTVG2';很像创建表空间的语法,注意ASMDISK的书写,可以查询v$asm_disk.path字段来得到这些ASMDISK的正确路径。在creatediskgroup语句完成后,DG将在当前操作的ASM实例中自动挂载,且添加到ASM实例的asm_diskgroups参数中。其他实例需