四、客户端连接服务器端常见问题排除方法
要排除客户端与服务器端的连接问题,首先检查客户端配置是否正确(客户端配置必须与数据库服务器端监听配置一致),再根据错误提示解决。下面列出几种常见的连接问题:
1、 ORA-12541:
TNS: 没有监听器
显而易见,服务器端的监听器没有启动,另外检查客户端IP地址或端口填写是否正确。启动监听器:
$ lsnrctl start
或
C:lsnrctl start
2、 ORA-12500:
TNS: 监听程序无法启动专用服务器进程
对于Windows而言,没有启动Oracle实例服务。启动实例服务:
C:oradim –startup -sid myoracle
3、 ORA-12535:
TNS: 操作超时
出现这个问题的原因很多,但主要跟网络有关。解决这个问题,首先检查客户端与服务端的网络是否畅通,如果网络连通,则检查两端的防火墙是否阻挡了连接。
4、 ORA-12154:
TNS: 无法处理服务名
检
查输入的服务名与配置的服务名是否一致。另外注意生成的本地服务名文件(Windows下如D:oracleora92networkadmin
tnsnames.ora,Linux/Unix下/network/admin/tnsnames.ora)里每项服务的首
行服务名称前不能有空格。
5、 ORA-12514:
TNS: 监听进程不能解析在连接描述符中给出的
SERVICE_NAME
打开Net
Manager,选中服务名称,检查服务标识栏里的服务名输入是否正确。该服务名必须与服务器端监听器配置的全局数据库名一致。
6、 Windows下启动监听服务提示找不到路径
用
命令或在服务窗口中启动监听提示找不到路径,或监听服务启动异常。打开注册表,进入HKEY_LOCAL_MACHINE/SYSTEM/Current
ControlSet/Services/OracleOraHome92TNSListener项,查看ImagePath字符串项是否存在,如果没
有,设定值为D:oracleora92BINTNSLSNR,不同的安装路径设定值做相应的更改。这种方法同样适用于Oracle实例服务,同
上,找到如同HKEY_LOCAL_MACHINE/SYSTEM/Current ControlSet/Services/Oracle
ServiceMYORACLE项,查看ImagePath字符串项是否存在,如果没有,则新建,设定值为d:oracleora92
binORACLE.EXE MYORACLE。
以上是Oracle客户端连接服务器端常见的一些问题,当然不能囊括所有的连接异常。解决问题的关键在于方法与思路,而不是每种问题都有固定的答案。
把我今天遇到的问题总结如下(环境:客户端win7
32位Oracle客户端+Linux 32位Oracle服务器端):
今天在虚拟机LINUX中安装好Oracle之后本地PLSQL无法连接,一直报TNS: 监听进程不能解析在连接描述符中给出的
SERVICE_NAME,在服务器端测试连通性都不通过,也报该错,根据网速的材料,应该是服务器端的监听器配置和数据库安装时的全局数据库名不一致导致,怎么去查询数据库创建时自己设置的全局数据库名呢,有很多方法,用以下语句即可,
select * from global_name;
然后使用netmgr确认服务名称是否为刚才查询出来的全局数据库名,如果不是,更改之,然后再测试,服务器端连接OK,开启监听之后,在本地配好tnsnames.ora之后,使用PLSQL正常连接上数据库
我本地客户端的tnsnames.ora内容如下:
ORCL =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.179.128)(PORT =
1521))
)
(CONNECT_DATA =
(SERVICE_NAME = orcl.com)
)
)
服务器端的listener.ora配置如下:
# listener.ora Network Configuration File:
/opt/oracle/product/OraHome/network/admin/listener.or
a
# Generated by Oracle configuration tools.
LSTENER =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.179.128)(PORT =
1521))
)
SID_LIST_LISTENER=
(SID_LIST=
(SID_DESC=
(GLOBAL_DBNAME=orcl.com)
(ORACLE_HOME=/opt/oracle/product/OraHome)
(SID_NAME=orcl)
)
)