Oracle RAC 常用维护工具和命令

本文介绍了Oracle Clusterware管理的各种命令,包括节点层的osnodes命令、网络层的oifcfg命令、集群层的crsctl等命令及OCR相关命令,以及应用层的srvctl、onsctl、crs_stat命令。详细讲解了各命令的功能、使用方法和应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Oracle的管理可以通过OEM或者命令行接口。OracleClusterware的命令集可以分为以下4种:

节点层:osnodes

网络层:oifcfg

集群层:crsctl,ocrcheck,ocrdump,ocrconfig

应用层:srvctl,onsctl,crs_stat

下面分别来介绍这些命令。

一.节点层

只有一个命令: osnodes,这个命令用来显示集群点列表,可用的参数如下,这些参数可以混合使用。

[root@raw1bin]#./olsnodes--help

Usage:olsnodes[-n][-p][-i][<node>|-l][-g][-v]

where

-nprintnodenumberwiththenodename

-pprintprivateinterconnectnamewiththenodename

-iprintvirtualIPnamewiththenodename

<node>printinformationforthespecifiednode

-lprintinformationforthelocalnode

-gturnonlogging

-vruninverbosemode

[root@raw1bin]#./olsnodes-n-p-i

raw11raw1-privraw1-vip

raw22raw2-privraw2-vip

二.网络层

网络层由各个节点的网络组件组成,包括2个物理网卡和3IP地址。也只有一个命令:oifcfg.

Oifctg命令用来定义和修改Oracle集群需要的网卡属性,这些属性包括网卡的网段地址,子网掩码,接口类型等。要想正确的使用这个命令,必须先知道Oracle是如何定义网络接口的,Oracle的每个网络接口包括名称,网段地址,接口类型3个属性。

Oifcfg命令的格式如下:interface_name/subnet:interface_type

这些属性中没有IP地址,但接口类型有两种,publicprivate,前者说明接口用于外部通信,用于OracleNetVIP地址,而后者说明接口用于Interconnect

接口的配置方式分为两类:globalnode-specific。前者说明集群所有节点的配置信息相同,也就是说所有节点的配置是对称的;而后者意味着这个节点的配置和其他节点配置不同,是非对称的。

Iflist:显示网口列表

Getif:获得单个网口信息

Setif:配置单个网口

Delif:删除网口

[root@raw1bin]#./oifcfg--help

PRIF-9:incorrectusage

Name:

oifcfg-OracleInterfaceConfigurationTool.

Usage:oifcfgiflist[-p[-n]]

oifcfgsetif{-node<nodename>|-global}{<if_name>/<subnet>:<if_type>}...

oifcfggetif[-node<nodename>|-global][-if<if_name>[/<subnet>][-type<if_type>]]

oifcfgdelif[-node<nodename>|-global][<if_name>[/<subnet>]]

oifcfg[-help]

<nodename>-nameofthehost,asknowntoacommunicationsnetwork

<if_name>-namebywhichtheinterfaceisconfiguredinthesystem

<subnet>-subnetaddressoftheinterface

<if_type>-typeoftheinterface{cluster_interconnect|public|storage}

[root@raw1bin]#./oifcfgiflist

eth010.85.10.0

eth1192.168.1.0

[root@raw1bin]#./oifcfggetif

eth010.85.10.119globalpublic

eth010.85.10.121globalpublic

eth010.85.10.0globalpublic

eth1192.168.1.119globalcluster_interconnect

eth1192.168.1.121globalcluster_interconnect

eth1192.168.1.0globalcluster_interconnect

--查看public类型的网卡

[root@raw1bin]#./oifcfggetif-typepublic

eth010.85.10.119globalpublic

eth010.85.10.121globalpublic

eth010.85.10.0globalpublic

--删除接口配置

[root@raw1bin]#./oifcfgdelif-global

--添加接口配置

[root@raw1bin]#./oifcfgsetif-globaleth0/192.168.1.119:public

[root@raw1bin]#./oifcfgsetif-globaleth1/10.85.10.119:cluster_interconnect

三.集群层

集群层是指由Clusterware组成的核心集群,这一层负责维护集群内的共享设备,并为应用集群提供完整的集群状态视图,应用集群依据这个视图进行调整。这一层共有4个命令:crsctl,ocrcheck,ocrdump,ocrconfig.后三个是针对OCR磁盘的。

3.1CRSCTL

Crsctl命令可以用来检查CRS进程栈,每个crs进程状态,管理Votedisk,跟踪CRS进程功能。

[root@raw1bin]#./crsctl

Usage:crsctlcheckcrs-checkstheviabilityoftheCRSstack

crsctlcheckcssd-checkstheviabilityofCSS

crsctlcheckcrsd-checkstheviabilityofCRS

crsctlcheckevmd-checkstheviabilityofEVM

crsctlsetcss<parameter><value>-setsaparameteroverride

crsctlgetcss<parameter>-getsthevalueofaCSSparameter

crsctlunsetcss<parameter>-setsCSSparametertoitsdefault

crsctlquerycssvotedisk-liststhevotingdisksusedbyCSS

crsctladdcssvotedisk<path>-addsanewvotingdisk

crsctldeletecssvotedisk<path>-removesavotingdisk

crsctlenablecrs-enablesstartupforallCRSdaemons

crsctldisablecrs-disablesstartupforallCRSdaemons

crsctlstartcrs-startsallCRSdaemons.

crsctlstopcrs-stopsallCRSdaemons.StopsCRSresourcesincaseofcluster.

crsctlstartresources-startsCRSresources.

crsctlstopresources-stopsCRSresources.

crsctldebugstatedumpevm-dumpsstateinfoforevmobjects

crsctldebugstatedumpcrs-dumpsstateinfoforcrsobjects

crsctldebugstatedumpcss-dumpsstateinfoforcssobjects

