Upload
mq-sfs
View
142
Download
0
Embed Size (px)
Citation preview
第 1 页 共 7 页
Oracle RAC SRV 服务“首选”与“可用”状态的调整
——srvctl modify service 的使用
作者:xunzhao【转载时请以超链接形式标明文章出处和作者信息】
链接:http://xunzhaoxz.itpub.net/post/40016/487453
关键字:oracle rac instance status preferred available
srvctl modify service 服务状态调整 首选 可用
环境配置参数如下:
操作系统版本:Linux AS4.5
操作系统内核版本:2.6.9-55.Elsmp
Oracle clusterware 版本:10.2.0.4
Oracle database 版本:10.2.0.4
存储介质:ASM+OCFS
节点数:2 个节点
数据库名:gisdb
实例名:gisdb1/gisdb2
服务名:racgis
发现问题:今天在虚拟机下做实验,打算创建一个跟生产环境一模一样的
RAC(Linux + ASM +OCFS)环境,IP 配置、机器名、CRS 版本、数据库版本、
实例名全部跟生产环境一样。RAC 搭建完成后发现跟平时在生产环境下看到的
服务数不一样,新搭建的 RAC 环境一共有 16 个服务进程,生产环境上只有 15
个进程,少了一个 gisdb2 上的 srv 进程:
第 2 页 共 7 页
在生产环境下以 oracle 用户执行 crs_stat –t 查看当前 RAC 服务状态:
记得之前实施完成后做 failover 测试是通过的啊,当时把实例一停掉后服务
可以正常切换到实例二,截图如下:
第 3 页 共 7 页
(如果当时细心的话,应该要发现这里少了实例二的 srv 进程,crs_stat –t
查看到的应该是实例一的 srv 进程 online,实例二的进程 offline 的)
难道实例二有问题?于是通过 sqlplus 指定实例名登录数据库 select
instance_name from gv$instance 查看所有可用实例,也没有问题啊,两个实例
都是可用的,问题出在哪里呢?
第 4 页 共 7 页
突然想起也许问题出在 oracle RAC 实例上的“首选”与“可用”属性之上,
就是在创建 RAC 数据库配置服务时要求指定的“首选”、“可用”,于是翻出
当时实施的录像出来看个究竟,果然问题出在这里,当时实施截图如下:
上网搜索解决办法,刚开始的思路是添加服务,不过想到“首选、可用”又
觉得应该是改变服务状态,于是 google “oracle 实例 可用 首选” “oracle RAC
instance preferred available”,找到 tcczxhj 写的《Oracle 10g RAC 中 Srvctl
基本用法》(http://space.itpub.net/10804699/viewspace-605783 )这篇文章,
看到最后的一句“Srvctl modify service –d rac –s test –i rac3 –r ----将
RAC3 在 test 中可用改为首选运行,服务重启后生效”,这下有了眉目,接着看
oracle 的官方文档中关于 srvctl modify service 的用法:
You can also use the srvctl modify service command to change an available
instance to a preferred instance as follows:
srvctl modify service -d db_unique_name -s service_name -i avail_inst_name -r [-f]
方法一:
第 5 页 共 7 页
An example of changing an available instance to a preferred instance is:
srvctl modify service -d crm -s crm -i crm1 –r
方法二(批量修改):
To change the status of multiple instances, you can use the srvctl modify service
command to list which instances are to be the preferred and which are to be
the available instances for a service as follows:
srvctl modify service -d db_unique_name -s service_name -n -i pref_inst_list [-a
avail_inst_list] [-f]
oracle 原文地址:
http://download.oracle.com/docs/cd/B19306_01/rac.102/b14197/srvctladmin.htm#i10097
46
认真看完 srvctl modify 的用法后,先在实验环境中进行实验,首先把实例二
的状态由当前的“首选”改为“可用”,这下就与生产环境一样了,然后就是模
拟生产环境,在实验环境下进行 srvctl modify 操作了,实验环境下顺利完成后再
对生产环境进行修改。
1) 查看当前服务在各实例上的运行状态
[oracle@gisdb2 ~]$ srvctl status service –d gisdb
2) 实际操作,修改实例二的状态为“首选”
[oracle@gisdb2 ~]$srvctl modify service –d gisdb –s racgis –I gisdb2 –r
[oracle@gisdb2 ~]$crs_stat –t
操作过程截图如下:
第 6 页 共 7 页
u
3) 手工启动实例二 gisdb2 的 srv 服务进程
操作 2)把实例二 gisdb2 的 srv 服务状态从“可用”状态改成了“首选”状
态,执行 crs_stat –t 看到实例二上的 srv 服务进程已经出现,但是处于 offline
状态,手工启动一下服务。
[oracle@gisdb2 ~]$ srvctl start service –d gisdb –s racgis –I gisdb2
第 7 页 共 7 页
这步操作可以通过手工启动实例二的 srv 进程,也可以像 tcczxhj 说的那样,
把服务重启,即
[oracle@gisdb2 ~]$ srvctl stop service –d gisdb
[oracle@gisdb2 ~]$ srvctl start service –d gisdb
至此,问题已经解决,两个实例的 srv 服务状态都已经是“首选”状态了,
RAC 的服务进程总数有 16 个了。
解决方法二(采用批量修改):
To change the status of multiple instances, you can use the srvctl modify service
command to list which instances are to be the preferred and which are to be
the available instances for a service as follows:
srvctl modify service -d db_unique_name -s service_name -n -i pref_inst_list [-a
avail_inst_list] [-f]
操作如下,把 gisdb1、gisdb2 都设置为“首选”:
[oracle@gisdb1 ~]$ srvctl modify service -d gisdb -s racgis -n -i gisdb1,gisdb2
截图如下:
接下来就是启动服务了,操作步骤与方法一相同。