OracleRAC日常管理和维护.docx
《OracleRAC日常管理和维护.docx》由会员分享,可在线阅读,更多相关《OracleRAC日常管理和维护.docx(11页珍藏版)》请在冰豆网上搜索。
OracleRAC日常管理和维护
Oracle-RAC日常管理和维护
ORACLERAC日常管理
1、最常用、最重要的命令:
首先登陆的服务器然后执行su-oracle
关闭集群:
$crs_stop–all
ps–ef|grepora
查看是否还有ora开头的进程,没有后方可关机。
启动集群:
$crs_start-all
启动完集群后可以用如下命令检查集群状态,所有的服务都要是ONLINE才是正常的,如下
[root@node1bin]$crs_stat-t
Name Type Target State Host
------------------------------------------------------------
ora....w1.instapplication ONLINE ONLINE node1
ora....w2.instapplication ONLINE ONLINE node2
ora.cjw.db application ONLINE ONLINE node1
ora....SM1.asmapplication ONLINE ONLINE node1
ora....E1.lsnrapplication ONLINE ONLINE node1
ora.node1.gsd application ONLINE ONLINE node1
ora.node1.ons application ONLINE ONLINE node1
ora.node1.vip application ONLINE ONLINE node1
ora....SM2.asmapplication ONLINE ONLINE node2
ora....E2.lsnrapplication ONLINE ONLINE node2
ora.node2.gsd application ONLINE ONLINE node2
ora.node2.ons application ONLINE ONLINE node2
ora.node2.vip application ONLINE ONLINE node2
ps–ef|grepora
下面是一些简介,了解一下就可以了,有时间可以深入研究。
一、OracleRAC简介:
OracleRAC支持Oracle数据库在集群上运行真正的应用程序。
此处的真正应用是指RAC能够支持所有类型的主流商业应用程序。
这包括流行的封装产品,如SAP、PeopleSoft和OracleE*BusinessSuite等,以及自主研发的应用程序,其中包括OLTP和DSS,以及Oracle有效支持混合OLTP/DSS环境的独有能力。
Oracle是唯一提供具备这一功能的开放系统数据库的厂商。
OracleRAC运行于集群之上,为Oracle数据库提供了最高级别的可用性、可伸缩性和低成本计算能力。
如果集群内的一个节点发生故障,Oracle将可以继续在其余的节点上运行。
如果需要更高的处理能力,新的节点可轻松添加至集群。
为了保持低成本,即使最高端的系统也可以从采用标准化商用组件的小型低成本集群开始逐步构建而成。
Oracle的主要创新是一项称为高速缓存合并的技术,它最初是针对Oracle9i真正应用集群开发的。
高速缓存合并使得集群中的节点可以通过高速集群互联高效地同步其内存高速缓存,从而最大限度地低降低磁盘I/O。
高速缓存最重要的优势在于它能够使集群中所有节点的磁盘共享对所有数据的访问。
数据无需在节点间进行分区。
Oracle是唯一提供具备这一能力的开放系统数据库的厂商。
其它声称可以运行在集群上的数据库软件需要对数据库数据进行分区。
这对于拥有复杂的数据结构的真正应用程序而言,显得不切实际。
而且也不可能对集群系统进行统一变更。
如果您添加或删除节点或存储资源,数据则需要完全重新分区。
二、ORACLERAC工作原理
在一个应用环境当中,所有的服务器使用和管理同一个数据库,目的是为了分散每一台服务器的工作量,硬件上至少需要两台以上的服务器,而且还需要一个共享存储设备。
同时还需要两类软件,一个是集群软件,另外一个就是Oracle数据库中的RAC组件。
同时所有服务器上的OS都应该是同一类OS,根据负载均衡的配置策略,当一个客户端发送请求到某一台服务的listener后,这台服务器根据我们的负载均衡策略,会把请求发送给本机的RAC组件处理也可能会发送给另外一台服务器的RAC组件处理,处理完请求后,RAC会通过集群软件来访问我们的共享存储设备。
逻辑结构上看,每一个参加集群的节点有一个独立的instance,这些instance访问同一个数据库。
节点之间通过集群软件的通讯层(communicationlayer)来进行通讯。
同时为了减少IO的消耗,存在了一个全局缓存服务,因此每一个数据库的instance,都保留了一份相同的数据库cache。
架构图:
三、Oraclerac日常管理:
1、rac状态检查:
applicationservice状态应该都为online:
HDOADB1:
>crs_stat-t
NameTypeTargetStateHost
------------------------------------------------------------
ora....s1.instapplicationONLINEONLINEhdoadb1
ora....s2.instapplicationONLINEONLINEhdoadb2
ora.ams.dbapplicationONLINEONLINEhdoadb2
ora....B1.lsnrapplicationONLINEONLINEhdoadb1
ora....db1.gsdapplicationONLINEONLINEhdoadb1
ora....db1.onsapplicationONLINEONLINEhdoadb1
ora....db1.vipapplicationONLINEONLINEhdoadb1
ora....B2.lsnrapplicationONLINEONLINEhdoadb2
ora....db2.gsdapplicationONLINEONLINEhdoadb2
ora....db2.onsapplicationONLINEONLINEhdoadb2
ora....db2.vipapplicationONLINEONLINEhdoadb2
ora.orcl.dbapplicationONLINEONLINEhdoadb1
ora....l1.instapplicationONLINEONLINEhdoadb1
ora....l2.instapplicationONLINEONLINEhdoadb2
2、查看两台机器racdb状态:
$srvctlstatusdatabase–dorcl
$srvctlstatusdatabase–dams
查看一台机器的实例的状态
$srvctlstatusinstance-dorcl-iorcl1
特定节点上节点应用程序的状态
IXDBA.NET社区论坛
$ srvctlstatusnodeapps-nlinux1
VIPisrunningonnode:
linux1
GSDisrunningonnode:
linux1
Listenerisrunningonnode:
linux1
ONSdaemonisrunningonnode:
linux1
3、关闭整个racdb:
$srvctlstopdatabase–dorcl
$srvctlstopdatabase–dams
$srvctlstopnodeapps–nhdoadb1
$srvctlstopnodeapps–nhdoadb2
用crs_stat命令来检查applicationservice状态应该都为offline
HDOADB1:
>crs_stat-t
NameTypeTargetStateHost
------------------------------------------------------------
ora....s1.instapplicationOFFLINEOFFLINEhdoadb1
ora....s2.instapplicationOFFLINEOFFLINEhdoadb2
ora.ams.dbapplicationOFFLINEOFFLINEhdoadb2
ora....B1.lsnrapplicationOFFLINEOFFLINEhdoadb1
ora....db1.gsdapplicationOFFLINEOFFLINEhdoadb1
ora....db1.onsapplicationOFFLINEOFFLINEhdoadb1
ora....db1.vipapplicationOFFLINEOFFLINEhdoadb1
ora....B2.lsnrapplicationOFFLINEOFFLINEhdoadb2
ora....db2.gsdapplicationOFFLINEOFFLINEhdoadb2
ora....db2.onsapplicationOFFLINEOFFLINEhdoadb2
ora....db2.vipapplicationOFFLINEOFFLINEhdoadb2
ora.orcl.dbapplicationOFFLINEOFFLINEhdoadb1
ora....l1.instapplicationOFFLINEOFFLINEhdoadb1
ora....l2.instapplicationOFFLINEOFFLINEhdoadb2
4、开启整个racdb:
正常情况下当机器启动时oraclerac会自动启动的。
手动启动过程如下:
$srvctlstartnodeapps–nhdoadb1
$srvctlstartnodeapps–nhdoadb2
$srvctlstartdatabase–dorcl
$srvctlstartdatabase–dams
5、只停一个节点的instance(node1)
$srvctlstopinstance–dorcl–Iorcl1
$srvctlstopinstance–dams–Iams1
6、OracleClusterware的关闭与启动:
#cd$ORACLE_CRS_HOME/bin
#crsctlstartcrs------>启动CRS,会自动把其它的resource也启动
#crsctlstopcrs------->关闭CRS,会自动把其它的resource也关闭
crs_stop-all
四、OracleRAC常用的日志文件:
1、db的alertlog文件:
$ORACLE_BASE/admin/orcl/bdump/
$ORACLE_BASE/admin/ams/bdump/
2、oraclecrs日志文件:
$ORACLE_CRS_HOME/crs/log
$ORACLE_CRS_HOME/css/log
$ORACLE_CRS_HOME/evm/log
$ORACLE_CRS_HOME/srvm/log
CRS的管理
CRSCTL命令控制着本地节点的CRS服务(Oracleclusterwareprocesses)
停止CRS:
$crsctlstopcrs或者
$/etc/init.d/init.crsstop或者
$crs_stop–all
启动CRS:
$crsctlstartcrs或者
$/etc/init.d/init.crsstart
禁止Clusterware在系统重启后自动启动的方法:
$/etc/init.d/init.crsdisable
启动Clusterware在系统重启后自动启动的方法:
$/etc/init.d/init.crsenable
查看CRS服务状态
$crsctlcheckcrs
#############################################################
OCR的资源管理
OCR的资源,当RACcluster启动并成功运行以后,你可以使用crs_stat工具看到如下内容:
$ORA_CRS_HOME/bin/crs_stat
通常情况下,所有的资源的状态都应该是online。
另外,OCR每4个小时会备份一次。
有一些情况你可以通过恢复的OCR的配置文件来恢复出现问题的OCR。
比如使用出现如下情况:
$crs_stat-t
CRS-0184:
CannotcommunicatewiththeCRSdaemon.
$crsctlcheckboot
Failure4atprocr_open_keywithstatus4.
PROC-4:
Theclusterregistrykeytobeoperatedondoesnotexist.
$crsctlcheckcrs
Failure1contactingCSSdaemon
CannotcommunicatewithCRS
CannotcommunicatewithEVM
引起这个错误的一种可能原因是OCR配置丢了。
这个我们可以利用这些备份来还原以前的配置。
#/etc/init.crsdisable
#/etc/init.crsstop
先保证所有的crs进程全部停止。
#su–oracle
$cd$ORA_CRS_HOME/bin
$./ocrconfig-restore/opt/app/oracle/crs/cdata/crs/week.ocr
然后切换到root用户下,重新enableCRS
#/etc/init.crsenable
最后reboot两个节点
##############################################################
SRVCTL命令介绍
SRVCTL命令可以控制RAC数据库中的instance,listener以及services。
通常SRVCTL在ORACLE用户下执行。
下面我们来介绍srvctl命令。
1、通过SRVCTL命令来start/stop/check所有的实例:
$srvctlstart|stop|statusdatabase-d
2、start/stop指定的实例:
$srvctlstart|stop|statusinstance-d-i
3、列出当前RAC下所有的
$srvctlconfigdatabase-d
4、start/stop/check所有的nodeapps,比如:
VIP,GSD,listener,ONS:
$srvctlstart|stop|statusnodeapps-n
5、如果你使用ASM,srvctl也可以start/stopASM实例:
$srvctlstart|stopasm-n[-i][-o]
6、可以获取所有的环境信息:
$srvctlgetenvdatabase-d[-i]
7、设置全局环境和变量:
$srvctlsetenvdatabase-d-tLANG=en
8、从OCR中删除已有的数据库:
$srvctlremovedatabase-d
9、向OCR中添加一个数据库:
$srvctladddatabase-d-o
[-m][-p][-A/netmask][-r{PRIMARY|PHYSICAL_STANDBY|LOGICAL_STANDBY}][-s]
10、向OCR中添加一个数据库的实例:
$srvctladdinstance-d-i-n
$srvctladdinstance-d-i-n
11、向OCR中添加一个ASM实例:
$srvctladdasm-n-i-o
12、添加一个service
$srvctladdservice-d-s-r[-a][-P][-u]
13、修改在其他节点上的service
$srvctlmodifyservice-d-s-I-t
14、relocate某个节点的service到其他节点
srvctlrelocateservice-d-s-I
CRS及相关服务的常用命令的演示
1、查看状态的命令
#su–oracle--先切换到oracle用户
$crs_stat-t--查看crs及所有的service的状态
$crsctlcheckcrs--用crsctl命令,检查crs相关服务的状态
$srvctlstatusnodeapps-ndb01(db02)--使用srvctl查看所有节点上的服务是否正常
$srvctlstatusdatabase-ddb--使用srvctl查看数据库状态
启动和关闭相关服务的命令
#su–oracle
$crs_start–all--启动所有的crs服务
$crs_stop–all--停止所有的crs服务
$crsctlstartcrs--启动crs服务