搭建RAC用sqlplus启动db资源显示offline问题分析处理
来源:互联网 发布:新的淘宝店怎么推广 编辑:程序博客网 时间:2024/06/11 03:50
一.问题描述
rac库用sqlplus启动节点二正常,但crsctl显示db资源为offline,而用srvctl启动实例时,db资源显示online;
如下:
sqlplus启动db正常,而用crsctl stat res -t查看资源状态,出现:
ora.st.db
1 ONLINE ONLINE T50003 Open
2 OFFLINE OFFLINE Instance Shutdown
当用srvctl start instance -d st -i st2启实例2时,则是:
ora.st.db
1 ONLINE ONLINE T50003 open
2 ONLINE ONLINE T50004 open
oraccle版本:RAC 11.2.0.4 for solaris 11.2
二.原因分析
上述问题,当用sqlplus启动后,若再用一次srvctl来启动实例,db资源恢复显示正常,由于未来环境是生产环境,这样多操作一次感觉很怪,不知是否有什么隐患和风险,必需要解决掉这
个问题,否则,就只能重新搭建和再恢复数据,由于项目时间很紧,时间和精力上不希望再重新搭建rac和恢复数据,也会影响到环境交付。
该rac搭建过程也比较曲折:
因为在安装grid psu2补丁时,出现opatch报错,通过赵工分析,节点2的psu2没有打成功,而小补丁在节点一安装时没有加local选项,而将节点一安装的补丁及相应用配置写到了节点二上
,致节点二执行opatch操作时报错,为了保证节点二不留有隐患和风险,有对节点2进行delete node后,再add node操作。
上面报错问题怀疑与节点2的删除和重新添加有关。如是对节点一关闭实例,然后再用sqlplus启动,结果显示节点1也存在与节点2同样的问题,这样就排除了节点2的问题与delete node和
add node相关。
难道是数据库st注册到OCR中有问题吗?从ocr中移除database,并重新注册ocr后,问题依然存在。
如是检查OS层面是否有异常,dmesg发现部分磁盘有报label错误,仔细检查磁盘发现这些盘没有在使用,是分给将来的本机ADG使用的,所以磁盘label报错与些问题无关。
T50004 cmlb: [ID 107833 kern.warning] WARNING: /scsi_vhci/ssd@g60002ac000000000000009ff0001b8ed (ssd24):
T50004 Corrupt label; wrong magic number
T50004 cmlb: [ID 107833 kern.warning] WARNING: /scsi_vhci/ssd@g60002ac000000000000009ff0001b8ed (ssd24):
因为不想重新搭rac,所以晚上回家后,继续从MOS中查找各种与db resorce offline相关的文档阅读,11.2 RAC: In "crsctl stat res -t" State Details May Be Missing or Incorrect
(文档 ID 1086563.1)和srvctl reports wrong instance status for disabled instances (文档 ID 1320970.1)这两个文档中提到的case有点相似,但与这个问题还完全不一样。如是将问
题分析聚焦在srvctl启库和sqlplus启库的差别上。
在节点二上执行: crsctl stat res -p,查看ocr中注册的相关db资源状态:
NAME=ora.st.db
TYPE=ora.database.type
ACL=owner:oramdplm:rwx,pgrp:oinstall:r--,other::r--,group:dba:r-x,user:oragrid:r-x
ACTION_FAILURE_TEMPLATE=
ACTION_SCRIPT=
ACTIVE_PLACEMENT=1
AGENT_FILENAME=%CRS_HOME%/bin/oraagent%CRS_EXE_SUFFIX%
AUTO_START=restore
CARDINALITY=2
CHECK_INTERVAL=1
CHECK_TIMEOUT=30
CLUSTER_DATABASE=true
DATABASE_TYPE=RAC
DB_UNIQUE_NAME=st
DEFAULT_TEMPLATE=PROPERTY(RESOURCE_CLASS=database) PROPERTY(DB_UNIQUE_NAME= CONCAT(PARSE(%NAME%, ., 2), %USR_ORA_DOMAIN%, .)) ELEMENT(INSTANCE_NAME=
%GEN_USR_ORA_INST_NAME%) ELEMENT(DATABASE_TYPE= %DATABASE_TYPE%)
DEGREE=1
DESCRIPTION=Oracle Database resource
----注意上面的NAME=ora.st.db,数据库在OCR中是以db_unique_name的形式注册的。
再进一步执行:
-bash-4.1$ srvctl config database -d st
Database unique name: st
Database name:
Oracle home: /mdplmapp/oraplm/11.2.0
Oracle user: oramdplm
Spfile: +MDPLMDG1/st/spfilest.ora
Domain:
Start options: open
Stop options: immediate
Database role: PRIMARY
Management policy: AUTOMATIC
Server pools: st
Database instances: st1,st2
Disk Groups: MDPLMDG1,REDODG1,REDODG2
Mount point paths:
Services: gplm_io,mdgplm,mdrdm,rdm_io
Type: RAC
Database is administrator managed
---发现注册到ocr中的db_unique_name为st。
而在数据库端的设置为nhst,如下:
SQL> show parameter db_unique_name
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_unique_name string NHst
那么产生问题的原因就找到了,就是db_unique_name只在数据库层有更改为nhst,而ocr中没有更新。而原来用srvctl去启实例,db资源显示正常,是因为srvctl会直接去调用sqlplus启动实例。
三.解决
重新更改OCR中的db_unique_name为nhst,操作如下:
1.停库和从ocr中移除库
srvctl stop database -d st
srvctl remove database -d st
2.启动库,再更改db层的设置
startup
alter system set db_unique_name=NHst scope=spfile sid='*';
3) cluster级别添加database资源
srvctl add database -d nhst -n st -o /mdplmapp/oraplm/11.2.0
srvctl add instance -d nhst -i st1 -n T50003
srvctl add instance -d nhst -i st2 -n T50004
4) 修改ocr中db与asm磁盘组的依赖关系
srvctl modify database -d nhst -a "MDPLMDG1,REDODG1,REDODG2"
5)重新注册service
su - oramdplm
srvctl add service -d nhst -s mdgplm -r st1 -a st2 -P basic -e select -m basic
srvctl add service -d nhst -s mdrdm -r st1 -a st2 -P basic -e select -m basic
srvctl add service -d nhst -s gplm_io -r st1 -a st2 -P basic -e select -m basic
srvctl add service -d nhst -s rdm_io -r st2 -a st1 -P basic -e select -m basic
启动 service
srvctl start service -d nhst -s mdgplm
srvctl start service -d nhst -s mdrdm
srvctl start service -d nhst -s gplm_io
srvctl start service -d nhst -s rdm_io
最后验证如下:
用sqlplus关节点二,再启动节点二,检查正常,如下:
-bash-4.1$ crsctl stat res -t
--------------------------------------------------------------------------------
NAME TARGET STATE SERVER STATE_DETAILS
--------------------------------------------------------------------------------
Local Resources
--------------------------------------------------------------------------------
ora.LISTENER.lsnr
ONLINE ONLINE T50003
ONLINE ONLINE T50004
ora.MDPLMDG1.dg
ONLINE ONLINE T50003
ONLINE ONLINE T50004
ora.OCRVOTDG.dg
ONLINE ONLINE T50003
ONLINE ONLINE T50004
ora.REDODG1.dg
ONLINE ONLINE T50003
ONLINE ONLINE T50004
ora.REDODG2.dg
ONLINE ONLINE T50003
ONLINE ONLINE T50004
ora.asm
ONLINE ONLINE T50003 Started
ONLINE ONLINE T50004 Started
ora.gsd
OFFLINE OFFLINE T50003
OFFLINE OFFLINE T50004
ora.net1.network
ONLINE ONLINE T50003
ONLINE ONLINE T50004
ora.ons
ONLINE ONLINE T50003
ONLINE ONLINE T50004
ora.registry.acfs
ONLINE ONLINE T50003
ONLINE ONLINE T50004
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.LISTENER_SCAN1.lsnr
1 ONLINE ONLINE T50003
ora.cvu
1 ONLINE ONLINE T50004
ora.T50003.vip
1 ONLINE ONLINE T50003
ora.T50004.vip
1 ONLINE ONLINE T50004
ora.nhst.db
1 ONLINE ONLINE T50003 Open
2 ONLINE ONLINE T50004 Open
ora.nhst.gplm_io.svc
1 ONLINE ONLINE T50003
ora.nhst.mdgplm.svc
1 ONLINE ONLINE T50003
ora.nhst.mdrdm.svc
1 ONLINE ONLINE T50003
ora.nhst.rdm_io.svc
1 ONLINE ONLINE T50004
ora.oc4j
1 ONLINE ONLINE T50004
ora.scan1.vip
1 ONLINE ONLINE T50003
-bash-4.1$
-bash-4.1$ srvctl status database -d nhst
Instance st1 is running on node T50003
Instance st2 is running on node T50004
-bash-4.1$ srvctl config database -d nhst
Database unique name: nhst
Database name: st
Oracle home: /mdplmapp/oraplm/11.2.0
Oracle user: oramdplm
Spfile: +MDPLMDG1/st/spfilest.ora
Domain:
Start options: open
Stop options: immediate
Database role: PRIMARY
Management policy: AUTOMATIC
Server pools: st
Database instances: st1,st2
Disk Groups: MDPLMDG1,REDODG1,REDODG2
Mount point paths:
Services: gplm_io,mdgplm,mdrdm,rdm_io
Type: RAC
Database is administrator managed
-bash-4.1$ crsctl stat res -p
NAME=ora.nhst.db
TYPE=ora.database.type
ACL=owner:oramdplm:rwx,pgrp:oinstall:r--,other::r--,group:dba:r-x,user:oragrid:r-x
ACTION_FAILURE_TEMPLATE=
ACTION_SCRIPT=
ACTIVE_PLACEMENT=1
AGENT_FILENAME=%CRS_HOME%/bin/oraagent%CRS_EXE_SUFFIX%
AUTO_START=restore
CARDINALITY=2
CHECK_INTERVAL=1
CHECK_TIMEOUT=30
CLUSTER_DATABASE=true
DATABASE_TYPE=RAC
DB_UNIQUE_NAME=nhst
DEFAULT_TEMPLATE=PROPERTY(RESOURCE_CLASS=database) PROPERTY(DB_UNIQUE_NAME= CONCAT(PARSE(%NAME%, ., 2), %USR_ORA_DOMAIN%, .)) ELEMENT(INSTANCE_NAME=
%GEN_USR_ORA_INST_NAME%) ELEMENT(DATABASE_TYPE= %DATABASE_TYPE%)
DEGREE=1
DESCRIPTION=Oracle Database resource
rac库用sqlplus启动节点二正常,但crsctl显示db资源为offline,而用srvctl启动实例时,db资源显示online;
如下:
sqlplus启动db正常,而用crsctl stat res -t查看资源状态,出现:
ora.st.db
1 ONLINE ONLINE T50003 Open
2 OFFLINE OFFLINE Instance Shutdown
当用srvctl start instance -d st -i st2启实例2时,则是:
ora.st.db
1 ONLINE ONLINE T50003 open
2 ONLINE ONLINE T50004 open
oraccle版本:RAC 11.2.0.4 for solaris 11.2
二.原因分析
上述问题,当用sqlplus启动后,若再用一次srvctl来启动实例,db资源恢复显示正常,由于未来环境是生产环境,这样多操作一次感觉很怪,不知是否有什么隐患和风险,必需要解决掉这
个问题,否则,就只能重新搭建和再恢复数据,由于项目时间很紧,时间和精力上不希望再重新搭建rac和恢复数据,也会影响到环境交付。
该rac搭建过程也比较曲折:
因为在安装grid psu2补丁时,出现opatch报错,通过赵工分析,节点2的psu2没有打成功,而小补丁在节点一安装时没有加local选项,而将节点一安装的补丁及相应用配置写到了节点二上
,致节点二执行opatch操作时报错,为了保证节点二不留有隐患和风险,有对节点2进行delete node后,再add node操作。
上面报错问题怀疑与节点2的删除和重新添加有关。如是对节点一关闭实例,然后再用sqlplus启动,结果显示节点1也存在与节点2同样的问题,这样就排除了节点2的问题与delete node和
add node相关。
难道是数据库st注册到OCR中有问题吗?从ocr中移除database,并重新注册ocr后,问题依然存在。
如是检查OS层面是否有异常,dmesg发现部分磁盘有报label错误,仔细检查磁盘发现这些盘没有在使用,是分给将来的本机ADG使用的,所以磁盘label报错与些问题无关。
T50004 cmlb: [ID 107833 kern.warning] WARNING: /scsi_vhci/ssd@g60002ac000000000000009ff0001b8ed (ssd24):
T50004 Corrupt label; wrong magic number
T50004 cmlb: [ID 107833 kern.warning] WARNING: /scsi_vhci/ssd@g60002ac000000000000009ff0001b8ed (ssd24):
因为不想重新搭rac,所以晚上回家后,继续从MOS中查找各种与db resorce offline相关的文档阅读,11.2 RAC: In "crsctl stat res -t" State Details May Be Missing or Incorrect
(文档 ID 1086563.1)和srvctl reports wrong instance status for disabled instances (文档 ID 1320970.1)这两个文档中提到的case有点相似,但与这个问题还完全不一样。如是将问
题分析聚焦在srvctl启库和sqlplus启库的差别上。
在节点二上执行: crsctl stat res -p,查看ocr中注册的相关db资源状态:
NAME=ora.st.db
TYPE=ora.database.type
ACL=owner:oramdplm:rwx,pgrp:oinstall:r--,other::r--,group:dba:r-x,user:oragrid:r-x
ACTION_FAILURE_TEMPLATE=
ACTION_SCRIPT=
ACTIVE_PLACEMENT=1
AGENT_FILENAME=%CRS_HOME%/bin/oraagent%CRS_EXE_SUFFIX%
AUTO_START=restore
CARDINALITY=2
CHECK_INTERVAL=1
CHECK_TIMEOUT=30
CLUSTER_DATABASE=true
DATABASE_TYPE=RAC
DB_UNIQUE_NAME=st
DEFAULT_TEMPLATE=PROPERTY(RESOURCE_CLASS=database) PROPERTY(DB_UNIQUE_NAME= CONCAT(PARSE(%NAME%, ., 2), %USR_ORA_DOMAIN%, .)) ELEMENT(INSTANCE_NAME=
%GEN_USR_ORA_INST_NAME%) ELEMENT(DATABASE_TYPE= %DATABASE_TYPE%)
DEGREE=1
DESCRIPTION=Oracle Database resource
----注意上面的NAME=ora.st.db,数据库在OCR中是以db_unique_name的形式注册的。
再进一步执行:
-bash-4.1$ srvctl config database -d st
Database unique name: st
Database name:
Oracle home: /mdplmapp/oraplm/11.2.0
Oracle user: oramdplm
Spfile: +MDPLMDG1/st/spfilest.ora
Domain:
Start options: open
Stop options: immediate
Database role: PRIMARY
Management policy: AUTOMATIC
Server pools: st
Database instances: st1,st2
Disk Groups: MDPLMDG1,REDODG1,REDODG2
Mount point paths:
Services: gplm_io,mdgplm,mdrdm,rdm_io
Type: RAC
Database is administrator managed
---发现注册到ocr中的db_unique_name为st。
而在数据库端的设置为nhst,如下:
SQL> show parameter db_unique_name
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_unique_name string NHst
那么产生问题的原因就找到了,就是db_unique_name只在数据库层有更改为nhst,而ocr中没有更新。而原来用srvctl去启实例,db资源显示正常,是因为srvctl会直接去调用sqlplus启动实例。
三.解决
重新更改OCR中的db_unique_name为nhst,操作如下:
1.停库和从ocr中移除库
srvctl stop database -d st
srvctl remove database -d st
2.启动库,再更改db层的设置
startup
alter system set db_unique_name=NHst scope=spfile sid='*';
3) cluster级别添加database资源
srvctl add database -d nhst -n st -o /mdplmapp/oraplm/11.2.0
srvctl add instance -d nhst -i st1 -n T50003
srvctl add instance -d nhst -i st2 -n T50004
4) 修改ocr中db与asm磁盘组的依赖关系
srvctl modify database -d nhst -a "MDPLMDG1,REDODG1,REDODG2"
5)重新注册service
su - oramdplm
srvctl add service -d nhst -s mdgplm -r st1 -a st2 -P basic -e select -m basic
srvctl add service -d nhst -s mdrdm -r st1 -a st2 -P basic -e select -m basic
srvctl add service -d nhst -s gplm_io -r st1 -a st2 -P basic -e select -m basic
srvctl add service -d nhst -s rdm_io -r st2 -a st1 -P basic -e select -m basic
启动 service
srvctl start service -d nhst -s mdgplm
srvctl start service -d nhst -s mdrdm
srvctl start service -d nhst -s gplm_io
srvctl start service -d nhst -s rdm_io
最后验证如下:
用sqlplus关节点二,再启动节点二,检查正常,如下:
-bash-4.1$ crsctl stat res -t
--------------------------------------------------------------------------------
NAME TARGET STATE SERVER STATE_DETAILS
--------------------------------------------------------------------------------
Local Resources
--------------------------------------------------------------------------------
ora.LISTENER.lsnr
ONLINE ONLINE T50003
ONLINE ONLINE T50004
ora.MDPLMDG1.dg
ONLINE ONLINE T50003
ONLINE ONLINE T50004
ora.OCRVOTDG.dg
ONLINE ONLINE T50003
ONLINE ONLINE T50004
ora.REDODG1.dg
ONLINE ONLINE T50003
ONLINE ONLINE T50004
ora.REDODG2.dg
ONLINE ONLINE T50003
ONLINE ONLINE T50004
ora.asm
ONLINE ONLINE T50003 Started
ONLINE ONLINE T50004 Started
ora.gsd
OFFLINE OFFLINE T50003
OFFLINE OFFLINE T50004
ora.net1.network
ONLINE ONLINE T50003
ONLINE ONLINE T50004
ora.ons
ONLINE ONLINE T50003
ONLINE ONLINE T50004
ora.registry.acfs
ONLINE ONLINE T50003
ONLINE ONLINE T50004
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.LISTENER_SCAN1.lsnr
1 ONLINE ONLINE T50003
ora.cvu
1 ONLINE ONLINE T50004
ora.T50003.vip
1 ONLINE ONLINE T50003
ora.T50004.vip
1 ONLINE ONLINE T50004
ora.nhst.db
1 ONLINE ONLINE T50003 Open
2 ONLINE ONLINE T50004 Open
ora.nhst.gplm_io.svc
1 ONLINE ONLINE T50003
ora.nhst.mdgplm.svc
1 ONLINE ONLINE T50003
ora.nhst.mdrdm.svc
1 ONLINE ONLINE T50003
ora.nhst.rdm_io.svc
1 ONLINE ONLINE T50004
ora.oc4j
1 ONLINE ONLINE T50004
ora.scan1.vip
1 ONLINE ONLINE T50003
-bash-4.1$
-bash-4.1$ srvctl status database -d nhst
Instance st1 is running on node T50003
Instance st2 is running on node T50004
-bash-4.1$ srvctl config database -d nhst
Database unique name: nhst
Database name: st
Oracle home: /mdplmapp/oraplm/11.2.0
Oracle user: oramdplm
Spfile: +MDPLMDG1/st/spfilest.ora
Domain:
Start options: open
Stop options: immediate
Database role: PRIMARY
Management policy: AUTOMATIC
Server pools: st
Database instances: st1,st2
Disk Groups: MDPLMDG1,REDODG1,REDODG2
Mount point paths:
Services: gplm_io,mdgplm,mdrdm,rdm_io
Type: RAC
Database is administrator managed
-bash-4.1$ crsctl stat res -p
NAME=ora.nhst.db
TYPE=ora.database.type
ACL=owner:oramdplm:rwx,pgrp:oinstall:r--,other::r--,group:dba:r-x,user:oragrid:r-x
ACTION_FAILURE_TEMPLATE=
ACTION_SCRIPT=
ACTIVE_PLACEMENT=1
AGENT_FILENAME=%CRS_HOME%/bin/oraagent%CRS_EXE_SUFFIX%
AUTO_START=restore
CARDINALITY=2
CHECK_INTERVAL=1
CHECK_TIMEOUT=30
CLUSTER_DATABASE=true
DATABASE_TYPE=RAC
DB_UNIQUE_NAME=nhst
DEFAULT_TEMPLATE=PROPERTY(RESOURCE_CLASS=database) PROPERTY(DB_UNIQUE_NAME= CONCAT(PARSE(%NAME%, ., 2), %USR_ORA_DOMAIN%, .)) ELEMENT(INSTANCE_NAME=
%GEN_USR_ORA_INST_NAME%) ELEMENT(DATABASE_TYPE= %DATABASE_TYPE%)
DEGREE=1
DESCRIPTION=Oracle Database resource
阅读全文
0 0
- 搭建RAC用sqlplus启动db资源显示offline问题分析处理
- rac添加节点提示db资源存在处理
- rac资源启动顺序
- ORA-29702 RAC一个节点资源offline/unknown
- eth0网卡异常导致rac vip资源offline
- sqlplus启动问题
- sqlplus的显示问题
- oracle 10g rac一个节点offline处理
- 某省ORACLE10G RAC数据库CRS启动失败问题处理[转]
- sqlplus关于时间显示问题
- 一个rac问题分析过程由于进程资源不足导致的问题
- rac 11g 资源自动启动
- ORACLE10g RAC 修改主机名后 db instance启动不了
- ADT或adb显示设备“offline”的一种处理办法
- 【翻译自mos文章】CRS显示 正在运行的db instance 是offline状态
- 如何处理11gR2 RAC下oc4j和gsd服务为OFFLINE状态?
- 如何处理11gR2 RAC下oc4j和gsd服务为OFFLINE状态?
- 如何处理11gR2 RAC下oc4j和gsd服务为OFFLINE状态
- python实现收邮件
- 回顾CGU2016都干了些什么大事!
- JS七种不同的data types(数据类型)
- windows 安装配置mongodb
- python实现发邮件
- 搭建RAC用sqlplus启动db资源显示offline问题分析处理
- Android Camera开发之基础知识篇
- 自适应波束形成(三)——频域宽带LCMV波束形成器
- python线程状态监测
- python自定义线程类
- init
- 阿里云ubuntu安装mysql5.7遇到的坑
- 解决PHP中Web程序中shell_exec()执行Shell脚本不成功问题
- python线程对象join的用法