作者:shenguokun
http://sinobestdba.itpub.net
1 问题描述
两节点Oracle 10g RAC数据库,节点node1上的CRS启动失败,但节点node2上的CRS启动成功。在节点node1上输入crsctl start crs 命令后,在操作系统上看不到crs的进程。
2 运行环境
2.1 硬件环境
IBM P570
CPU 2 * 1900 MHz PowerPC_POWER5
内存 5888 MB
操作系统 IBM AIX 5300-04
阵列型号 IBM DS8100
2.2 数据库配置
数据库版本和架构 Oracle 10.2.0.3 RAC
3 处理过程
3.1 检查CRS日志
检查节点node1上的CRS日志$ORA_CRS_HOME/log ,没发现有近期的CRS进程日志内容,没有日志的原因是crs进程根本没有启动。
3.2 检查VOTE盘与OCR盘
1. 查看CRS安装配置文件,获取OCR盘和VOTE盘的名称
more $ORA_CRS_HOME/install/rootconfig
……
CRS_OCR_LOCATIONS=/dev/rhdisk3,dev/rhdisk4
……
CRS_VOTING_DISKS=/dev/rhdisk5,dev/rhdisk7,/dev/rhdisk8
……
2. 检查OCR盘VOTE盘属主及读写权限
ls -l /dev/rhdisk*
检查结果显示OCR盘VOTE盘的属主和读写权限都正确:OCR盘属主root:oinstall,VOTE盘属主oracle:dba ,读写权限都是660
3. 检查OCR盘
ocrcheck
检查结果显示OCR盘正常:Cluster registry integrity check succeeded
4. 检查VOTE盘
crsctl query css votedisk
3.3 检查$ORA_CRS_HOME目录的属性和权限
ls -l $ORA_CRS_HOME
$ORA_CRS_HOME目录的属性和权限正常
3.4 crsctl check boot
使用crsctl check boot命令检查crs进程不能启动的原因
命令结果显示 node1-priv 私有网络出错
3.5 测试CRS私网
ping node1-priv 失败
确认是node1-priv网络出现异常导致CRS无法启动
3.6 检查私有网卡
1. lsdev -Cc adapter
ent0 Available 05-08 10/100/1000 Base-TX PCI-X Adapter (14106902)
ent1 Available 07-08 10/100/1000 Base-TX PCI-X Adapter (14106902)
ent2 Available 0B-08 2-Port 10/100/1000 Base-TX PCI-X Adapter (14108902)
ent3 Available 0B-09 2-Port 10/100/1000 Base-TX PCI-X Adapter (14108902)
ent4 Available 0C-08 10/100/1000 Base-TX PCI-X Adapter (14106902)
ent5 Available 0G-08 10/100/1000 Base-TX PCI-X Adapter (14106902)
ent6 Available EtherChannel / IEEE 802.3ad Link Aggregation
ent7 Defined EtherChannel / IEEE 802.3ad Link Aggregation
ent7状态不正常
2. lsattr -El ent7
adapter_names ent0 EtherChannel Adapters True
alt_addr 0x000000000000 Alternate EtherChannel Address True
auto_recovery yes Enable automatic recovery after failover True
backup_adapter ent1 Adapter used when whole channel fails True
hash_mode default Determines how outgoing adapter is chosen True
mode standard EtherChannel mode of operation True
netaddr Address to ping True
num_retries 3 Times to retry ping before failing True
retry_time 1 Wait time (in seconds) between pings True
use_alt_addr no Enable Alternate EtherChannel Address True
use_jumbo_frame no Enable Gigabit Ethernet Jumbo Frames True
ent7 是由ent0和ent1做了 EtherChannel后生成的虚拟网卡
3. ifconfig -a
en1: flags=5e080862,c0<BROADCAST,NOTRAILERS,RUNNING,SIMPLEX,MULTICAST,GROUPRT,64BIT,CHECKSUM_OFFLOAD(ACTIVE),PSEG,CHAIN>
inet 192.168.2.34 netmask 0xffffff00 broadcast 192.168.2.255
tcp_sendspace 131072 tcp_recvspace 65536
发现en1被错误地配置了IP地址,en1上不应该配IP地址
3.7 重新配置EtherChannel
1. 删除ent7 ent0 ent1
rmdev -dl ent7
rmdev -dl en0
rmdev -dl en1
2. 重新搜索硬件
cfgmgr
3. 配置EtherChannel
smitty
参考原来的EtherChannel配置生成ent7网卡
3.8 在ent7上配置私网地址
smitty tcpip
3.9 重新启动CRS
crsctl start crs
crs正常启动,问题解决
4 总结
4.1 问题原因总结
本次数据库故障(CRS不能启动)的原因是由于维护人员在配置IP地址时,没注意到原有的CRS私网网卡采用了EtherChannel网络端口综合技术,在EtherChannel成员网卡上又配置了IP地址,导致EtherChannel网卡失效,CRS启动失败。
解决该问题的办法是:清除EtherChannel成员网卡上的IP地址,重新配置EtherChannel
4.2 CRS启动失败诊断方法
1. 使用crs check boot命令分析CRS进程不能引导的原因
2. 检查CRS私有网络是否畅通
使用ping命令检查
3. 检查OCR盘VOTE盘读写权限或属主是否正确
OCR盘属主root:oinstall,VOTE盘属主oracle:dba ,读写权限都是660
4. 检查$ORA_CRS_HOME目录读写权限或属主是否正确
5. 检查主机名是否被修改过
比对$ORA_CRS_HOME/install/rootconfig中记载的主机名和目前的实际主机名是否一致
4.3 处理过程中曾出现的其它问题
1. 使用rmdev -dl ent1命令删除网卡失败
现象:
#rmdev -dl ent1
Method error (/usr/lib/methods/ucfgcommo):
0514-062 Cannot perform the requested function because the
specified device is busy.
问题原因:ent1已经配置有IP地址
解决方法:1) 删除ent1上的IP地址; 2)rmdev -dl en1 ;3)cfgmgr
2. 启动CRS出错1
现象:
#crsctl start crs
Attempting to start CRS stack
Failure at scls_scr_create with code 1
Internal Error Information:
Category: 1234
Operation: scls_scr_create
Location: mkdir
Other: Unable to make user dir
Dep: 2
问题原因:在重新配置IP地址时误改了主机名
解决方法:1) 把主机名改回原来的名字;2)重启主机
3. 启动CRS出错2
现象:
#crsctl check boot
Failure in CSS initialization opening OCR.
问题原因:主机名修改后没有重启主机
解决方法:重启主机
4. 启动CRS出错3
现象:crsctl check boot没有报错,但输入crsctl start crs命令后crs进程还是无法启动,曾经出现过类似crs stop的进程
问题原因:上一次crs没有被正常关闭
解决方法:1) crsctl stop crs ; 2) crsctl start crs