crsctldebuglogcss[module:level]{,module:level}...

-TurnsondebuggingforCSS

crsctldebugtracecss-dumpsCSSin-memorytracingcache

crsctldebuglogcrs[module:level]{,module:level}...

-TurnsondebuggingforCRS

crsctldebugtracecrs-dumpsCRSin-memorytracingcache

crsctldebuglogevm[module:level]{,module:level}...

-TurnsondebuggingforEVM

crsctldebugtraceevm-dumpsEVMin-memorytracingcache

crsctldebuglogres<resname:level>turnsondebuggingforresources

crsctlquerycrssoftwareversion[<nodename>]-liststheversionofCRSsoftwareinstalled

crsctlquerycrsactiveversion-liststheCRSsoftwareoperatingversion

crsctllsmodulescss-liststheCSSmodulesthatcanbeusedfordebugging

crsctllsmodulescrs-liststheCRSmodulesthatcanbeusedfordebugging

crsctllsmodulesevm-liststheEVMmodulesthatcanbeusedfordebugging

Ifnecesaryanyofthesecommandscanberunwithadditionaltracingby

addinga"trace"argumentattheveryfront.

Example:crsctltracecheckcss

3.1.1检查CRS状态

[root@raw1bin]#./crsctlcheckcrs

CSSappearshealthy

CRSappearshealthy

EVMappearshealthy

--检查单个状态

[root@raw1bin]#./crsctlcheckcssd

CSSappearshealthy

[root@raw1bin]#./crsctlcheckcrsd

CRSappearshealthy

[root@raw1bin]#./crsctlcheckevmd

EVMappearshealthy

3.1.2配置CRS栈是否自启动

CRS进程栈默认随着操作系统的启动而自启动,有时出于维护目的需要关闭这个特性,可以用root用户执行下面命令。

[root@raw1bin]#./crsctldisablecrs

[root@raw1bin]#./crsctlenablecrs

这个命令实际是修改了/etc/oracle/scls_scr/raw/root/crsstart这个文件里的内容。

3.1.3启动,停止CRS栈。

Oracle在10.1时,必须通过重新启动系统重启Clusterware,但是从Oracle10.2开始,可以通过命令来启动和停止CRS.

--启动CRS

[root@raw1bin]#./crsctlstartcrs

AttemptingtostartCRSstack

TheCRSstackwillbestartedshortly

--关闭CRS

[root@raw1bin]#./crsctlstopcrs

Stoppingresources.

SuccessfullystoppedCRSresources

StoppingCSSD.

ShuttingdownCSSdaemon.

Shutdownrequestsuccessfullyissued.

3.1.4查看Votedisk磁盘位置

[root@raw1bin]#./crsctlquerycssvotedisk

0.0/dev/raw/raw2

located1votedisk(s).

3.1.5查看和修改CRS参数

--查看参数:用get

[root@raw1bin]#./crsctlgetcssmisscount

60

--修改参数:用set,但是这个功能要慎用

[root@raw1bin]#./crsctlsetcssmiscount60

3.1.6跟踪CRS模块,提供辅助功能

CRS由CRSCSSEVM三个服务组成,每个服务又是由一系列module组成,crsctl允许对每个module进行跟踪,并把跟踪内容记录到日志中。

[root@raw1bin]#./crsctllsmodulescss

ThefollowingaretheCSSmodules::

CSSD

COMMCRS

COMMNS

[root@raw1bin]#./crsctllsmodulescrs

ThefollowingaretheCRSmodules::

CRSUI

CRSCOMM

CRSRTI

CRSMAIN

CRSPLACE

CRSAPP

CRSRES

CRSCOMM

CRSOCR

CRSTIMER

CRSEVT

CRSD

CLUCLS

CSSCLNT

COMMCRS

COMMNS

[root@raw1bin]#./crsctllsmodulesevm

ThefollowingaretheEVMmodules::

EVMD

EVMDMAIN

EVMCOMM

EVMEVT

EVMAPP

EVMAGENT

CRSOCR

CLUCLS

CSSCLNT

COMMCRS

COMMNS

--跟踪CSSD模块,需要root用户执行:

[root@raw1bin]#./crsctldebuglogcss"CSSD:1"

Configurationparametertraceisnowsetto1.

SetCRSDDebugModule:CSSDLevel:1

--查看跟踪日志

[root@raw1cssd]#pwd

/u01/app/oracle/product/crs/log/raw1/cssd

[root@raw1cssd]#moreocssd.log

...

[CSSD]2010-03-0800:19:27.160[36244384]>TRACE:clssscSetDebugLevel:Thelogginglevelissetto1,thecachelevelissetto2

[CSSD]2010-03-0800:19:52.139[119085984]>TRACE:clssgmClientConnectMsg:Connectfromcon(0x834fd18)proc(0x8354c70)pid()proto(10:2:1:1)

...

3.1.7维护Votedisk

以图新方式安装Clusterware的过程中,在配置Votedisk时,如果选择ExternalRedundancy策略。则只能填写一个Votedisk。但是即使使用ExternalRedundancy作为冗余策略,也可以添加多个Vodedisk,只是必须通过crsctl命令来添加,添加多个Votedisk后,这些Votedisk互为镜像,可以防止Votedisk的单点故障。

需要注意的是,Votedisk使用的是一种“多数可用算法”,如果有多个Votedisk,,则必须一半以上的Votedisk同时使用,Clusterware才能正常使用。比如配置了4Votedisk,坏一个Votedisk,集群可以正常工作,如果坏了2个,则不能满足半数以上,集群会立即宕掉,所有节点立即重启,所以如果添加Votedisk,尽量不要只添加一个,而应该添加2个。这点和OCR不一样。OCR只需配置一个。

添加和删除Votedisk的操作比较危险,必须停止数据库,停止ASM,停止CRSStack后操作,并且操作时必须使用-force参数。

