2024年6月3日发(作者:)

Oracle12cRAC数据库集群运维宝典

张松坚

(中国农业银行福建省分行,福州350000)

摘要院OracleRAC架构是Oracle数据的一个技术难点之一,力求从基本概念、架构特性、日常运维

命令方面讲述RAC知识要点,以让初学者快速掌握RAC环境运维技能。

关键词院Oracle数据库;12c版本;RAC架构;运维;宝典

流行的

Oracle

12c版本与旧版相比有较大变化

RAC是实现数据库高可用部署的产品

袁包括概念

目前

令尧日志等遥是根据实战经验总结的管理RAC必须掌

握的运维技能袁每条命令都经过实践检验而毫无保留地

奉献给读者

1基本概念

RAC

GI-

-

Grid

Real

Infrastructure

ApplicationClusters

渊网格架

渊实时应用集群

构也称为cluster鄄

冤遥

Ware冤遥

管理

ASM

冤遥

-AutomaticStorageManagement渊自动存储

切换冤遥

TAF-TransparentApplicationFailover渊透明应用

CRS-

-

Cluster

Cluster

Ready

Synchronization

Service渊

Services

集群就绪服务

渊集群

冤遥

服务冤遥

CSS同步

ONS

VIP-

-Oracle

Virtual

Notification

IP渊虚拟IP冤袁

Service

浮动的

渊通知服务

IP袁某节点宕

冤遥

机袁其VIP会自动切换到其他节点遥

接名冤袁

SCAN

提供给用户使用的服务

-SingleClientAccess

IP遥

Name渊简单客户端连

从12CR2

OCR

开始

-Oracle

袁GI

Cluster

开始把集群的配置信息进行本地化

Resource渊集群配置信息冤袁

组件的管理功能

CRSCTL院为Oracle

集群控制工具袁提供对集群和底层

中的资源和实体

SRVCTL院为服务控制工具

袁用于管理Oracle集群

2RAC

Oracle

配置与架构

GI是集群软件

12c

RAC

要安装数据库

由GI尧ASM尧RDBMS组成袁其中

实现卷管理和共享存储袁已经集成到

袁必须先安装

GI中曰RDBMS

GI曰ASM

96

2019.04

数据库遥配置要求如下院

2.1

对于一个

硬件配置

RAC数据库而言袁至少应包括两个节点遥

在集群中配置的节点越多袁当其中一个节点失效时袁遭

受的性能降级越少遥还需要两台共享存储用于存放数

据袁另一NAS存储用于仲裁遥

2.2

可将数据库和磁盘卷管理解决方案结合在一起

GI

软件配置

是一种可用于所有主流平台上的集群解决方案

遥在安装

RDBMS

2.3

之前要先安装GI遥

一个典型的

网络配置

RACIP地址分配如下院

图1

Public

Network

Private

Network

Instance

Node

1

1

Node

Node

渊Interconnect冤

2

2

2

Instance

Node

3

3

Instance

Node

4

4

Storage

Shared

Network

Storage

图2

用于公用网络通信

RAC中的每个节点最少有

袁一个私网IP

3个

用于集群内节点间通

IP地址院一个地址

作者简介:张松坚袁资深专员袁高级工程师袁研究方

向院数据库系统管理遥

收稿日期:2019-01-24

信袁还有一个VIP用来支持节点发生故障时执行故障

切换遥因此至少需要两个物理网卡来支持RAC遥集群

对外提供服务的统一用SCAN地址遥部署架构如图2

所示遥

2援4

共享磁盘驱动器建议用支持冗余

磁盘存储

RAID的存储设

3

RAC

以确保高可用性

RAC

特性

个节点的失效不影响客户会话或集群自身的可用性

集群数据库是高可用和可扩展的袁集群中一

遥一

个节点的失效只是影响集群响应速度的轻微降级袁降级

的程度取决于集群中节点的总数遥

3.1

如图

Clusterware

3所示遥

(GI)主要进程

Oracle

Component

Clusterware

Linux/UNIX

CRS

Process

WindowsServices

Windows

Processes

CSS

,

(r)

cssdmonitor,

,

CTSS

cssdagent

OracleOHService

OracleOHService

EVM

OracleOHService

GIPC

,

(r)

GNS

Grid

gnsd

(r)

LOGGER

PlugandPlay

OracleOHService

mDNS

MasterDiskmon

(r)

Oracleagent

(11.2)

Oracle

and

(11.1)

racgimon

,orracgmain

