oracle客户端连接断掉,Oracle客户端连接Oracle实例的步骤及常见错误

Oracle客户端连接Oracle实例的步骤及常见错误

Oracle客户端连接Oracle实例的步骤(以PL/SQL Developer为例):

应用程序(PL/SQL Developer)提供用户名、密码、登陆角色和网络服务名(即netca中的服务命名,也叫连接字符串)进行连接。

第一步,Oracle客户端根据sqlnet.ora中NAMES.DIRECTORY_PATH的配置,决定使用哪几个文件对网络服务名进行解析。默认的配置是,首先通过tnsnames.ora来解析网络服务名。

第二步,Oracle客户端根据tnsnames.ora解析出网络服务名所代表的连接所使用的协议(一般是TCP/IP),Oracle实例所在的IP、连接端口(一般默认为1521)及监听服务名称。

第三步,Oracle客户端(我不清楚这一步是由Oracle客户端还是由应用程序发起连接,这里暂且当时是Oracle客户端吧)根据对应的协议,向Oracle实例所在的IP的连接端口发起连接,并请求刚才通过tnsnames.ora解析出的监听服务。

第四步,Oracle服务端的监听程序Listener,与Oracle客户端建立网络连接后,在已注册服务列表中查找Oracle客户端所请求的服务。若存在,则监听程序Listener将此服务对应的Oracle实例的相关信息返回给Oracle客户端,再由Oracle客户端根据返回的信息直接与Oracle实例直接建立连接。至此,连接完成。

注:本文中的监听服务指的是Oracle监听程序中所监听的服务名,而非操作系统级别的服务。

在排查Oracle连接问题时,经常要使用tnsping工具,tnsping在操作系统shell下执行。

tnsping网络服务名

得到的是与Oracle实例的监听程序所建立网络连接的结果。它并不会查询监听程序上是否存在所请求的监听服务。

根据以上的连接步骤的顺序,连接时的错误主要有以下几种:

一、TNS-03505

若tnsping网络服务名的结果报以下错误:

***********************************************************

TNS-03505:无法解析名称

***********************************************************

则表示Oracle客户端无法根据sqlnet.ora和tnsnames.ora解析网络服务名。

二、ORA-12541

若tnsping网络服务名的结果报以下错误:

***********************************************************

ORA-12541: TNS:无监听程序

在输入的字段中可能有错误,

或者服务器连接未就绪。

***********************************************************

则表示Oracle客户端无法与解析网络服务名得到的协议、IP、端口建立连接。即Oracle客户端与Oracle服务端的监听程序连接失败了。

可能的原因为:

1.Oracle客户端通过sqlnet.ora和tnsnames.ora解析得到的协议、IP、端口与通信协议、Oracle实例所在的IP、监听程序使用的监听端口不一致。

2.Oracle服务端未启动监听程序。

三、ORA-12514

若tnsping网络服务名的结果正常,但是通过Oracle客户端(或应用程序)连接所请求的服务报以下错误:

***********************************************************

ORA-12514: TNS:监听程序当前无法识别连接描述符中请求的服务

在输入的字段中可能有错误,

或者服务器连接未就绪。

***********************************************************

则表示Oracle客户端与Oracle服务端的监听程序Listener正常建立了网络连接,但是Oracle服务端的监听程序Listener无法在已注册列表中找到Oracle客户端所请求的服务。

四、ORA-01034和ORA-27101

若tnsping网络服务名的结果正常,但是通过Oracle客户端(或应用程序)连接所请求的服务报以下错误:

***********************************************************

ORA-01034: ORACLE

not available

ORA-27101: shared

memory realm does not exist

Linux-x86_64

Error: 2: No such file or directory

在输入的字段中可能有错误,

或者服务器连接未就绪。

***********************************************************

则表示Oracle服务端的监听程序Listener已经注册了所请求的服务,但是连接该服务所对应的实例时,发现此实例不可用(如实例未启动)

一般出现这种情况,是因为Oracle服务端的监听程序Listener使用了静态服务注册,而此时Oracle实例并未启动。

2013-03-19 15:23

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值