1)查看当前配置

[root@raw1bin]#./crsctlquerycssvotedisk

2)停止所有节点的CRS

[root@raw1bin]#./crsctlstopcrs

3)添加Votedisk

[root@raw1bin]#./crsctladdcssvotedisk/dev/raw/raw1-force

注意:即使在CRS关闭后,也必须通过-force参数来添加和删除Votedisk,并且-force参数只有在CRS关闭的场合下使用才安全。否则会报:Cluterisnotareadystateforonlinediskaddition.

4)确认添加后的情况:

[root@raw1bin]#./crsctlquerycssvotedisk

5)启动CRS

[root@raw1bin]#./crsctlstartcrs

3.2OCR命令系列

OracleClusterware把整个集群的配置信息放在共享存储上,这个存储就是OCRDisk.在整个集群中,只有一个节点能对OCRDisk进行读写操作,这个节点叫作MasterNode,所有节点都会在内存中保留一份OCR的拷贝,同时哟一个OCRProcess从这个内存中读取内容。OCR内容发生改变时,由MasterNodeOCRProcess负责同步到其他节点的OCRProcess

因为OCR的内容如此重要,Oracle4个小时对其做一次备份,并且保留最后的3个备份,以及前一天,前一周的最后一个备份。这个备份由MasterNodeCRSD进程完成,备份的默认位置是$CRS_HOME/crs/cdata/<cluster_name>目录下。每次备份后,备份文件名自动更改,以反应备份时间顺序,最近一次的备份叫作backup00.ocr。这些备份文件除了保存在本地,DBA还应该在其他存储设备上保留一份,以防止意外的存储故障。

3.2.1ocrdump

该命令能以ASCII的方式打印出OCR的内容,但是这个命令不能用作OCR的备份恢复,也就是说产生的文件只能用作阅读,而不能用于恢复。

命令格式:ocrdump[-stdout][filename][-keynamename][-xml]

参数说明:

-stdout:把内容打印输出到屏幕上

Filename:内容输出到文件中

-keyname:只打印某个键及其子健内容

-xml:以xml格式打印输出

示例:把system.css键的内容以.xml格式打印输出到屏幕

[root@raw1bin]#./ocrdump-stdout-keynamesystem.css-xml|more

<OCRDUMP>

<TIMESTAMP>03/08/201004:28:41</TIMESTAMP>

<DEVICE>/dev/raw/raw1</DEVICE>

<COMMAND>./ocrdump.bin-stdout-keynamesystem.css-xml</COMMAND>

......

这个命令在执行过程中,会在$CRS_HOME/log/<node_name>/client目录下产生日志文件,文件名ocrdump_<pid>.log,如果命令执行出现问题,可以从这个日志查看问题原因。

3.2.2ocrcheck

Ocrcheck命令用于检查OCR内容的一致性,命令执行过程会在$CRS_HOME/log/nodename/client目录下产生ocrcheck_pid.log日志文件。这个命令不需要参数。

[root@raw1bin]#./ocrcheck

StatusofOracleClusterRegistryisasfollows:

Version:2

Totalspace(kbytes):147352

Usedspace(kbytes):4360

Availablespace(kbytes):142992

ID:1599790592

Device/FileName:/dev/raw/raw1

Device/Fileintegritychecksucceeded

Device/Filenotconfigured

Clusterregistryintegritychecksucceeded

3.2.3ocrconfig

该命令用于维护OCR磁盘,安装clusterware过程中,如果选择ExternalRedundancy冗余方式,则只能输入一个OCR磁盘位置。但是Oracle允许配置两个OCR磁盘互为镜像,以防止OCR磁盘的单点故障。OCR磁盘和Votedisk磁盘不一样,OCR磁盘最多只能有两个,一个PrimaryOCR和一个MirrorOCR

[root@raw1bin]#./ocrconfig--help

Name:

ocrconfig-ConfigurationtoolforOracleClusterRegistry.

Synopsis:

ocrconfig[option]

option:

-export<filename>[-sonline]

-Exportclusterregistercontentstoafile

-import<filename>-Importclusterregistrycontentsfromafile

-upgrade[<user>[<group>]]

-Upgradeclusterregistryfrompreviousversion

-downgrade[-version<versionstring>]

-Downgradeclusterregistrytothespecifiedversion

-backuploc<dirname>-Configureperiodicbackuplocation

-showbackup-Showbackupinformation

-restore<filename>-Restorefromphysicalbackup

-replaceocr|ocrmirror[<filename>]-Add/replace/removeaOCRdevice/file

-overwrite-OverwriteOCRconfigurationondisk

-repairocr|ocrmirror<filename>-RepairlocalOCRconfiguration

-help-Printoutthishelpinformation

Note:

Alogfilewillbecreatedin

$ORACLE_HOME/log/<hostname>/client/ocrconfig_<pid>.log.Pleaseensure

youhavefilecreationprivilegesintheabovedirectorybefore

runningthistool.

--查看自助备份

[root@raw1bin]#./ocrconfig-showbackup

在缺省情况下,OCR自动备份在$CRS_HOME/CRS/CDATA/cluster_name目录下,可以通过ocrconfig-backuploc<directory_name>命令修改到新的目录

3.2.4使用导出,导入进行备份和恢复

Oracle推荐在对集群做调整时,比如增加,删除节点之前,应该对OCR做一个备份,可以使用export备份到指定文件,如果做了replace或者restore等操作,Oracle建议使用cluvfycompocr-nall命令来做一次全面的检查。该命令在clusterware的安装软件里。

1)首先关闭所有节点的CRS

[root@raw1bin]#./crsctlstopcrs

Stoppingresources.

SuccessfullystoppedCRSresources

StoppingCSSD.

ShuttingdownCSSdaemon.

