RAC 的维护

 

节点层 olsnodes

网络层 oifcfg

集群层 crsctlocrcheckocrdumpocrconfig

应用层 srvctlonsctlcrs_stat

 

 

 

节点层(olsnodes

$ olsnodes -n  显示节点编号

rac1    1

rac2    2

[oracle@rac1 admin]$ olsnodes -p  显示私有网络接口名称

rac1    rac1priv

rac2    rac2priv

[oracle@rac1 admin]$ olsnodes -n -p -i   -i显示vip

rac1    1       rac1priv        rac1vip

rac2    2       rac2priv        rac2vip

[oracle@rac1 admin]$ olsnodes -g -v   显示日志信息,显示详细日志

prlslms: Initializing LXL global

prlsndmain: Initializing CLSS context

prlsmemberlist: No of cluster members configured = 256

prlsmemberlist: Getting information for nodenum = 1

prlsmemberlist: node_name = rac1

prlsmemberlist: ctx->lsdata->node_num = 1

prls_printdata: Printing the node data

rac1

prlsmemberlist: Getting information for nodenum = 2

prlsmemberlist: node_name = rac2

prlsmemberlist: ctx->lsdata->node_num = 2

prls_printdata: Printing the node data

rac2

prlsndmain: olsnodes executed successfully

prlsndterm: Terminating LSF

 

 

网络层(oifcfgiflistgetif setifdelif

 

$ oifcfg iflist  查看网口列表

eth0  192.168.6.0

eth1  10.10.10.0

 

 

$ oifcfg getif 获得单个网口信息

eth0  192.168.6.0  global  public

eth1  10.10.10.0  global  cluster_interconnect

 

 

$ oifcfg setif -global testif/127.2.0.0:public  添加单个网口(public|interconnect

$ oifcfg getif

eth0  192.168.6.0  global  public

eth1  10.10.10.0  global  cluster_interconnect

testif  127.2.0.0  global  public

$

$ oifcfg delif -global testif 删除单个网口

$ oifcfg getif

eth0  192.168.6.0  global  public

eth1  10.10.10.0  global  cluster_interconnect

 

 

 

集群层(crsctlocrcheckocrdumpocrconfig

 

1OCR:解决健忘问题,将配置信息放在共享存储上。

2Voting Disk:记录节点中成员状态,以便仲裁哪个集群获得控制权

3ocssd:最关键的进程,启动条目放在inittab文件中,进程异常会导致系统重新启动,css服务通过多种心跳机制、实时监控集群健康状况,提供脑裂保护等基础集群服务功能

4crsd:进程异常会自动重启,启动条目放在inittab文件中,为应用层资源提供“高可用性服务”。对应用层资源提供进行监控、在这些资源出现异常的时候进行干预、包括关闭、重启进程或者转移服务。应用层资源会在安装的时候自动以CRS Resource的形式注册到OCR中。CRSD进程根据OCR中的内容,决定监控哪些进程,如何监控,出现问题时如何解决。

5evmd:负责发布crsd产生的各种事件,可以通过ons发布给客户,可以回调脚本(脚本可以自定义)。Evmd还负责ocssdcrsd的通信。进程异常会自动重启,启动条目放在inittab文件中。

 

 

$ crsctl check crs

CSS appears healthy

CRS appears healthy

EVM appears healthy

 

 

启动集群:

$ /etc/init.d/init.crs start

停止集群:

$ crsctl stop crs

 

查看crs参数:

$ crsctl get css misscount

60

 

设置为100 root 用户)

# crsctl set css misscount 100

Configuration parameter misscount is now set to 100.

 

 

查看votedisk位置:

$ crsctl query css votedisk

 0.     0    /dev/raw/raw2

 

located 1 votedisk(s).

 

 

VOTE

 

添加删除Votdisk的操作比较危险,必须停止数据库、停止ASM、停止CRS Stack后操作,操作时必须使用-force参数。

1、当前Votedisk的位置(使用type crsctl确认文件位置,要求是crs本身的命令)

#crsctl query css votedisk

2、停止所有节点的CRS

#crsctl stop crs

3、添加Votedisk

#crsctl add css votedisk /dev/raw/raw1 -force

#crsctl add css votedisk /dev/raw/raw41 -force

4、确认添加后的情况

#crsctl query css votedisk

5、启动crs

#crsctl start crs

 

 

OCR

 

Oracle Clusterware把整个集群的配置信息放在共享存储上,这个存储就是OCR Disk。在整个集群中只能有一个节点对OCR Disk进行读写操作,这个节点叫做Master Node,所有节点都会在内存中保留一份OCR的拷贝,同时有一个OCR Process从这个内存中读取内容。OCR内容发生改变以后,由master NodeOCR Process负责同步到其他节点的OCR process

读取OCR的客户端程序不能直接读取OCR,需要通过OCR Process进行读取,这也保证了OCR的安全。

 

 

因为OCR的内容非常的重要,Oracle会每隔4个小时对其进行一次备份,并且保留最后的三个备份,以及前一天、前一周的最后一个备份。这个备份由Master NodeCRSD进程完成,备份的默认位置是$CRS_HOME/crs/cdata/<cluster_name>目录下面,备份名字反映备份时间顺序,最近一次的备份叫做backup00.ocr。这些文件应该在别的位置保存一份,防止丢失。

OCR磁盘最多只能有两个。一个是Primary OCR,一个是mirror OCR

 

 

检查OCR内容一致性,会产生日志。

$ ocrcheck

Status of Oracle Cluster Registry is as follows :

         Version                  :          2

         Total space (kbytes)     :    1959812

         Used space (kbytes)      :       3816

         Available space (kbytes) :    1955996

         ID                       :  999742724

         Device/File Name         : /dev/raw/raw1

                                    Device/File integrity check succeeded

         Device/File Name         : /dev/raw/raw6

                                    Device/File integrity check succeeded

 

         Cluster registry integrity check succeeded

 

如果出现这么一行,表示有问题:

 Device /File needs to be synchronized with the other devices

 

 

 

查看OCR的备份:

$ ocrconfig -showbackup

 

rac2     2016/07/22 03:53:23     /oracle/app/oracle/product/10.2/crs/cdata/crs

 

rac2     2016/07/21 23:53:23     /oracle/app/oracle/product/10.2/crs/cdata/crs

 

          

 

rac2     2016/07/21 23:53:23     /oracle/app/oracle/product/10.2/crs/cdata/crs

 

rac2     2016/07/21 23:53:23     /oracle/app/oracle/product/10.2/crs/cdata/crs

 

 

可以使用ocrconfig backuploc <directory_name> 命令修改到新位置。

 

 

 

备份OCR

 

$ ocrconfig -backuploc /ocrdump/

PROT-20: Insufficient permission to proceed. Require privileged user

$ su

Password:

# ocrconfig -backuploc /ocrdump/

Segmentation fault

# crsctl stop crs

Stopping resources.

Successfully stopped CRS resources

Stopping CSSD.

Shutting down CSS daemon.

Shutdown request successfully issued.

# ocrconfig -export /ocrdump/ocrexp.ocr

 

# /etc/init.d/init.crs start

 

 

 

模拟损坏OCR文件,并修复:

# ocrcheck

Status of Oracle Cluster Registry is as follows :

         Version                  :          2

         Total space (kbytes)     :    1959812

         Used space (kbytes)      :       3816

         Available space (kbytes) :    1955996

         ID                       :  999742724

         Device/File Name         : /dev/raw/raw1

                                    Device/File integrity check succeeded

         Device/File Name         : /dev/raw/raw6

                                    Device/File integrity check succeeded

 

         Cluster registry integrity check succeeded

 

[root@rac1 oracle]# dd if=/dev/zero of=/dev/raw/raw1 bs=1024 count=10000

10000+0 records in

10000+0 records out

10240000 bytes (10 MB) copied, 1.36949 seconds, 7.5 MB/s

[root@rac1 oracle]#

[root@rac1 oracle]#

[root@rac1 oracle]#

[root@rac1 oracle]#

[root@rac1 oracle]# ocrcheck

PROT-602: Failed to retrieve data from the cluster registry

 

恢复:需关闭crs

 

# crsctl stop crs

Stopping resources.

Successfully stopped CRS resources

Stopping CSSD.

Shutting down CSS daemon.

Shutdown request successfully issued.

[root@rac1 oracle]# crs_stat -t

CRS-0184: Cannot communicate with the CRS daemon.

 

[root@rac1 oracle]# ocrconfig -import /ocrdump/ocrexp.ocr

[root@rac1 oracle]# ocrcheck

Status of Oracle Cluster Registry is as follows :

         Version                  :          2

         Total space (kbytes)     :    1959812

         Used space (kbytes)      :       3816

         Available space (kbytes) :    1955996

         ID                       :  577083309

         Device/File Name         : /dev/raw/raw1

                                    Device/File integrity check succeeded

         Device/File Name         : /dev/raw/raw6

                                    Device/File integrity check succeeded

 

         Cluster registry integrity check succeeded

 

 

[root@rac1 oracle]# /etc/init.d/init.crs start

Startup will be queued to init within 90 seconds.

 

# /etc/init.d/init.crs start

Startup will be queued to init within 90 seconds.

[root@rac2 oracle]# crs_stat -t

Name           Type           Target    State     Host        

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

ora.db.db      application    ONLINE    ONLINE    rac1        

ora....b1.inst application    ONLINE    ONLINE    rac1        

ora....b2.inst application    ONLINE    ONLINE    rac2        

ora....SM1.asm application    ONLINE    ONLINE    rac1        

ora....C1.lsnr application    ONLINE    ONLINE    rac1        

ora.rac1.gsd   application    ONLINE    ONLINE    rac1        

ora.rac1.ons   application    ONLINE    ONLINE    rac1        

ora.rac1.vip   application    ONLINE    ONLINE    rac1        

ora....SM2.asm application    ONLINE    ONLINE    rac2        

ora....C2.lsnr application    ONLINE    ONLINE    rac2        

ora.rac2.gsd   application    ONLINE    ONLINE    rac2        

ora.rac2.ons   application    ONLINE    ONLINE    rac2        

ora.rac2.vip   application    ONLINE    ONLINE    rac2

 

 

 

移动OCR位置

1、查看是否有OCR备份

 ocrconfig –showbackup

如果没有使用ocrconfig export  /oracle/ocr.exp s online进行备份

2、查看当前配置ocrcheck

3、如果当前只有一个OCR,不能直接修改位置,首先添加一个mirror ocr,然后再修改

 ocrconfig –replace ocrmirror  /dev/raw/raw21

4、确认添加成功ocrcheck

5、改变primary ocr的位置

 ocrconfig replace ocr /dev/raw/raw31  --primary ocr移动到raw31位置

6、确认修改成功ocrcheck

7、确认所有节点的/etc/oracle/ocr.loc内容自动同步,如果没有同步,进行手工的修改。

 

 

 

应用层

 

应用层就是指RAC数据库,这一层是由若干资源组成的。每个资源是一个进程或者一组进程组成的完整服务。这一层主要是围绕这些资源进行的。工具包括:srvctlonsctlcrs_stat

 

1crs_stat:查看crs维护的所有资源的运行状态

 -v-p参数列出详细信息,后者比前者更加详细

-ls参数列出权限信息

 

[root@rac1 oracle]# crs_stat  列出所有资源状态信息。

 

查看权限:

# crs_stat -ls

Name           Owner          Primary PrivGrp          Permission  

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

ora.db.db      oracle         dba                      rwxrwxr--

ora....b1.inst oracle         dba                      rwxrwxr--

ora....b2.inst oracle         dba                      rwxrwxr--

ora....SM1.asm oracle         dba                      rwxrwxr--

ora....C1.lsnr oracle         dba                      rwxrwxr--

ora.rac1.gsd   oracle         dba                      rwxr-xr--

ora.rac1.ons   oracle         dba                      rwxr-xr--

ora.rac1.vip   root           dba                      rwxr-xr--

ora....SM2.asm oracle         dba                      rwxrwxr--

ora....C2.lsnr oracle         dba                      rwxrwxr--

ora.rac2.gsd   oracle         dba                      rwxr-xr--

ora.rac2.ons   oracle         dba                      rwxr-xr--

ora.rac2.vip   root           dba                      rwxr-xr--

 

 

 

ONSOracle Notification Service

命令onsctl用于管理配置ons。当服务器发生某些事件时,服务器会主动的通知客户端发生这种变化。而这种机制就是依赖ONS实现的。

ONS的配置,在RAC环境下面,我们需要配置$CRS_HOME下的ONS,而不是ORACLE_HOME下的ONS

 

# pwd

/oracle/app/oracle/product/10.2/crs/opmn/conf

[root@rac1 conf]# more ons.config

localport=6113

remoteport=6200

loglevel=3

useocr=on

 

 

 

 

 

 

ONS的日志信息。

 

如果参数useocron,则说明信息保留在OCR中,对于RAC环境,需要配置这个参数。如果是off,说明是单机环境,信息需要保留在本地配置文件中。

 useocr=off

 nodes=dbs:6200,dbp:6200

说明本机的ONS要和dbsdbp两个节点上的6200进行通信

 useocr=on

 nodes信息就需要保留在OCR

 

$ocrdump -stdout -xml -keyname  DATABASE.ONS_HOSTS

导出OCR中关于ONS的配置信息

(用户权限应该是rootroot

 

命令onsctl的使用

 onsctl start |stop |debug|reconfig|detailed

启动、关闭、调试、重新装载配置文件、帮助

 

 

 

使用ping确认ONS是否启动。

然后使用startstop进行启动和关闭。

 

# onsctl ping

Number of onsconfiguration retrieved, numcfg = 2

onscfg[0]

   {node = rac1, port = 6200}

Adding remote host rac1:6200

onscfg[1]

   {node = rac2, port = 6200}

Adding remote host rac2:6200

ons is not running ...

 

启动:

[root@rac1 conf]# onsctl start

Number of onsconfiguration retrieved, numcfg = 2

onscfg[0]

   {node = rac1, port = 6200}

Adding remote host rac1:6200

onscfg[1]

   {node = rac2, port = 6200}

Adding remote host rac2:6200

Number of onsconfiguration retrieved, numcfg = 2

onscfg[0]

   {node = rac1, port = 6200}

Adding remote host rac1:6200

onscfg[1]

   {node = rac2, port = 6200}

Adding remote host rac2:6200

onsctl: ons started

 

验证:

[root@rac1 conf]# onsctl ping

Number of onsconfiguration retrieved, numcfg = 2

onscfg[0]

   {node = rac1, port = 6200}

Adding remote host rac1:6200

onscfg[1]

   {node = rac2, port = 6200}

Adding remote host rac2:6200

ons is running ...

 

 

 

 

 

 

使用非常多的命令srvctl、也是最复杂的命令

这个工具可以操作下面的资源

1DatabaseInstanceASMServiceListenerNode ApplicationGSDONSVIP

2、这些资源还有自己独立的管理工具,例如onsctllsnrctl

 

 

 

srvctl config database 查看在OCR中注册了的数据库。

 

srvctl config database -d test 显示test数据库的详细信息。

 

srvctl config nodeapps -n db1

 

srvctl config nodeapps -n db1 -a

srvctl config nodeapps -n db1 -g

srvctl config nodeapps -n db1 -s

srvctl config nodeapps -n db1 -l

 

srvctl config asm -n db1

srvctl config listener -n db1

 

 

使用add添加对象

 

1、添加数据库

$srvctl add database –d abc –o $ORACLE_HOME

2、添加实例

$srvctl add instance –d abc –n dbp –i abc2

$srvctl add instance –d abc –n dbs –i abc1

3、添加服务

-s:服务名

-r首选实例名

-a备选实例名

-P TAF策略(NONEBASICPRECONNECT

$srvctl add service –d abc –s abcservice –r abc1 –a abc2 –P BASIC

 

启用、禁用数据库

$srvctl enable database –d wxxrdb

 

$srvctl disable instance –d wxxrdb –I wxxrdb1

禁用一个实例自动启动

$srvctl disable service –d abc –s abcservice –I abc2

禁止一个服务在实例abc2上运行

 

 

使用remove删除对象

使用remove删除的只是对象在OCR中的定义信息,对象本身没有被删除。

$srvctl remove service d abc s abcservice  --删除服务

$srvctl remove instance d abc i abc2  --删除实例

$srvctl remove database d abc  --删除数据库

 

srvctl status database -d test

srvctl stop database -d test

srvctl start database -d test

 

1$srvctl start database d wxxrdb  --默认启动到open状态

2、指定启动状态

$srvctl start database –d wxxrdb –i wxxrdb1 –o mount

--指定实例1启动到mount状态

$srvctl start database –d wxxrdb2 –i wxxrdb2 –o nomount

--指定实例2启动到nomount状态

 

 

$srvctl stop instance –d wxxrdb –i wxxrdb1 –o immedaite

$srvctl stop instance –d wxxrdb –i wxxrdb2 –o abort

关闭实例(immediateabort

$srvctl start service –d wxxrdb –s wxxrdbservice –i wxxrdb1

在指定的实例上启动服务

$srvctl status service –d wxxrdb –v

显示服务状态

$srvctl stop service –d wxxrdb –s wxxrdbservice –i wxxrdb1

在指定的实例上关闭服务

 

 

 

 

恢复

假设OCRVotedisk磁盘全部损坏,并且没有备份,该如何尽快恢复?最简单的办法就是重新初始化OCRVotedisk

1、停止所有节点的Clusterware Stack

(两节点)

crsctl stop crs

 

2、分别在每个节点上执行$CRS_HOME/install/rootdelete.sh

 

3、在任意一个节点上执行脚本$CRS_HOME/install/rootdeinstall.sh,只需要在一个节点上执行即可

 

4、在和步骤3同一个节点上执行$CRS_HOME/root.sh

 

 

5、在所有节点手工注册

 

#srvctl add nodeapps -n rac1 -o /oracle/product/database -A rac1vip/255.255.255.0/eth1

 

#crs_stat -t -v

 

#srvctl add nodeapps -n rac1 -o /oracle/product/database -A rac1vip/255.255.255.0/eth1

 

#crs_stat -t -v

 

#srvctl start nodeapps -n db1

 

6netca 重新配置监听,注册到Cluster

 

7、手工注册ASM实例,报错,重新启动所有节点。

 

srvctl add asm -n db1 -i +ASM1 -o /oracle/product/database

srvctl add asm -n db2 -i +ASM2 -o /oracle/product/database

 

在所有节点上重新启动协议栈

 

crsctl stop crs

crsctl start crs

 

 

 

 

手工向OCR注册database

 

su - oracle

$srvctl add database -d test -o /oracle/product/database

cd /dev/raw/

ll

权限应该是root:root

 

srvctl add instance -d test -i test1 -n db1

srvctl add instance -d test -i test1 -n db1

srvctl modify instance -d test -i test1 -s +ASM1

srvctl modify instance -d test -i test1 -s +ASM2

 

在启动ASM或者数据库的时候出现问题,查看日志,很可能是因为没有指定cluster_interconnect参数的原因,这个参数在spfile,手工指定以后,再启动数据库。

 

 

 

instance中修改cluster_interconnect参数。

SQL> alter system set cluster_interconnects='10.10.10.0' scope=spfile sid='db1';

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值