rac日常维护DOC版本.docx
《rac日常维护DOC版本.docx》由会员分享,可在线阅读,更多相关《rac日常维护DOC版本.docx(39页珍藏版)》请在冰豆网上搜索。
rac日常维护DOC版本
rac日常维护技巧
一RAC相关以及基础知识
1.CRS简介
从Oracle10G开始,oracle引进一套完整的集群管理解决方案—-Cluster-ReadyServices,它包括集群连通性.消息和锁.负载管理等框架.从而使得RAC可以脱离第三方集群件,当然,CRS与第三方集群件可以共同使用.
(1).CRS进程
CRS主要由三部分组成,三部分都作为守护进程出现
<1>CRSD:
资源可用性维护的主要引擎.它用来执行高可用性恢复及管理操作,诸如维护OCR及管理应用资源,它保存着集群的信息状态和OCR的配置,此进程以root权限运行.
<2>EVMD:
事件管理守护进程.此进程还负责启动racgevt进程以管理FAN服务器端调用,此进程以root权限运行
<3>OCSSD:
集群同步服务进程.管理集群节点的成员资格,它以fatal方式启动,因此进程发生故障将导致集群重启,以防止数据坏死.同时,CSS还维护集群内的基本锁功能,以及负责监控votingdisk的脑裂故障。
它以Oracle权限运行
此外,还有一个进程OPRCD,他是集群中的进程监视程序,仅当平台上的CRS不使用厂商群件时候才出现,且无论运行了多少实例,每个节点只会存在一组后台进程.
来看一下这几个守护进程:
rac1->cat/etc/inittab
…………………………… .
#Runxdminrunlevel5
x:
5:
respawn:
/etc/X11/prefdm–nodaemon
h1:
35:
respawn:
/etc/init.d/init.evmdrun>/dev/null2>&1
h2:
35:
respawn:
/etc/init.d/init.cssdfatal>/dev/null2>&1
35:
respawn:
/etc/init.d/init.crsdrun>/dev/null2>&1
(2).VirtualIPAddress
Oracle10GRAC下,有3个重要的IP.
①PublicIP ②PrivateIP ③VitualIP
PublicIP为数据库所在主机的公共网络IP,PrivateIP被用来私有高速互联,而Oracle较前版本,增加了一个虚拟IP,用来节点发生故障时候更快的故障转移,oracle利用每个节点的lisnter侦听VIP,一旦发生故障,VIP将进行实际的故障切换,从而在其他的可用的节点上保持联机,从而降低客户应用程序意识到节点故障所需要的时间。
VIP与PublicIP必须在同一个网段内。
(3).OCR,Votingdisk
OCR(oracle集群注册表)和Votingdisk(表决磁盘)是CRS下的两个重要组件,它们必须放在共享磁盘上,以保证每个节点都能对其访问。
OCR包含了针对集群的一些配置信息,诸如:
集群数据库中的节点列表.CRS应用程序.资源文件以及事件管理器的授权信息。
他负责对集群内的资源追踪,从而获知资源正在哪里运行,应该可以在哪里运行。
Votingdisk用来解决split-brain故障:
如果节点丢失了与集群中其他节点的网络连接,这些冲突由表决磁盘中的信息来解决
2.ASM相关
ASM(AutomatedStorageManagement)是Oracle10G引入的一种文件类型,他提供了直接的I/O读写,是RAC体系下一套不错的对数据文件存储规划的方案.ASM可以自动管理磁盘组,并提供数据冗余和优化.后面章节会就ASM的管理以及ASM下的RAC管理,单独讲解.
3.RAC存储/网络需求
图1.3RAC体系架构
(1).存储需求
共享存储器是RAC的重要组件之一。
它要求集群内的节点可以同时读写物理磁盘。
目前,支持共享存储的文件类型也比较多,像Oracle自身提供的ASM,OCFS2以及三方提供的群集文件系统,都是可以选择的类型。
表1.1.1显示了RAC体系架构下各部分所支持的存储类型(暂不考虑三方集群文件系统,就ASM/rawdevice/OCFS2和普通文件系统来说)
表1.1.1 RAC各部分所支持的存储类型
类别
支持的存储类型
存储位置
备注
Cluster 软件
OCFS2,普通文件系统
共享磁盘/本地磁盘
OCR,Votingdisk
OCFS2,rawdevice
共享磁盘
数据库软件
OCFS2,普通文件系统
共享磁盘/本地磁盘
数据库文件
OCFS2,rawdevice,ASM
共享磁盘
归档日志文件
OCFS2,ASM,普通文件系统
共享磁盘/本地磁盘
备份/恢复文件
OCFS2,ASM,普通文件系统
共享磁盘/本地磁盘
闪回日志文件
OCFS2,ASM
共享磁盘
(2).网络需求
每个节点主机上至少需要2张物理网卡,以便分配公有IP和私有IP地址。
对于私有IP连接,每个集群节点通过专用高速网络连接到所有其他节点,目的在于集群上的节点和实例交换信息状态(锁信息,全局缓存信息等)。
通过高速互联,CacheFusion得以实现。
在实际环境中,高速互联至少需要配置GB级的以太网,而且,最好不要使用交叉直连。
较好的解决方案是节点间配置专用交换机,这样避免因为集群上一个节点宕掉而影响另外节点的正常工作。
4.其他
(1).后台进程
图1.4.1BackgroudProcessinRAC10g
由于要维护多个实例同时访问资源所必需的锁定,因此,同singleinstance相比,RAC下增加了额外的一些进程。
专门针对RAC的进程有如下几种:
1. LMS(GlobalCacheService) 全局缓存服务进程
LMS负责为缓存融合请求在实例间传递块。
当一致性请求的时候,LMS首先回滚块,创建块的读一致性映像(CR),然后将该一致性版本通过高速互联传递到处理此请求的远程实例中的前台进程上,LMS进程保证了在同一时刻只允许一个实例去更新数据块。
LMS进程的数量由初始化参数GCS_SERVER_PROCESSES控制。
Oracle最大支持36个LMS进程(0–9anda–z),该初始化参数默认值为2。
2. LMD(GlobalEnqueueServiceDaemon)全局队列服务守护进程
LMD负责管理全局队列和全局资源访问,并更新相应队列的状态,此外还负责远程节点资源的请求与死锁的检测。
LMD与LMS进程互交工作,共同维护GRD。
3. LMON(GlobalEnqueueServiceMonitor)全局队列服务监控器进程
LMON是全局队列服务的监控器,他负责检查集群内实例的死亡情况并发起重新配置,当实例加入或者离开集群的时候,它负责重新配置锁和资源。
4. LCK(Lockprocess)锁进程
LCK管理那些不是缓存融合的请求,例如librarycahe,rowcache.由于LMS进程提供了主要的锁管理功能,因此每个节点实例上只有一个LCK进程。
DIAG(TheDiagnosticDaemon)诊断守护进程
DIAG负责监控实例的健康状况并捕获进程失败的信息,并将失败信息写入用于失败分析,该进程自动启动且不需要人为调整,若失败则自动重新启动。
(2).缓存融合/缓存一致性
CacheFusion是RAC工作原理的一个中心环节.他的本质就是通过互联网络在集群内各节点的SGA之间进行块传递,从而避免了首先将块推送到磁盘,然后再重新读入其他实例的缓存中,从而最大限度的减少I/O。
当一个块被读入RAC环境中某个实例的缓存时,该块会被赋予一个锁资源(与行级锁不同),以确保其他实例知道该块正在被使用。
之后,如果另一个实例请求该块的一个拷贝,而该块已经处于前一个实例的缓存内,那么该块会通过互联网络直接被传递到另一个实例的SGA。
如果内存中的块已经被改变,但改变尚未提交,那么将会传递一个CR副本。
这就意味着,只要可能,数据块无需写回磁盘即可在各实例缓存之间移动,从而避免了同步多实例的缓存所花费的额外I/O,由此,需要互联网络的速度是高速的,需要快于磁盘访问的速度.
GCS负责维护全局缓冲区内的缓存一致性,LMS进程是其主要组成部分。
GCS确保同一时刻某个块上,只能有来自一个实例上的进程能对其修改,同时,并获得该块的当前版本和前映像,以及块所处的状态(NULL,,Shared,Exclusive),模式(local/gobal)。
GES负责维护dictionarycache和librarycache缓存一致性(这个与LCK是不同的)。
由于存在某个节点上对数据字典的修改(比如ddl和dcl对object属性的修改),GES负责同步各节点上的字典缓存,消除差异。
GES确保请求访问相同对象的多个实例间不会出现死锁。
GRD包含了所有共享资源的当前状态信息,它由GES和GCS共同维护,GRD贮存在内存中,被用来管理全局资源活动。
比如:
当一个实例第一次读取某块到SGA的时候,该块的角色为LOCAL,GCS记录此状态到GRD,一旦有另外的实例请求该块,GCS会更新GRD,将此块的角色由LOCAL变为GLOBAL
二RAC安装
不用把安装RAC看成是多么困难的一件事情.足够细心和耐性,充分的准备工作,然后加上一丁点运气,相信你能很快部署好一个RAC测试环境.当然,虚拟环境和实际环境的安装不尽相同,而且,生产系统环境的搭建需要经过缜密的规划和系统的测试.但大同小异,安装过程不该称为我们的绊脚石.
1.安装规划部署
安装之前需重点规划RAC系统各文件的存储类型.可以参见表1.3.1。
一个好的存储规划方案,可以省去很多后续的维护成本。
2.安装过程
安装过程可以参考oracle联机文档installguid。
(Vmware安装可以参考VincentChan发表在oracle网站上的一文<使用VMwareServer在OracleEnterpriseLinux上安装OracleRAC10g>.文中讲的很详细,在此简单带过.)。
简单列一下安装RAC的几个重要步骤
配置系统内核参数以及环境
配置共享存储
安装CRS软件
安装RDBMS软件
创建数据库以及配置其他
3.几点注意问题.
特别提一下vmware下的时间同步问题,在我的环境下,两节点上时间差别很大.一开始采用vmware-toolbox工具同步宿主时间,效果不理想.可以在每个节点上放置一个小脚本,让他每隔一段时间以另一个节点为基准同步时间.这样,时间同步问题迎刃而解.在我的环境下,我设置每20秒同步一次时间.
rac1>catdate.sh
#!
/bin/sh
whiletrue
do
rdate-srac2>dev/null2>&1
sleep10
done
基于LINUX的Oracle10GRAC管理维护学习手记之三-CRS日常管理维护
本节分2部分,该部分介绍CRS管理维护,下部分介绍RAC下的RDBMS管理维护
三RAC管理维护
同Singleinstance相比,RAC的管理维护要复杂一些。
10g给我们提供了一个强大的EM管理工具,将很多管理维护工作简单和界面化。
我们也应当习惯使用EM来高效的完成更多的工作。
本文以下部分,将暂不讨论EM方面的管理,着重于命令行方式。
1.CRS管理维护
(1).CRS相关的接口命令
CRS在10GRAC体系下有着举足轻重的作用。
Oracle也提供了一些命令接口让我们诊断维护它。
<1>CRS_*
10GRAC下,有这么几组crs_命令维护CRS资源。
[root@rac2bin]#ls$ORA_CRS_HOME/bin|grep"crs_"|grep-vbin
crs_getperm crs_profile crs_register crs_relocate crs_setperm crs_start crs_stat crs_stop crs_unregister
下面分别讲述一下它们。
集群资源查询:
CRS_STAT
可以用来查看RAC中各节点上resources的运行状况,Resources的属性等。
例如使用-t选项,检查资源状态:
[root@rac1~]#crs_stat–t
NameTypeTargetStateHost
------------------------------------------------------------
ora.demo.dbapplicationONLINEONLINErac2
ora....o1.instapplicationONLINEONLINErac1
ora....o2.instapplicationONLINEONLINErac2
ora....SM1.asmapplicationONLINEONLINErac1
ora....C1.lsnrapplicationONLINEONLINErac1
ora.rac1.gsdapplicationONLINEONLINErac1
ora.rac1.onsapplicationONLINEONLINErac1
ora.rac1.vipapplicationONLINEONLINErac1
ora....SM2.asmapplicationONLINEONLINErac2
ora....C2.lsnrapplicationONLINEONLINErac2
ora.rac2.gsdapplicationONLINEONLINErac2
ora.rac2.onsapplicationONLINEONLINErac2
ora.rac2.vipapplicationONLINEONLINErac2
利于-p选项,获得资源配置属性。
[root@rac2bin]#crs_stat-pora.rac2.vip
NAME=ora.rac2.vip
TYPE=application
ACTION_SCRIPT=/opt/oracle/product/10.2.0/crs_1/bin/racgwrap
ACTIVE_PLACEMENT=1
AUTO_START=1
CHECK_INTERVAL=60
DESCRIPTION=CRSapplicationforVIPonanode
…………………………………………
USR_ORA_STOP_MODE=immediate
USR_ORA_STOP_TIMEOUT=0
USR_ORA_VIP=192.168.18.112
利用-p参数,获得资源权限。
[root@rac2bin]#crs_stat-ls|grepvip
ora.rac1.viprootoinstallrwxr-xr--
ora.rac2.viprootoinstallrwxr-xr--
主要参数有-t/-v/-p/-ls/-f等。
具体可以参见crs_stat–h
集群资源启动/停止CRS_START/CRS_STOP
这组命令主要负责各个节点上resources的启动/停止。
可以针对全局资源(例如:
crs_stop–all,表示停止所有节点上的resources),也可以针对节点上的某个特定的资源(例如:
crs_startora.rac2.ons,表示启动节点rac2上的ONS)。
集群资源配置CRS_REGISTER/CRS_UNREGISTER/CRS_PROFILE/CRS_SETPERM
这组命令主要负责集群资源的添加删除以及配置。
CRS_PROFILE:
用来生成resource的profile文件(当然我们也可以手动编辑或者通过现有生成),默认存放路径$ORA_CRS_HOME/crs/profile目录下,加参数-dir手动指定目录。
默认名称为resource_name.cap.
crs_profile-createresource_name-tapplication–a..–r..–o..
表3.1为crs_profile中参数配置说明(比较多,挑一些说吧):
参数名称
说明
参数指令(以create为例)
NAME
资源名称
crs_profile–createresource_name
TYPE
资源类型(application,generic)
crs_profile–createresource_name –t …
ACTION_SCRIPT
用来管理HA方案脚本
crs_profile–create
resource_name –a…
ACTIVE_PLACEMENT
资源贮存的位置/节点
crs_profile–create
resource_name –o–ap…
AUTO_START
资源自启动
crs_profile–create
resource_name –o–as…
CHECK_INTERVAL
资源监控间隔
crs_profile–create
resource_name –o–ci…
FAILOVER_DELAY
资源failover的等待时间
crs_profile–create
resource_name –o–fd…
FAILURE_INTERVAL
资源重启尝试间隔
crs_profile–create
resource_name –o–fi…
FAILURE_THRESHOLD
资源重启尝试次数(最大20次)
crs_profile–create
resource_name –o–ft…
HOSTING_MEMBERS
资源启动或者failover的首要节点选择
crs_profile–create
resource_name –h…
PLACEMENT
资源启动或者failover的节点选择模式(balanced,balanced,balanced)
crs_profile–create
resource_name -p
REQUIRED_RESOURCES
当前资源所依赖的资源
crs_profile–create
resource_name -r
RESTART_ATTEMPTS
资源重配置之前的尝试启动次数
crs_profile–create
resource_name –o–ra…
SCRIPT_TIMEOUT
等待ACTION_SCRIPT的结果返回时间
crs_profile–create
resource_name –o–st…
USR_ORA_VIP
Vip地址
crs_profile–createvip_name-tapplication–a$ORA_CRS_HOME/bin/uservip–ooi=…,ov=…,on=…
crs_profile-updateresource_name…用来更新现有profile(更新的只是profile,而并不是对已经注册到crs里面的资源属性的更改)
crs_register负责将resource的注册到OCR。
注册的方法是先生成profile,然后运行
crs_registerresource[-dir…]命令,同时,crs_register也具有updateresource功能,具体办法可以更新resource对应的profile文件,然后运行crs_register-uresource_name[-dir…]或者直接发布crs_register–updateresource_name…
比如,我将rac节点上的vip改为手动启动。
[root@rac1crs]#crs_register-updateora.rac1.vip-oas=0
[root@rac1crs]#crs_stat-pora.rac1.vip|grepAUTO_START
AUTO_START=0
crs_unregister负责将resource从ocr中移除。
必要时候需要加-f参数。
crs_setperm用来设置resource的权限(诸如设置owner,用户的读写权限等),更改owner用-o参数,更改group用-g,更改用户权限用-u,在此不多举例了。
<2>.CRSCTL
用crsctlcheckcrs,检查crs的健康情况。
[root@rac1~]#crsctlcheckcrs
CSSappearshealthy
CRSappearshealthy
EVMappearshealthy
用crsctl控制CRS服务
crsctlstart|stop|enable|disablecrs
用crsctl启动/停止resource
[root@rac1~]#crsctlstopresources
Stoppingresources.
SuccessfullystoppedCRSresources
[root@rac1~]#crsctlstartresources
Startingresources.
SuccessfullystartedCRSresources
用crsctl检查以及添加、删除votingdisk
下面讲述。
更多参见crsctlhelp。
<3>SRVCTL
SRVCTL是一个强大的CRS和RDBMS的管理配置工具。
相关用法参照srvctl-h
(1)srvctladd/delete..添加删除资源。
譬如我们在进行数据库单实例迁移到rac的时候,可以用这个工具手工注册database或者asm实例到OCR。
(2)srvctlstatus…资源的状态监测
(3)s