Shutdownrequestsuccessfullyissued.

2)用root用户导出OCR内容

[root@raw1bin]#./ocrconfig-export/u01/ocr.exp

3)重启CRS

[root@raw1bin]#./crsctlstartcrs

AttemptingtostartCRSstack

TheCRSstackwillbestartedshortly

4)检查CRS状态

[root@raw1bin]#./crsctlcheckcrs

CSSappearshealthy

CRSappearshealthy

EVMappearshealthy

5)破坏OCR内容

[root@raw1bin]#ddif=/dev/zeroof=/dev/raw/raw1bs=1024count=102400

102400+0recordsin

102400+0recordsout

6)检查OCR一致性

[root@raw1bin]#./ocrcheck

PROT-601:Failedtoinitializeocrcheck

7)使用cluvfy工具检查一致性

[root@raw1cluvfy]#./runcluvfy.shcompocr-nall

VerifyingOCRintegrity

UnabletoretrievenodelistfromOracleclusterware.

Verificationcannotproceed.

8)使用Import恢复OCR内容

[root@raw1bin]#./ocrconfig-import/u01/ocr.exp

9)再次检查OCR

[root@raw1bin]#./ocrcheck

StatusofOracleClusterRegistryisasfollows:

Version:2

Totalspace(kbytes):147352

Usedspace(kbytes):4364

Availablespace(kbytes):142988

ID:610419116

Device/FileName:/dev/raw/raw1

Device/Fileintegritychecksucceeded

Device/Filenotconfigured

Clusterregistryintegritychecksucceeded

10)使用cluvfy工具检查

[root@raw1cluvfy]#./runcluvfy.shcompocr-nall

VerifyingOCRintegrity

WARNING:

Thesenodescannotbereached:

raw2

Verificationwillproceedwithnodes:

raw1

ERROR:

Userequivalenceunavailableonallthenodes.

Verificationcannotproceed.

VerificationofOCRintegritywasunsuccessfulonallthenodes.

注:此处不成功是因为我的机器卡,故raw2节点没有启动


3.2.5移动OCR文件位置

实例演示将OCR/dev/raw/raw1移动到/dev/raw/raw3上。

1)查看是否有OCR备份

[root@raw1bin]#./ocrconfig-showbackup

如果没有备份,可以立即执行一次导出作为备份:

[root@raw1bin]#./ocrconfig-export/u01/ocrbackup-sonline

2)查看当前OCR配置

[root@raw1bin]#./ocrcheck

StatusofOracleClusterRegistryisasfollows:

Version:2

Totalspace(kbytes):147352

Usedspace(kbytes):4364

Availablespace(kbytes):142988

ID:610419116

Device/FileName:/dev/raw/raw1

Device/Fileintegritychecksucceeded

Device/Filenotconfigured

Clusterregistryintegritychecksucceeded

输出显示当前只有一个PrimaryOCR,在/dev/raw/raw1。没有MirrorOCR。因为现在只有一个OCR文件,所以不能直接改变这个OCR的位置,必须先添加镜像后在修改,否则会报:Failedtoinitializeocrconfig.

3)添加一个MirrorOCR

[root@raw1bin]#./ocrconfig-replaceocrmirror/dev/raw/raw4

4)确认添加成功

[root@raw1bin]#./ocrcheck

5)改变primaryOCR位置

[root@raw1bin]#./ocrconfig-replaceocr/dev/raw/raw3

确认修改成功:

[root@raw1bin]#./ocrcheck

6)使用ocrconfig命令修改后,所有RAC节点上的/etc/oracle/ocr.loc文件内容也会自动同步了,如果没有自动同步,可以手工的改成以下内容。

[root@raw1bin]#more/etc/oracle/ocr.loc

ocrconfig_loc=/dev/raw/raw1

Ocrmirrorconfig_loc=/dev/raw/raw3

local_only=FALSE

四.应用层

应用层就是指RAC数据库了,这一层有若干资源组成,每个资源都是一个进程或者一组进程组成的完整服务,这一层的管理和维护都是围绕这些资源进行的。有如下命令:srvctl,onsctl,crs_stat三个命令。

4.1crs_stat

Crs_stat这个命令用于查看CRS维护的所有资源的运行状态,如果不带任何参数时,显示所有资源的概要信息。每个资源显示是各个属性:资源名称,类型,目录,资源运行状态等。

[root@raw1bin]#./crs_stat

NAME=ora.raw.db

TYPE=application

TARGET=ONLINE

STATE=OFFLINE

......

也可以指定资源名,查看指定资源的状态,并可以使用-V-P选项,以查看详细信息,其中-p参数显示的内容比-V更详细。

1)查看制定资源状态

[root@raw1bin]#./crs_statora.raw2.vip

NAME=ora.raw2.vip

TYPE=application

TARGET=ONLINE

STATE=OFFLINE

2)使用-v选项,查看详细内容,这时输出多出4项内容,分别是允许重启次数,已执行重启次数,失败阀值,失败次数。

[root@raw1bin]#./crs_stat-vora.raw2.vip

NAME=ora.raw2.vip

TYPE=application

RESTART_ATTEMPTS=0

RESTART_COUNT=0

FAILURE_THRESHOLD=0

FAILURE_COUNT=0

TARGET=ONLINE

STATE=OFFLINE

3)使用-p选项查看更详细内容

[root@raw1bin]#./crs_stat-pora.raw2.vip

NAME=ora.raw2.vip

TYPE=application

ACTION_SCRIPT=/u01/app/oracle/product/crs/bin/racgwrap

ACTIVE_PLACEMENT=1

AUTO_START=1

CHECK_INTERVAL=60

DESCRIPTION=CRSapplicationforVIPonanode

FAILOVER_DELAY=0

FAILURE_INTERVAL=0

FAILURE_THRESHOLD=0

HOSTING_MEMBERS=raw2

