Oracle_RAC日常管理

更新时间:2023-06-08 11:01:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

ORACLE RAC 日常管理

一、Oracle RAC简介:

Oracle RAC 支持 Oracle 数据库在集群上运行真正的应用程序。此处的真正应用是指 RAC 能够支持所有类型的主流商业应用程序。这包括流行的封装产品,如 SAP、PeopleSoft 和 Oracle E*Business Suite 等,以及自主研发的应用程序,其中包括 OLTP 和 DSS,以及 Oracle 有效支持混合 OLTP/DSS 环境的独有能力。Oracle 是唯一提供具备这一功能的开放系统数据库的厂商。

Oracle RAC 运行于集群之上,为 Oracle 数据库提供了最高级别的可用性、可伸缩性和低成本计算能力。如果集群内的一个节点发生故障,Oracle 将可以继续在其余的节点上运行。如果需要更高的处理能力,新的节点可轻松添加至集群。为了保持低成本,即使最高端的系统也可以从采用标准化商用组件的小型低成本集群开始逐步构建而成。

Oracle 的主要创新是一项称为高速缓存合并的技术,它最初是针对 Oracle9i 真正应用集群开发的。高速缓存合并使得集群中的节点可以通过高速集群互联高效地同步其内存高速缓存,从而最大限度地低降低磁盘 I/O。高速缓存最重要的优势在于它能够使集群中所有节点的磁盘共享对所有数据的访问。数据无需在节点间进行分区。Oracle 是唯一提供具备这一能力的开放系统数据库的厂商。其它声称可以运行在集群上的数据库软件需要对数据库数据进行分区。这对于拥有复杂的数据结构的真正应用程序而言,显得不切实际。而且也不可能对集群系统进行统一变更。如果您添加或删除节点或存储资源,数据则需要完全重新分区。

二、ORACLE RAC工作原理

在一个应用环境当中,所有的服务器使用和管理同一个数据库,目的是为了分散每一台服务器的工作量,硬件上至少需要两台以上的服务器,而且还需要一个共享存储设备。同时还需要两类软件,一个是集群软件,另外一个就是Oracle数据库中的RAC组件。同时所有服务器上的OS都应该是同一类OS,根据负载均衡的配置策略,当一个客户端发送请求到某一台服务的listener后,这台服务器根据我们的负载均衡策略,会把请求发送给本机的RAC组件处理也可能会发送给另外一台服务器的RAC组件处理,处理完请求后,RAC会通过集群软件来访问我们的共享存储设备。

逻辑结构上看,每一个参加集群的节点有一个独立的instance,这些instance访问同一个数据库。节点之间通过集群软件的通讯层(communication layer)来进行通讯。同时为了减少IO的消耗,存在了一个全局缓存服务,因此每一个数据库的instance,都保留了一份相同的数据库cache。

架构图:

三、Oracle rac日常管理:

1、 rac状态检查:

application service状态应该都为online:

C:\Users\Administrator>crs_stat -t -v

名称 类型 R/RA F/FT 目标 状态 主机 ----------------------------------------------------------------------

ora....ER.lsnr ora....er.type 0/5 0/ ONLINE ONLINE fynode1

ora....N1.lsnr ora....er.type 0/5 0/0 ONLINE ONLINE fynode1

ora.OCR.dg ora....up.type 0/5 0/ ONLINE ONLINE fynode1 ora.asm ora.asm.type 0/5 0/ ONLINE ONLINE fynode1 ora.cvu ora.cvu.type 0/5 0/0 ONLINE ONLINE fynode1 ora....SM1.asm application 0/5 0/0 ONLINE ONLINE fynode1 ora....E1.lsnr application 0/5 0/0 ONLINE ONLINE fynode1

ora....de1.gsd application 0/5 0/0 OFFLINE OFFLINE

ora....de1.ons application 0/3 0/0 ONLINE ONLINE fynode1

ora....de1.vip ora....t1.type 0/0 0/0 ONLINE ONLINE fynode1

ora....SM2.asm application 0/5 0/0 ONLINE ONLINE fynode2 ora....E2.lsnr application 0/5 0/0 ONLINE ONLINE fynode2

ora....de2.gsd application 0/5 0/0 OFFLINE OFFLINE

ora....de2.ons application 0/3 0/0 ONLINE ONLINE fynode2

ora....de2.vip ora....t1.type 0/0 0/0 ONLINE ONLINE fynode2

ora.gsd ora.gsd.type 0/5 0/ OFFLINE OFFLINE

work ora....rk.type 0/5 0/ ONLINE ONLINE fynode1

ora.oc4j ora.oc4j.type 0/1 0/2 ONLINE ONLINE fynode1 ora.ons ora.ons.type 0/3 0/ ONLINE ONLINE fynode1 ora....ry.acfs ora....fs.type 0/5 0/ ONLINE ONLINE fynode1

ora.scan1.vip ora....ip.type 0/0 0/0 ONLINE ONLINE fynode1

2、 查看两台机器rac db状态:

$ srvctl status database –d zyyhis

查看一台机器的实例的状态

$ srvctl status instance -d zyyhis -i zyyhis

特定节点上节点应用程序的状态

社区论坛

$ srvctl status nodeapps -n zyynode1

VIP is running on node: zyynode1

GSD is running on node: zyynode1

Listener is running on node: zyynode1

ONS daemon is running on node: zyynode1

3、 关闭整个rac db:

$ srvctl stop database –d zyyhis

$ srvctl stop nodeapps –n zyynode1

$ srvctl stop nodeapps –n zyynode2

用crs_stat命令来检查application service状态应该都为offline

C:\Users\Administrator>crs_stat -t -v

4、 开启整个rac db:

正常情况下当机器启动时oracle rac会自动启动的。

手动启动过程如下:

$ srvctl start nodeapps –n zyynode1

$ srvctl start nodeapps –n zyynode2

$srvctl start database –d zyyhis

5、 只停一个节点的instance(node1)

$ srvctl stop instance –d zyyhis –I zyynode1

6、 Oracle Clusterware的关闭与启动:

# crsctl start crs------>启动CRS,会自动把其它的resource也启动

# crsctl stop crs------->关闭CRS,会自动把其它的resource也关闭

四、Oracle RAC常用的日志文件:

1、 db的alertlog文件:

$ORACLE_BASE/admin/orcl/bdump/

2、 oracle crs日志文件:

$ORACLE_CRS_HOME/crs/log

$ORACLE_CRS_HOME/css/log

$ORACLE_CRS_HOME/evm/log

$ORACLE_CRS_HOME/srvm/log

SRVCTL命令介绍

SRVCTL命令可以控制RAC数据库中的instance,listener以及services。 通常SRVCTL在ORACLE用户下执行。下面我们来介绍srvctl命令。

1、通过SRVCTL命令来start/stop/check所有的实例:

$ srvctl start|stop|status database -d <db_name>

2、start/stop指定的实例:

$ srvctl start|stop|status instance -d <db_name> -i <instance_name>

3、列出当前RAC下所有的

$ srvctl config database -d <db_name>

4、start/stop/check所有的nodeapps,比如:VIP, GSD, listener, ONS:

$ srvctl start|stop|status nodeapps -n <node_name>

5、如果你使用ASM,srvctl也可以start/stop ASM实例:

$ srvctl start|stop asm -n <node_name> [-i <asm_inst_name>] [-o<oracle_home>]

6、可以获取所有的环境信息:

$ srvctl getenv database -d <db_name> [-i <instance_name>]

7、设置全局环境和变量:

$ srvctl setenv database -d <db_name> -t LANG=en

8、从OCR中删除已有的数据库:

$ srvctl remove database -d <db_name>

9、向OCR中添加一个数据库:

$ srvctl add database -d <db_name> -o <oracle_home>

[-m <domain_name>] [-p<spfile>] [-A <name|ip>/netmask] [-r {PRIMARY |

PHYSICAL_STANDBY |LOGICAL_STANDBY}] [-s <start_options>]

10、向OCR中添加一个数据库的实例:

$ srvctl add instance -d <db_name> -i <instance_name> -n <node1>

$ srvctl add instance -d <db_name> -i <instance_name> -n <node2>

11、向OCR中添加一个ASM实例:

$ srvctl add asm -n <node_name> -i <asm_inst_name> -o <oracle_home>

12、添加一个service

$ srvctl add service -d <db_name> -s <service_name> -r <preferred_list>[-a <available_list>] [-P <TAF_policy>] [-u]

13、修改在其他节点上的service

$ srvctl modify service -d <db_name> -s <service_name> -I <orig_instance_name> -t <target_instance_name>

14、relocate某个节点的service到其他节点

srvctl relocate service -d <db_name> -s <service_name> -I

CRS及相关服务的常用命令

1、查看状态的命令

$ crs_stat -t --查看crs及所有的service的状态

$ crsctl check crs --用crsctl命令,检查crs相关服务的状态

$ srvctl status nodeapps -n db01 (db02) --使用srvctl查看所有节点上的服务是否正常 $ srvctl status database -d db --使用srvctl查看数据库状态

启动和关闭相关服务的命令

$ crs_start–all --启动所有的crs服务

$ crs_stop–all --停止所有的crs服务

$ crsctl start crs --启动crs服务

$ crsctl stop crs --停止crs服务

$ srvctl start nodeapps -n db01(db02) --启动某节点上所有的应用

$ srvctl stop nodeapps -n db01(db02) --停止某节点上所有的应用

$ srvctl start listener -n db01(db02) --启动某个节点的listener

$ srvctl stop listener -n db01(db02) --停止某个节点的listener

$ srvctl start instance –d db –i db01(db02) --启动某个instance

$ srvctl stop instance –d db –i db01(db02) --停止某个instance

$ srvctl start database –d db --启动数据库

$ srvctl stop database –d db --停止数据库

本文来源:https://www.bwwdw.com/article/q7d1.html

Top