7
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 进程:

Oracle RAC SRV 服务首选与可用状态的调整srvctl modify.pdf

  • 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

截图如下:

接下来就是启动服务了,操作步骤与方法一相同。