OPTIONAL_RESOURCES=

PLACEMENT=favored

REQUIRED_RESOURCES=

RESTART_ATTEMPTS=0

SCRIPT_TIMEOUT=60

START_TIMEOUT=0

STOP_TIMEOUT=0

UPTIME_THRESHOLD=7d

USR_ORA_ALERT_NAME=

USR_ORA_CHECK_TIMEOUT=0

USR_ORA_CONNECT_STR=/assysdba

USR_ORA_DEBUG=0

USR_ORA_DISCONNECT=false

USR_ORA_FLAGS=

USR_ORA_IF=eth0

USR_ORA_INST_NOT_SHUTDOWN=

USR_ORA_LANG=

USR_ORA_NETMASK=255.255.255.0

USR_ORA_OPEN_MODE=

USR_ORA_OPI=false

USR_ORA_PFILE=

USR_ORA_PRECONNECT=none

USR_ORA_SRV=

USR_ORA_START_TIMEOUT=0

USR_ORA_STOP_MODE=immediate

USR_ORA_STOP_TIMEOUT=0

USR_ORA_VIP=10.85.10.123

这些字段是所有资源共有的,但是根据资源类型不同,某些字段可以空值。

4)使用-ls选项,可以查看每个资源的权限定义,权限定义格式和Linux一样。

[root@raw1bin]#./crs_stat-ls

NameOwnerPrimaryPrivGrpPermission

-----------------------------------------------------------------

ora.raw.dboracleoinstallrwxrwxr--

ora.raw.dmm.csoracleoinstallrwxrwxr--

ora....aw2.srvoracleoinstallrwxrwxr--

ora....w1.instoracleoinstallrwxrwxr--

ora....w2.instoracleoinstallrwxrwxr--

ora....SM1.asmoracleoinstallrwxrwxr--

ora....W1.lsnroracleoinstallrwxrwxr--

ora.raw1.gsdoracleoinstallrwxr-xr--

ora.raw1.onsoracleoinstallrwxr-xr--

ora.raw1.viprootoinstallrwxr-xr--

ora....SM2.asmoracleoinstallrwxrwxr--

ora....W2.lsnroracleoinstallrwxrwxr--

ora.raw2.gsdoracleoinstallrwxr-xr--

ora.raw2.onsoracleoinstallrwxr-xr--

ora.raw2.viprootoinstallrwxr-xr--

4.2onsctl

这个命令用于管理配置ONS(OracleNotificationService).ONSOracleClusterware实现FANEventPush模型的基础。

在传统模型中,客户端需要定期检查服务器来判断服务端状态,本质上是一个pull模型,Oracle10g引入了一个全新的PUSH机制--FAN(FastApplicationNotification),当服务端发生某些事件时,服务器会主动的通知客户端这种变化,这样客户端就能尽早得知服务端的变化。而引入这种机制就是依赖ONS实现,在使用onsctl命令之前,需要先配置ONS服务。

4.2.1ONS配置内容

RAC环境中,需要使用$CRS_HOME下的ONS,而不是$ORACLE_HOME下面的ONS,这点需要注意。配置文件在$CRS_HOME/opmn/conf/ons.config.

[root@raw1conf]#pwd

/u01/app/oracle/product/crs/opmn/conf

[root@raw1conf]#moreons.config

localport=6100

remoteport=6200

loglevel=3

useocr=on

参数说明:

Localport:这个参数代表本地监听端口,这里本地特指:127.0.0.1这个回环地址,用来和运行在本地的客户端进行通信

Remoteport:这个参数代表的是远程监听端口,也就是除了127.0.0.1以外的所有本地IP地址,用来和远程的客户端进行通信。

Loglevel:Oracle允许跟踪ONS进程的运行,并把日志记录到本地文件中,这个参数用来定义ONS进程要记录的日志级别,从1-9,缺省值是3.

Logfile:这个参数和loglevel参数一起使用,用于定义ONS进程日志文件的位置,缺省值是$CRS_HOME/opmn/logs/opmn.log

nodes和useocr:这两个参数共同决定饿了本地的ONSdaemon要和哪些远程节点上的ONSdaemon进行通信。

Nodes参数值格式如下:Hostname/IP:port[hostname/ip:port]

如:useoce=off

Nodes=rac1:6200,rac2:6200

useocr参数值为on/off,如果useocrON,说明信息保存在OCR中,如果是OFF,说明信息取nodes中的配置。对于单实例而言,要把useocr设置为off

4.2.2配置ONS

可以直接编译ONS的配置文件来修改配置,如果使用了OCR,则可以通过racgons命令进行配置,但必须以root用户来执行,如果用oracle用户来执行,不会提示任何错误,但也不会更改任何配置。

若要添加配置,可以使用下面命令:

Racgonsadd_configrac1:6200rac2:6200

若要删除配置,可以用下面命令:

Racgonsremove_configrac1:6200rac2:6200

4.2.3onsctl命令

使用onsctl命令可以启动,停止,调试ONS,并重新载入配置文件,其命令格式如下:

[root@raw1bin]#./onsctl

usage:./onsctlstart|stop|ping|reconfig|debug

start-Startopmnonly.

stop-Stoponsdaemon

ping-Testtoseeifonsdaemonisrunning

debug-Displaydebuginformationfortheonsdaemon

reconfig-Reloadtheonsconfiguration

help-Printashortsyntaxdescription(this).

detailed-Printaverbosesyntaxdescription.

ONS进程运行,并不一定代表ONS正常工作,需要使用ping命令来确认。

1)在OS级别查看进程状态。

[root@raw1bin]#ps-aef|grepons

root19246953003:17pts/100:00:00grepons

oracle3072310Mar08?00:00:00/u01/app/oracle/product/crs/opmn/bin/ons-d