Availability

High

(r)

ONS

Services

Oraclerootagent

orarootagent

ons

(r)

SYSMON

(r)

图3

重要进程介绍如下院

常终止会导致这个节点的集群或者主机重启

进程院这是一个很核心的进程

这个进程

如果它异

主要用于检查表盘能否正常访问袁节点私网间的通信是

否正常遥

源遥用来启动

进程

尧停止检查一些资源

院这个进程主要用于管理集群中的资

袁比如数据库实例尧

ASM尧

它来发布集群事件

监听尧磁盘组

进程院

事件监控

VIP等遥

比如实例启动

(event

尧停止等事件

monitor)进程

袁由

Ons进程院OracleNotificationServicedaemon袁它用

于接收evmd发来的集群事件袁然后将这些事件发送给

应用预订者或者本地的监听遥

网渊cluster

interconnect冤

进程院这个进程负责管理集群中所有的私

网卡遥

版本

袁以保存构建集群的最基本的信息

进程院维持gpnpprofile配置文件的最新

袁其中包括集群

名称尧集群GUID尧ASMdiscoverystring袁公网和私网信

息等遥

3援2

如图

Oracle

4

12C

所示

RAC

环境下的重要日志

数据库日志

ASM日志

监听日志

日志文件和目录

GI日志

图4

3.3

动态性能视图

V$开头的动态性能视图前多个G袁即GV$开头

的对应视图就是RAC环境的动态性能视图袁如GV$IN鄄

STANCE遥

3.4

启动

节点启动

RAC类似启动一个独立实例遥RAC中的节点

可以按任何顺序启动袁并且可以随时关闭和启动它们袁

而对集群内其余节点的影响极小遥启动数据库首先启动

ASM

并加入集群

实例并装载共享磁盘组袁

4常用命令

接下来启动RDBMS实例

下面执行用户默认为grid袁除非用括号特殊说明的

如root用户执行遥带SQL的为SQL语句执行遥

4.1

#crsctl

渊1冤

集群管理

stop

停集群

crs-f

(root

--

用户

常用

)

袁停本节点袁将把所管理的

ASM磁盘组尧数据库尧VIP尧监听等资源停止袁但数据库停

止是shutdownabort方式停止遥

#crsctlstopcluster-all--停止所有节点

#crsctl

渊2冤

start

启动集群

crs--

(root)

常用袁启动本节点袁将把所管理的

2019.04

97

ASM磁盘组尧数据库尧VIP尧监听等资源自动带起袁无需再

单独启动数据库和监听遥

#crsctlstartcluster-all--启动所有节点

$srvctl

渊3冤

start|stop|status

通过srvctl命令来管理指定实例

instance-d-i

grid@RAC3:~>srvctlstatusinstance-dibnkap-i

IBNKAP1

crsctl

渊4冤

start

起停某个或者所有

resource&resoure_name

CRS所管理的资源

crsctlstopresource&resoure_name

crsctlstartresource-all

crsctlstopresource-all

crsctl

渊5冤

start

起停某个初始化服务

resource&resoure_name

渊例如冤

-init

crsctlstopresource&resoure_name-init

crsctl

渊6冤

config

检查

crs

CRS/GRID

--返回

是否随操作系统启动

enable则为随机启动袁disable

--则需要手工启动

crsctl

渊7冤

disable

修改

crs

crs/grid随机器启动的配置

crsctlenablecrs

4.2

渊1冤

状态查看

SQL>show

查看是不是

parameter

RAC

cluster_database

注院cluster_database_instances的value值大于等于

2就是

$olsnodes

渊2冤

rac遥

查询节点

-s

$cemutlo

渊3冤查询集群名称

-n

$oifcfg

渊4冤

getif

查网络情况

$crsctl

渊5冤

status

查看rac

res

状态

-t--常用

$crsctlstatres-t-init--查集群基础资源

$crs_stat-t-v--crs_*命令oracle官方已不建议使用

$crsctlcheckcluster或crsctlcheckcluster-all

$crsctlcheckhas

$crsctlcheckcrs

$ocrcheck--可看空间使用情况

$srvctl

渊6冤

status

节点应用程序状态

nodeapps

98

2019.04

听器冤

渊7冤查看节点应用程序配置渊VIP尧GSD尧ONS尧监

$srvctlconfignodeapps

$srvctl

渊8冤

status

查看

vip

vip网络

-nrac5

4援3

渊1冤

监听器管理

$lsnrctlstart

