oracle 11gR2 srvctl 命令启动数据库不成功处理总结
oracle 11gR2 srvctl 命令启动数据库不成功处理总结
客户所在主机4月15号下午19点钟后做相关维护,需要关闭数据库,维护主机任务完成后,用srvctl start database命令启动数据库不成功,用sqlplus方式数据库能正常打开,虽然数据库能打开,但ora.db.db资源offline,导致db service_name起不来,监听不到,外面应用连接失败。
问题报错如下:
CRS-2640: Required resource ‘ora.paulyitest.dg’ is missing
现把此次分析处理过程总结如下:
1 背景
我在2011-03-24针对db 数据库,创建paulyitest磁盘组来做测试,创建diskgroup方法是用命令方式创建,删除diskgroup方法也是命令方式删除。
2 分析过程
2.1 查看数据库日志
正常,没有与paulyitest 磁盘组相关报错信息。
2.2 查看集群日志
$ORACLE_HOME/log/nfzhdb下的日志
srvctl start database也是报
CRS-2640: Required resource ‘ora.paulyitest.dg’ is missing
2.3 查看监听日志
正常,没有与paulyitest 磁盘组相关报错信息。
2.4 asmca图形工具检查
paulyitest 磁盘组不存在
2.5 检查asm实例参数
asm_diskgroups 参数
参数下面也没有paulyitest磁盘组
2.6 srvctl 启动数据库方式去掉丢失的磁盘组
srvctl modify database -d DB -a “DGsystem,dgrecover”
srvctl disable diskgroup -g paulyitest
srvctl remove diskgroup -g paulyitest –f
srvctl start database –d DB
启动成功,查看监听状态可以监听到db服务,外面应用连接成功。
3 分析总结及建议
删除磁盘组引起监听不到数据库service_name问题第一次遇到,好在及时发现问题和迅速解决问题,没有给生产带来什么影响,这是经验和教训,所以针对这个问题,提出以下两点建议:
1. oracle 11gR2版本,建议添加与删除磁盘组用asmca图形工具来做。
2. 命令方式,建议参考以下解决方法:
第一:创建磁盘组
节点1创建
create diskgroup dgtest EXTERNAL REDUNDANCY ‘/dev/rhdisk1’ size 200G;
节点2加载
alter diskgroup dgtest mount;
如果节点2不加载,会在节点2日志中报相关这个磁盘组中数据文件不存在的错误信息。
第二:删除磁盘组
节点2 卸载
Alter diskgroup dgtest dismount;
节点1删除
DROP DISKGROUP dgtest INCLUDING CONTENTS;
再用srvctl 命令做以下操作
srvctl modify database -d MYDB -a “DATA1_DG”;
-a 后面输入保留要的DG信息
srvctl disable diskgroup -g dgtest;
srvctl remove diskgroup -g dgtest –f;