oracle30724307230Mar08?00:00:04/u01/app/oracle/product/crs/opmn/bin/ons-d

2)确认ONS服务的状态

[root@raw1bin]#./onsctlping

Numberofonsconfigurationretrieved,numcfg=2

onscfg[0]

{node=raw1,port=6200}

Addingremotehostraw1:6200

onscfg[1]

{node=raw2,port=6200}

Addingremotehostraw2:6200

onsisrunning...

3)启动ONS服务

[root@raw1bin]#./onsctlstart

4)使用debug选项,可以查看详细信息,其中最有意义的就是能显示所有连接。

[root@raw1bin]#./onsctldebug

Numberofonsconfigurationretrieved,numcfg=2

onscfg[0]

{node=raw1,port=6200}

Addingremotehostraw1:6200

onscfg[1]

{node=raw2,port=6200}

Addingremotehostraw2:6200

HTTP/1.1200OK

Content-Length:1357

Content-Type:text/html

Response:

========ONS========

Listeners:

NAMEBINDADDRESSPORTFLAGSSOCKET

-----------------------------------------

Local127.000.000.0016100000001427

Remote010.085.010.1196200000001018

RequestNolistener

Serverconnections:

IDIPPORTFLAGSSENDQWORKERBUSYSUBS

-------------------------------------------------------------------

1010.085.010.121620000104205010

Clientconnections:

IDIPPORTFLAGSSENDQWORKERBUSYSUBS

-------------------------------------------------------------------

3127.000.000.00161000001001a010

4127.000.000.00161000001001a011

Pendingconnections:

IDIPPORTFLAGSSENDQWORKERBUSYSUBS

-------------------------------------------------------------------

0127.000.000.001610000020812010

WorkerTicket:3/3,Idle:180

THREADFLAGS

----------------

17faba000000012

67f6ba000000012

32d6ba000000012

Resources:

Notifications:

Received:1,inReceiveQ:0,Processed:1,inProcessQ:0

Pools:

Message:24/25(1),Link:25/25(1),Subscription:24/25(1)

[root@raw1bin]#

4.3srvctl

该命令是RAC维护中最常用的命令,也是最复杂的命令。这个工具可以操作下面的几种资源:DatabaseInstanceASMServiceListenerNodeApplication,其中Nodeapplication又包括GSDONSVIP。这些资源除了使用srvctl工具统一管理外,某些资源还有自己独立的管理工具,比如ONS可以使用onsctl命令进行管理;Listener可以通过lsnrctl管理。

[root@raw1bin]#./srvctl--help

Usage:srvctl<command><object>[<options>]

command:enable|disable|start|stop|relocate|status|add|remove|modify|getenv|setenv|unsetenv|config

objects:database|instance|service|nodeapps|asm|listener

Fordetailedhelponeachcommandandobjectanditsoptionsuse:

srvctl<command><object>-h

4.3.1使用config查看配置

1)查看数据库配置

--不带任何参数时,显示OCR中注册的所有数据库

[root@raw1bin]#./srvctlconfigdatabase

raw

--使用-d选项,查看某个数据库配置

[root@raw1bin]#./srvctlconfigdatabase-draw

raw1raw1/u01/app/oracle/product/10.2.0/db_1

raw2raw2/u01/app/oracle/product/10.2.0/db_1

注:该输出结果显示数据库raw2个节点组成,各自实例名交raw1raw2.两个实例的$ORACLE_HOME/u01/app/oracle/product/10.2.0/db_1

--使用-a选项查看配置的详细信息

[root@raw1bin]#./srvctlconfigdatabase-draw

raw1raw1/u01/app/oracle/product/10.2.0/db_1

raw2raw2/u01/app/oracle/product/10.2.0/db_1

[root@raw1bin]#./srvctlconfigdatabase-draw-a

raw1raw1/u01/app/oracle/product/10.2.0/db_1

raw2raw2/u01/app/oracle/product/10.2.0/db_1

DB_NAME:raw

ORACLE_HOME:/u01/app/oracle/product/10.2.0/db_1

SPFILE:+DATA/raw/spfileraw.ora

DOMAIN:null

DB_ROLE:null

START_OPTIONS:null

POLICY:AUTOMATIC

ENABLEFLAG:DBENABLED

2)查看NodeApplication的配置

--不带任何参数,返回节点名,实例名和$ORACLE_HOME

[root@raw1bin]#./srvctlconfignodeapps-nraw1

raw1raw1/u01/app/oracle/product/10.2.0/db_1

--使用-a选项,查看VIP配置

[root@raw1bin]#./srvctlconfignodeapps-nraw1-a

VIPexists.:/raw1-vip/10.85.10.122/255.255.255.0/eth0

--使用-g选项,查看GSD

[root@raw1bin]#./srvctlconfignodeapps-nraw1-g

GSDexists.

--使用-s选项,查看ONS:

[root@raw1bin]#./srvctlconfignodeapps-nraw1-s

ONSdaemonexists.

--使用-l选项,查看Listener:

[root@raw1bin]#./srvctlconfignodeapps-nraw1-l

Listenerexists.

3)查看Listener.

[root@raw1bin]#./srvctlconfiglistener-nraw1

raw1LISTENER_RAW1

[root@raw1bin]#./srvctlconfiglistener-nraw2

raw2LISTENER_RAW2

4)查看ASM

[root@raw1bin]#./srvctlconfigasm-nraw1

+ASM1/u01/app/oracle/product/10.2.0/db_1

[root@raw1bin]#./srvctlconfigasm-nraw2

+ASM2/u01/app/oracle/product/10.2.0/db_1

5)查看Service

--查看数据库所有service配置

[root@raw1bin]#./srvctlconfigservice-draw-a

dmmPREF:raw2AVAIL:raw1TAF:basic

--查看某个Service配置

[root@raw1bin]#./srvctlconfigservice-draw-sdmm