启动监听器

$lsnrctl

渊2冤

stop

停止监听器

$lsnrctl

渊3冤查看监听器状态

LSNRCTL>status

或院

$srvctlstatuslistener

$srvctl

渊4冤

config

查看监听的配置

listener-a

4.4磁盘组管理

$asmcmd

渊1冤查看磁盘大小及状况

asmcmd>lsdg

asmcmdlsdg

或以grid用户sqlplus/assysasm登录

SQL>selectname,state,total_mb,free_mbfromv

$asm_diskgroup;

SQL>selectname,statefromv$asm_diskgroup;

SQL>select

渊2冤查看磁盘位置

name,pathfromv$asm_disk;

$crsctl

渊3冤

query

检查表磁盘

cssvotedisk

以grid

渊4冤

用户登录

grid环境为磁盘组新增磁盘

袁执行asmca命令袁启动ASM配置助

#su-grid

$exportDISPLAY=&ip_addr:0.0

$asmca

在DiskGroups页中袁选择要添加磁盘的磁盘组袁

右击出现菜单袁选择AddDisks院

#su–

渊5冤

grid

表空间扩容

$sqlplus野/assysasm冶

SQL>select*fromv$asm_operation;--查看盘重平

--衡状态

SQL>alterdiskgroup&dg_namerebalancepower8;

SQL>select*fromv$asm_operation;

#su–oracle

$sqlplus野/assysdba冶

SQL>Altertablespace&tbs_nameadddatafile耶+DA鄄

TA爷size10239M;

4.5管理ASM

$srvctl

渊1冤

status

查看asm

asm

状态

-a

$srvctl

渊2冤

config

查看asm

asm

配置

-a

$asmcmd

渊3冤查看

showclustermode

asm是不是Flex

4.6数据库管理

$srvctl

渊1冤

config

列出所有配置的数据库

database

$srvctl

渊2冤

config

查看数据库配置

database-d数据库名-a

$srvctl

渊3冤

remove

从OCR

database

中删除已有的数据库

-dorcl

$srvctl

渊4冤

add

instance

OCR中添加一个数据库的实例

-d-i-n

4.7管理SCAN

$srvctl

渊1冤

status

查看监听状态

scan

$srvctlstatusscan_listener

$srvctl

渊2冤

config

查看配置

scan

$srvctl

渊3冤

relocate

SCAN切换

scan_listener-i1-nrac6

4援8

$echo

渊1冤

实例管理

$ORACLE_SID

查看当前实例

$export

渊2冤

ORACLE_SID=

切换实例

$srvctl

渊3冤

config

查看运行了几个实例

database

$srvctl

渊4冤

status

查看所有实例运行在什么节点的状态

database-dIBNKAP渊IBNKAP为实

例名冤

或执行SELECTinst_id,instance_numberinst_no,in鄄

stance_nameinst_name,parallel,status,database_

statusdb_status,active_statestate,host_namehost

FROMgv$instance;

$srvctl

渊5冤

status

检查指定实例状态

instance-dibnkap-iIBNKAP2

$srvctl

渊6冤

start

打开单个实例

instance-d

渊以

ibnkap

oracle

-i

用户执行

IBNKAP2

或sqlplus野/assysdba冶

SQL>startup

$srvctl

渊7冤

start

打开指定节点所有实例

instance-dibnkap-node

渊可异节点

rac6

oracle@RAC6:~>srvctlstartinstance-dibnkap-i

IBNKAP2

$srvctl

渊8冤

stop

停止数据库所有实例

