地方公司的数据库出现了错误,监听启动报错TNS-12537。
出现问题的数据库是RAC环境中的一个节点,另一个节点没有问题。
由于问题发生在异地数据库上,暂时无法直接连上,因此所有的信息都是通过别人获取的,想要了解什么信息或者做什么修改也只能远端遥控别人来完成。
告知我的信息是监听无法启动,详细的错误信息为:
bash-3.00$ lsnrctl start
LSNRCTL for Solaris: Version 10.2.0.3.0 - Production on 26-8月 -2010 14:18:25
Copyright (c) 1991, 2006, Oracle. All rights reserved.
启动/data/oracle/product/10.2/database/bin/tnslsnr: 请稍候...
TNSLSNR for Solaris: Version 10.2.0.3.0 - Production
系统参数文件为/data/oracle/product/10.2/database/network/admin/listener.ora
写入/data/oracle/product/10.2/database/network/log/listener.log的日志信息
监听: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=ser2)(PORT=1521)))
正在连接到 (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
TNS-12537: TNS: 连接关闭
TNS-12560: TNS: 协议适配器错误
TNS-00507: 连接已关闭
这个错误多半是由于/etc/hosts文件中缺少127.0.0.1 localhost配置造成的,检查/etc/hosts果然发现了一点问题:
bash-3.00$ more /etc/hosts
#
# Internet host table
#
::1 localhost
127.0.0.1 localhost
172.0.2.63 ser2 loghost
172.0.2.69 ser2-vip
10.0.0.4 ser2-priv
172.0.2.62 ser1
172.0.2.68 ser1-vip
10.0.0.3 ser1-priv
虽然系统配置了127.0.0.1 localhost,但是同时设置IPV6本机配置。
由于系统没有使用IPV6,因此建议将::1 localhost去掉,排除这个IPV6的配置对数据库造成影响。
去掉这行配置后,错误依旧。
查询metalink后发现,如果系统的ORACLE_HOME或LD_LIBRARY_PATH变量设置错误,也可能导致这个错误的产生,检查当前环境变量:
bash-3.00$ env | grep LD
R_SHLIB_LD_LIBRARY_PATH=/etc/emc/rsa/rkm_client/lib
LD_LIBRARY_PATH=/etc/emc/rsa/cst/lib
OLDPWD=/data/oracle/product/10.2/database/network/admin/samples
当前的LD_LIBRARY_PATH果然没有设置Oracle的LIB目录,但是无论是添加$ORACLE_HOME/lib目录到LD_LIBRARY_PATH环境变量,还是直接从shell中清除掉这个环境变量,都不能解决问题。
检查LISTENER.ORA和SQLNET.ORA配置,检查监听对应的日志,都没有找到导致问题的真正原因。
最后直到我登陆到远端服务器上,才发现了问题并不是监听启动报错那么简单。
尝试启动监听不仅会报错,还会生成core文件,这说明并不是简单的错误。
而且ASM实例、数据库实例以及监听都没有启动,尝试不通过监听直接连接ASM实例或数据库实例都会报错:
bash-3.00$ export ORACLE_SID=+ASM2
bash-3.00$ sqlplus / as sysdba
SQL*Plus: Release 10.2.0.3.0 - Production on 星期四 8月 26 14:28:45 2010
Copyright (c) 1982, 2006, Oracle. All Rights Reserved.
ERROR:
ORA-12547: TNS: 丢失连接
请输入用户名:
ERROR:
ORA-12547: TNS: 丢失连接
请输入用户名:
ERROR:
ORA-12547: TNS: 丢失连接
SP2-0157: 在 3 次尝试之后无法连接到 ORACLE, 退出 SQL*Plus
bash-3.00$ export ORACLE_SID=tradedb2
bash-3.00$ sqlplus / as sysdba
SQL*Plus: Release 10.2.0.3.0 - Production on 星期四 8月 26 14:29:14 2010
Copyright (c) 1982, 2006, Oracle. All Rights Reserved.
ERROR:
ORA-12547: TNS: 丢失连接
请输入用户名:
ERROR:
ORA-12547: TNS: 丢失连接
请输入用户名:
ERROR:
ORA-12547: TNS: 丢失连接
SP2-0157: 在 3 次尝试之后无法连接到 ORACLE, 退出 SQL*Plus
bash-3.00$
感觉是系统存在问题,不然监听这么简单的程序不可能无法启动。
通过DMESG检查系统日志,除了一些光纤卡设备的错误外,并没有发现其他的错误信息:
root@ser2 # dmesg
.
.
.
Aug 25 17:09:54 ser2 Failed to create nodes for pwwn=5006016a41e0ac1c; error=5
Aug 25 17:09:54 ser2 luxadm[190]: [ID 932561 user.error] ID[luxadm.create_fabric_device.2316] configuration failed for line (/devices/pci@8,600000/QLGC,qlc@1/fp@0,0:fc::5006016a41e0ac1c) in file: /etc/cfg/fp/fabric_WWN_map. I/O error
Aug 25 17:09:54 ser2 scsi: [ID 243001 kern.warning] WARNING: /pci@8,600000/QLGC,qlc@1/fp@0,0 (fcp0):
Aug 25 17:09:54 ser2 Failed to create nodes for pwwn=500e09e00bae3f01; error=5
Aug 25 17:09:54 ser2 luxadm[190]: [ID 388738 user.error] ID[luxadm.create_fabric_device.2316] configuration failed for line (/devices/pci@8,600000/QLGC,qlc@1/fp@0,0:fc::500e09e00bae3f01) in file: /etc/cfg/fp/fabric_WWN_map. I/O error
Aug 25 17:09:54 ser2 scsi: [ID 243001 kern.warning] WARNING: /pci@8,600000/QLGC,qlc@1/fp@0,0 (fcp0):
Aug 25 17:09:54 ser2 Failed to create nodes for pwwn=500e09e00bae3f40; error=5
Aug 25 17:09:54 ser2 luxadm[190]: [ID 331394 user.error] ID[luxadm.create_fabric_device.2316] configuration failed for line (/devices/pci@8,600000/QLGC,qlc@1/fp@0,0:fc::500e09e00bae3f40) in file: /etc/cfg/fp/fabric_WWN_map. I/O error
Aug 25 17:09:54 ser2 luxadm[190]: [ID 606181 user.error] ID[luxadm.create_fabric_device.2314] Internal error to process line (/devices/pci@8,600000/QLGC,qlc@2/fp@0,0:fc::5006016241e0ac1c) in file: /etc/cfg/fp/fabric_WWN_map. No such file or directory
Aug 25 17:09:54 ser2 luxadm[190]: [ID 751977 user.error] ID[luxadm.create_fabric_device.2314] Internal error to process line (/devices/pci@8,600000/QLGC,qlc@2/fp@0,0:fc::5006016a41e0ac1c) in file: /etc/cfg/fp/fabric_WWN_map. No such file or directory
Aug 25 17:09:54 ser2 pseudo: [ID 129642 kern.info] pseudo-device: fcp0
Aug 25 17:09:54 ser2 genunix: [ID 936769 kern.info] fcp0 is /pseudo/fcp@0
.
.
.
由于监听无法启动,通过SQLPLUS / AS SYSDBA的方式试图绕开监听也会出现错误,于是打算查询系统中是否存在没有清除的共享内存,但是在执行ipcs的时候出现了更意外的情况:
bash-3.00$ ipcs
IPC status from as of Thu Aug 26 14:45:55 CST 2010
T ID KEY MODE OWNER GROUP
Message Queues:
Bad System Call (core dumped)
连执行操作系统命令都会出现CORE DUMP,说明系统的运行状态出现了问题,显然当前的问题已经不是Oracle层面上可以解决的。最终硬件维护人员通过将其他服务器上的/kernel/sys/sparcv9目录下的semsys和shmsys覆盖本机上对应的文件,再重启服务器后,错误消失。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/4227/viewspace-671958/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/4227/viewspace-671958/