dmmPREF:raw2AVAIL:raw1

--使用-a选项,查看TAF策略

[root@raw1bin]#./srvctlconfigservice-draw-sdmm-a

dmmPREF:raw2AVAIL:raw1TAF:basic


4.3.2使用add添加对象

一般情况下,应用层资源都是在图形界面的帮助下注册到OCR中的,比如VIPONS实在安装最后阶段创建的,而数据库,ASM是执行DBCA的过程中自动注册到OCR中的,Listener是通过netca工具。但是有些时候需要手工把资源注册到OCR中。这时候就需要add命令了。

1)添加数据库

[root@raw1bin]#./srvctladddatabase-ddmm-o$ORACLE_HOME

2)添加实例

[root@raw1bin]#./srvctladdinstance-ddmm-nrac1-idmm1

[root@raw1bin]#./srvctladdinstance-ddmm-nrac2-idmm2

3)添加服务,需要使用4个参数

-s:服务名

-r:首选实例名

-a:备选实例名

-P:TAF策略,可选值为None(缺省值),Basicpreconnect

[root@raw1bin]#./srvctladdservice-ddmm-sdmmservice-rrac1-arac2-PBASIC

4)确认添加成功

[root@raw1bin]#./srvctlconfigservice-ddmm-sdmmservice-a

4.3.3使用enable/disable启动,禁用对象

缺省情况下数据库,实例,服务,ASM都是随着CRS的启动而自启动的,有时候由于维护的需要,可以先关闭这个特性。

1)配置数据库随CRS的启动而自动启动

--启用数据库的自启动:

[root@raw1bin]#./srvctlenabledatabase-draw

--查看配置

[root@raw1bin]#./srvctlconfigdatabase-draw-a

raw1raw1/u01/app/oracle/product/10.2.0/db_1

raw2raw2/u01/app/oracle/product/10.2.0/db_1

DB_NAME:raw

ORACLE_HOME:/u01/app/oracle/product/10.2.0/db_1

SPFILE:+DATA/raw/spfileraw.ora

DOMAIN:null

DB_ROLE:null

START_OPTIONS:null

POLICY:AUTOMATIC

ENABLEFLAG:DBENABLED

--禁止数据库在CRS启动后自启动,这时需要手动启动

[root@raw1bin]#./srvctldisabledatabase-draw

2)关闭某个实例的自动启动

[root@raw1bin]#./srvctldisableinstance-draw-iraw1

[root@raw1bin]#./srvctlenableinstance-draw-iraw1

--查看信息

[root@raw1bin]#./srvctlconfigdatabase-draw-a

raw1raw1/u01/app/oracle/product/10.2.0/db_1

raw2raw2/u01/app/oracle/product/10.2.0/db_1

DB_NAME:raw

ORACLE_HOME:/u01/app/oracle/product/10.2.0/db_1

SPFILE:+DATA/raw/spfileraw.ora

DOMAIN:null

DB_ROLE:null

START_OPTIONS:null

POLICY:AUTOMATIC

ENABLEFLAG:DBENABLED

3)禁止某个服务在实例上运行

[root@raw1bin]#./srvctlenableservice-draw-srawservice-iraw1

[root@raw1bin]#./srvctldisableservice-draw-srawservice-iraw1

--查看

[root@raw1bin]#./srvctlconfigservice-draw-a

dmmPREF:raw2AVAIL:raw1TAF:basic

4.3.4使用remove删除对象

使用remove命令删除的是对象在OCR中的定义信息,对象本省比如数据库的数据文件等不会被删除,以后随时可以使用add命令重新添加到OCR中。

1)删除Service,在删除之前,命令会给出确定提示

[root@raw1bin]#./srvctlremoveservice-draw-srawservice

2)删除实例,删除之前同样会给出提示

[root@raw1bin]#./srvctlremoveinstance-draw-iraw1

3)删除数据库

[root@raw1bin]#./srvctlremovedatabase-draw

4.3.5启动,停止对象与查看对象

RAC环境下启动,关闭数据库虽然仍然可以使用SQL/PLUS方法,但是更推荐使用srvctl命令来做这些工作,这可以保证即使更新CRS中运行信息,可以使用start/stop命令启动,停止对象,然后使用status命令查看对象状态。

1)启动数据库,默认启动到open状态

[root@raw1bin]#./srvctlstartdatabase-draw

2)指定启动状态

[root@raw1bin]#./srvctlstartdatabase-draw-iraw1-omount

[root@raw1bin]#./srvctlstartdatabase-draw-iraw1-onomount

3)关闭对象,并指定关闭方式

[root@raw1bin]#./srvctlstopinstance-draw-iraw1-oimmediate

[root@raw1bin]#./srvctlstopinstance-draw-iraw1-oabort

4)在指定实例上启动服务:

[root@raw1bin]#./srvctlstartservice-draw-srawservice-iraw1

--查看服务状态

[root@raw1bin]#./srvctlstatusservice-draw-v

5)关闭指定实例上的服务

[root@raw1bin]#./srvctlstopservice-draw-srawservice-iraw1

--查看服务状态

[root@raw1bin]#./srvctlstatusservice-draw-v

4.3.6跟踪srvctl

Oracle10g中要跟踪srvctl非常简单,只要设置srvm_trace=true这个OS环境变量即可,这个命令的所有函数调用都会输出到屏幕上,可以帮助用户进行诊断。

[root@raw1bin]#exportSRVM_TRACE=TRUE

[root@raw1bin]#./srvctlconfigdatabase-draw