database-dibnkap(ibnkap为数据库名冤

srvctl

渊9冤

stop

停止数据库某个实例

instance-i&inst_name-d&db_name

或者

sqlplus野/assysdba冶

SQL>shutdownimmediate

5注意事项

本较高

渊1冤

袁因为集群中的每个节点都必须拥有各自的

RAC数据库有两大缺陷遥首先是它的许可成

Or鄄

acle

宜距离太远

许可袁还需要

袁否则达不到内部数据交换的带宽要求

RAC选项的许可遥另外节点之间不

袁从

而影响集群性能遥

先级

实例名

渊2冤RAC环境下修改数据库参数时一定要注意

冶遥

.

举一个例子

参数名字的优先级

冶大于野*.参数名字的优

altersystemsetlog_archive_dest_state_2=耶defer爷

scope=both;

生效了袁不再向dataGuard备库传输日志

重启数据库袁发现又传输了遥

showparameterlog_archive_dest_state_2显示为en鄄

able

为什么

create

pfile=耶/tmp/爷fromspfile;

结果显示如下

_archive_dest_state_2=enable

_archive_dest_state_2=enable

*.log_archive_dest_state_2=defer

2019.04

99

发现先前修改的只是野*.log_archive_dest_state_2冶袁

而非每个实例的参数遥

所以正确修改语句如下院

altersystemsetlog_archive_dest_state_2=耶defer爷

sid=耶&inst_1_name爷;

altersystemsetlog_archive_dest_state_2=耶defer爷

sid=耶&inst_2_name爷;

建议生成pfile确认没有野实例名.参数野

对主机名敏感袁不要轻易修改主机名遥

渊3冤对主机名尧网卡尧ASM磁盘一定要注意院RAC

RAC对网卡号敏感袁不要轻易更换网卡号曰添加

有些命令渊如crsctl冤在执行启停操作时需要以root身

份执行袁如院

#vi/root/.bashrc

exportLC_ALL=en_-8

exportPATH=$PATH:/oracle/app/12.1.0/grid/bin

渊5冤需把一些Oracle环境变量加到root用户中袁因

心跳丢失袁为了避免脑裂袁通过仲裁盘决定谁活下来遥

参考文献

渊6冤仲裁盘渊VotingDisk冤只能是奇数个遥当网络

[1]OracleDatabase12cDBA官方手册.8版.BobBry鄄

[2]孙风栋,王澜.Oracle11g数据库基础教程.

故障排除手册.

la[美].

磁盘到ASM前不要赋予pvid袁添加磁盘到ASM后不要

为660袁不要随意修改遥

否则可能导致crs无法正常停止袁强制停止需加-f遥

(上接第83页)

同的类型更加具有相似性袁但是具备相似性的同时还存

在着一定的差异

[7]

遥聚类的划分过程针对的对象不可预

生成pvid袁ASM磁盘设备的数据为grid:asmadmin袁权限

渊4冤停止不必要的的资源渊如尧4j冤袁

[3]TariqFarooq[美].Oracle数据库问题解决方案和

参考文献

[1]王炎冰.软件工程数据挖掘研究进展探析[J].信

息与电脑(理论版),2019,(02):149-150.

子技术与软件工程,2019,(01):141.

[2]梅拥军.软件工程中数据挖掘技术的应用[J].电

[3]程志平,徐涢基.数据挖掘技术在软件工程中的应

210-212.

测性袁与其他算法的过程中袁聚类的应用范围比较广袁

在信息数据的分析方面具有独特性袁在对信息数据进行

挖掘的同时袁还能确保检测的结果具有真实性遥

4结语

用探究[J].信息技术与信息化,2018,(12):

随着我国科技技术的飞越发展袁在信息时代下袁数

据挖掘技术已经成为了对信息数据进行处理尧有效储存

的重要方式袁在软件工程中采用数据挖掘技术袁对软件

进行开发袁对软件工程的管理进行优化袁使数据挖掘进

行加强袁确保数据的挖掘技术发挥出巨大的作用遥与

此同时袁在对数据挖掘的质量进行提升的同时袁还要

不断地缩短时间袁减少成本的投入袁为我国的软件工程

企业创造更大的效益袁为软件工程行业的持续发展提供

保障遥

(上接第81页)

护遥于对MVP设计模式的理解不够充分袁代码存在较

多冗余袁维护起来较繁琐遥为了解决这个问题袁将继续

深入研究设计模式袁并对代码和系统进行重构遥

参考文献

[1]黄柯毓.基于O2O的在线教育系统的设计与实现

[D].电子科技大学,2014.

2019.04

[4]蔡斌.数据挖掘技术在软件工程中的应用[J].电

子技术与软件工程,2018,(21):148.

[5]彭湘华.数据挖掘技术在软件工程中的应用[J].

电子技术与软件工程,2018,(16):156.

子技术与软件工程,2018,(12):177.

[6]高佳华.软件工程中数据挖掘技术的应用[J].电

[7]蒯天宇.数据挖掘技术在软件工程中的应用[J].

数字技术与应用,2018,36(05):112-113.

[2]郭俊.基于安卓智能家居App控制系统及用户行

为研究[D].南昌航空大学,2018.

[3]王学文.基于Android移动应用的性能测试平台关

键技术研究[D].华南理工大学,2015.

大连海事大学,2017.

[4]李辰.基于MVP架构的电商订单管理系统[D].

100