RAC 的维护
2016-08-02 08:33
197 查看
节点层 olsnodes
网络层 oifcfg
集群层 crsctl、ocrcheck、ocrdump、ocrconfig
应用层 srvctl、onsctl、crs_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
网络层(oifcfg、
iflist、
getif 、setif、
delif)
$ 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
集群层(crsctl、ocrcheck、ocrdump、ocrconfig)
1、OCR:解决健忘问题,将配置信息放在共享存储上。
2、Voting Disk:记录节点中成员状态,以便仲裁哪个集群获得控制权
3、ocssd:最关键的进程,启动条目放在inittab文件中,进程异常会导致系统重新启动,css服务通过多种心跳机制、实时监控集群健康状况,提供脑裂保护等基础集群服务功能
4、crsd:进程异常会自动重启,启动条目放在inittab文件中,为应用层资源提供“高可用性服务”。对应用层资源提供进行监控、在这些资源出现异常的时候进行干预、包括关闭、重启进程或者转移服务。应用层资源会在安装的时候自动以CRS
Resource的形式注册到OCR中。CRSD进程根据OCR中的内容,决定监控哪些进程,如何监控,出现问题时如何解决。
5、evmd:负责发布crsd产生的各种事件,可以通过ons发布给客户,可以回调脚本(脚本可以自定义)。Evmd还负责ocssd和crsd的通信。进程异常会自动重启,启动条目放在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
Node的OCR Process负责同步到其他节点的OCR process。
读取OCR的客户端程序不能直接读取OCR,需要通过OCR Process进行读取,这也保证了OCR的安全。
因为OCR的内容非常的重要,Oracle会每隔4个小时对其进行一次备份,并且保留最后的三个备份,以及前一天、前一周的最后一个备份。这个备份由Master
Node的CRSD进程完成,备份的默认位置是$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数据库,这一层是由若干资源组成的。每个资源是一个进程或者一组进程组成的完整服务。这一层主要是围绕这些资源进行的。工具包括:srvctl、onsctl、crs_stat
1、crs_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--
ONS(Oracle 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的日志信息。
如果参数useocr是on,则说明信息保留在OCR中,对于RAC环境,需要配置这个参数。如果是off,说明是单机环境,信息需要保留在本地配置文件中。
useocr=off
nodes=dbs:6200,dbp:6200
说明本机的ONS要和dbs、dbp两个节点上的6200进行通信
useocr=on
nodes信息就需要保留在OCR中
$ocrdump -stdout -xml -keyname DATABASE.ONS_HOSTS
导出OCR中关于ONS的配置信息
(用户权限应该是root、root)
命令onsctl的使用
onsctl start |stop |debug|reconfig|detailed
启动、关闭、调试、重新装载配置文件、帮助
使用ping确认ONS是否启动。
然后使用start和stop进行启动和关闭。
# 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、也是最复杂的命令
这个工具可以操作下面的资源
1、Database、Instance、ASM、Service、Listener、Node
Application(GSD、ONS、VIP)
2、这些资源还有自己独立的管理工具,例如onsctl、lsnrctl等
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策略(NONE、BASIC、PRECONNECT)
$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
关闭实例(immediate、abort)
$srvctl start service –d wxxrdb –s wxxrdbservice –i wxxrdb1
在指定的实例上启动服务
$srvctl status service –d wxxrdb –v
显示服务状态
$srvctl stop service –d wxxrdb –s wxxrdbservice –i wxxrdb1
在指定的实例上关闭服务
恢复
假设OCR和Votedisk磁盘全部损坏,并且没有备份,该如何尽快恢复?最简单的办法就是重新初始化OCR和Votedisk。
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
6、netca
重新配置监听,注册到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';
相关文章推荐
- RAC实例 表空间 维护
- 在进行RAC安装和维护过程中,有些Metalink文档是非常重要的参考,必读
- RAC学习笔记(RAC维护工具集) olsnodes -p -i 命令不好用
- Oracle 11gR2 RAC 常用维护操作
- Oracle 11gR2 RAC 常用维护操作 说明
- Oracle 10g RAC 维护工具完全详解
- Oracle11g RAC下ASM 的管理与维护
- RAC知识更新之-RAC节点删除添加服务+维护RAC ocr表(摘自文平书)
- 使用 VMware 在 Linux 5.4 上安装、升级及维护 Oracle 10gR2 RAC
- RAC实例 表空间 维护
- RAC表决磁盘管理和维护
- Oracle 11g rac参数文件维护
- RAC实例 表空间 维护
- RAC维护工具集 oifcfg getif
- RAC上ocr和voting disk维护操作和需求1
- Linux系统Oracle 12cR2 RAC集群安装与维护管理(12.2)专题
- Oracle 12c RAC 中废弃的维护命令 crs_*
- Oracle 10g RAC 维护常用命令
- RAC实例 表空间 维护
- RAC实例 表空间 维护