1. 概述
客户反映一套单机10G库,启动异常,经过处理,启动正常,但是在启动侦听后,发现客户端连接异常,从库所在主机通过侦听连接提示连接到一个空实例。
在检查了相关的配置文件后,最终发现是一个多余的斜线导致的。
.
2. 处理过程
2.1. 客户端错误现象
客户端错误提示:
ORA-01034:ORACLE not available
ORA-27101:shared memory realm does not exist
IBM AIX RISC System/6000 Error: 2: No such file or directory
本机通过侦听连接异常提示:
SQL> conn
sys/pass@xxx as sysdba
Connected to an idle instance.
本机通过OS认证方式连接,没有问题:
SQL>
SQL> conn sys/pass as sysdba
Connected.
2.2. 分析各种配置文件
2.2.1. Oracle用户.profile文件配置.
export PATH
if [ -s "$MAIL" ] # This is at Shell startup. In normal
then echo "$MAILMSG" # operation, the Shell checks
fi # periodically.
export readonly TMOUT TIMEOUT
export ORACLE_BASE=/opt/oracle
export ORACLE_HOME=/opt/oracle/product/10.2.0
export ORACLE_SID=SidName
export NLS_LANG=AMERICAN_AMERICA.AL32UTF8
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$ORACLE_HOME/network/lib:.
export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:$PATH:/usr/local/bin
umask 022
export NLS_DATE_FORMAT='YYYY-MM-DD HH24:MI:SS'
export TEMP=/tmp
export TMPDIR=/tmp
alias h="cd $ORACLE_HOME"
经过确认,没有发现异常。
2.2.2. 主机hosts文件配置
127.0.0.1 loopback localhost # loopback (lo0) name/address
xxx.xxx.xxx.11 HostA HostA
xxx.xxx.xxx.20 Ccpa4aemerg Ccpa4aemerg
xxx.xxx.xxx.11 Cc-pb-4a-sv01 Cc-pb-4a-sv01
#xxx.xxx.xxx.12 Hostb
xxx.xxx.xxx.11 pb4a_1_per
xxx.xxx.xxx.13 db_svc
xxx.xxx.xxx.14 ldap_svc bj_pb_4a_sv02
xxx.xxx.xxx.12 Hostb Cc-pb-4a-sv02 Hostb
虽然有点乱,但是也没啥异常
2.2.3. 侦听配置
# listener.ora Network Configuration File: /opt/oracle/product/10.2.0//network/admin/listener.ora
# Generated by Oracle configuration tools.
#INBOUND_CONNECT_TIMEOUT_ = 110
#SUBSCRIBE_FOR_NODE_DOWN_EVENT_=OFF
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = Hosta )(PORT = 1521))
)
)
)
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(ORACLE_HOME = /opt/oracle/product/10.2.0/)
(SID_NAME = SidName)
)
)
3. Tnsnames.ora
# tnsnames.ora Network Configuration File: /opt/oracle/product/10.2.0/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.
SidName =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = xxx.xxx.xxx.12)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = SidName)
)
)
EXTPROC_CONNECTION_DATA =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
)
(CONNECT_DATA =
(SID = PLSExtProc)
(PRESENTATION = RO)
)
)
2.3. 分析过程
2.3.1. Tnsping 测试
bash-3.2$ tnsping xxx
TNS Ping Utility for IBM/AIX RISC System/6000: Version 10.2.0.4.0 - Production on 20-NOV-2012 10:57:36
Copyright (c) 1997, 2007, Oracle. All rights reserved.
Used parameter files:
/opt/oracle/product/10.2.0/network/admin/sqlnet.ora
Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = ipaddress)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SID = SidName)))
OK (0 msec)
Tnsping 显示均正常
2.3.2. 重启侦听、查看侦听状态及服务状态
bash-3.2$ lsnrctl status
LSNRCTL for IBM/AIX RISC System/6000: Version 10.2.0.4.0 - Production on 20-NOV-2012 09:27:32
Copyright (c) 1991, 2007, Oracle. All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=Hostb)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for IBM/AIX RISC System/6000: Version 10.2.0.4.0 - Production
Start Date 16-NOV-2012 12:49:36
Uptime 3 days 20 hr. 37 min. 56 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /opt/oracle/product/10.2.0/network/admin/listener.ora
Listener Log File /opt/oracle/product/10.2.0/network/log/listener.log
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=Hosta)(PORT=1521)))
Services Summary...
Service "SidName" has 1 instance(s).
Instance "SidName", status UNKNOWN, has 1 handler(s) for this service...
The command completed successfully
bash-3.2$ lsnrctl service
LSNRCTL for IBM/AIX RISC System/6000: Version 10.2.0.4.0 - Production on 20-NOV-2012 09:28:29
Copyright (c) 1991, 2007, Oracle. All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=ipaddress)(PORT=1521)))
Services Summary...
Service "SidName" has 1 instance(s).
Instance "SidName", status UNKNOWN, has 1 handler(s) for this service...
Handler(s):
"DEDICATED" established:10 refused:0
LOCAL SERVER
The command completed successfully
如上所示,显示侦听运行着,且实例也已经在里面进行了注册。
4. 结论
在侦听配置文件里的如下部分:
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(ORACLE_HOME = /opt/oracle/product/10.2.0/)
(SID_NAME = SidName)
)
)
这个黄色背景行的/,就是本次异常的罪魁祸首,去掉此/,重启侦听后,客户端连接正常。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/388619/viewspace-749843/
,如需转载,请注明出处,否则将追究法律责任。