/u01/app/oracle/product/crs/jdk/jre/bin/java-classpath/u01/app/oracle/product/crs/jlib/netcfg.jar:/u01/app/oracle/product/crs/jdk/jre/lib/rt.jar:/u01/app/oracle/product/crs/jdk/jre/lib/i18n.jar:/u01/app/oracle/product/crs/jlib/srvm.jar:/u01/app/oracle/product/crs/jlib/srvmhas.jar:/u01/app/oracle/product/crs/jlib/srvmasm.jar:/u01/app/oracle/product/crs/srvm/jlib/srvctl.jar-DTRACING.ENABLED=true-DTRACING.LEVEL=2oracle.ops.opsctl.OPSCTLDriverconfigdatabase-draw

[main][6:58:44:858][OPSCTLDriver.setInternalDebugLevel:165]tracingistrueatlevel2tofilenull

[main][6:58:44:911][OPSCTLDriver.<init>:95]Securitymanagerisset

[main][6:58:44:955][CommandLineParser.parse:173]parsingcmdlineargs

[main][6:58:44:959][CommandLineParser.parse2WordCommandOptions:940]parsing2-wordcmdline

[main][6:58:44:961][OPSCTLDriver.execute:174]executingsrvctlcommand

[main][6:58:44:963][OPSCTLDriver.execute:199]executing2-wordcommandverb=10noun=101

[main][6:58:44:995][Action.getOPSConfig:162]getdbconfigfor:raw

[main][6:58:45:2][CommandLineParser.obtainOPSConfig:1410]srvctl:getdbconfigfor:raw

[main][6:58:45:47][GetActiveNodes.create:213]GoingintoGetActiveNodesconstructor...

......

4.4恢复

假设OCR磁盘和Votedisk磁盘全部破坏,并且都没有备份,该如何恢复,这时最简单的方法就是重新初始话OCRVotedisk,具体操作如下:

4.4.1停止所有节点的ClusterwareStack

Crsctlstopcrs;

4.4.2分别在每个节点用root用户执行$CRS_HOME/install/rootdelete.sh脚本

4.4.3在任意一个节点上用root用户执行$CRS_HOME/install/rootinstall.sh脚本

4.4.4在和上一步同一个节点上用root执行$CRS_HOME/root.sh脚本

4.4.5在其他节点用root执行行$CRS_HOME/root.sh脚本

4.4.6用netca命令重新配置监听,确认注册到Clusterware

#crs_stat-t-v

到目前为止,只有ListenerONS,GSD,VIP注册到OCR中,还需要把ASM,数据库都注册到OCR中。

4.4.7向OCR中添加ASM

#srvctladdasm-nrac1-i+ASM1-o/u01/app/product/database

#srvctladdasm-nrac2-i+ASM2-o/u01/app/product/database

4.4.8启动ASM

#srvctlstartasm-nrac1

#srvctlstartasm-nrac2

若在启动时报ORA-27550错误。是因为RAC无法确定使用哪个网卡作为PrivateInterconnect,解决方法:在两个ASMpfile文件里添加如下参数:

+ASM1.cluster_interconnects='10.85.10.119'

+ASM2.cluster_interconnects='10.85.10.121'

4.4.9手工向OCR中添加Database对象。

#srvctladddatabase-draw-o/u01/app/product/database

4.4.10添加2个实例对象

#srvctladdinstance-draw-iraw1-nraw1

#srvctladdinstance-draw-iraw2-nraw2

4.4.11修改实例和ASM实例的依赖关系

#srvctlmodifyinstance-draw-iraw1-s+ASM1

#srvctlmodifyinstance-draw-iraw2-s+ASM2

4.4.12启动数据库

#srvctlstartdatabase-draw

若也出现ORA-27550错误。也是因为RAC无法确定使用哪个网卡作为PrivateInterconnect,修改pfile参数在重启动即可解决。

SQL>altersystemsetcluster_interconnects='10.85.10.119'scope=spfilesid='raw1';

SQL>altersystemsetcluster_interconnects='10.85.10.121'scope=spfilesid='raw2';

Srvctl命令的用法还有很多,下面是在线文档的一个目录,感兴趣的可以自己研究下。

http://download-west.oracle.com/docs/cd/B19306_01/rac.102/b14197/toc.htm

srvctladd

srvctladddatabase

srvctladdinstance

srvctladdservice

srvctladdnodeapps

srvctladdasm

srvctlconfig

srvctlconfigdatabase

srvctlconfigservice

srvctlconfignodeapps

srvctlconfigasm

srvctlconfiglistener

srvctlenable

srvctlenabledatabase

srvctlenableinstance

srvctlenableservice

srvctlenableasm

srvctldisable

srvctldisabledatabase

srvctldisableinstance

srvctldisableservice

srvctldisableasm

srvctlstart

srvctlstartdatabase

srvctlstartinstance

srvctlstartservice

srvctlstartnodeapps

srvctlstartasm

srvctlstartlistener

srvctlstop

srvctlstopdatabase

srvctlstopinstance

srvctlstopservice

srvctlstopnodeapps

srvctlstopasm

srvctlstoplistener

srvctlmodify

srvctlmodifydatabase

srvctlmodifyinstance

srvctlmodifyservice

srvctlmodifynodeapps

srvctlrelocate

srvctlrelocateservice

srvctlstatus

srvctlstatusdatabase

srvctlstatusinstance

srvctlstatusservice

srvctlstatusnodeapps

srvctlstatusasm

srvctlgetenv

srvctlgetenvdatabase

srvctlgetenvinstance

srvctlgetenvservice

srvctlgetenvnodeapps

srvctlsetenvandunsetenv

srvctlsetenvdatabase

srvctlsetenvinstance

srvctlsetenvservice

srvctlsetenvnodeapps

srvctlunsetenvdatabase

srvctlunsetenvinstance

srvctlunsetenvservice

srvctlunsetenvnodeapps

srvctlremove

srvctlremovedatabase

srvctlremoveinstance

srvctlremoveservice

srvctlremovenodeapps

srvctlremoveasm

注:本文整理自<大话OracleRAC>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值