Oracle案例之监听

来源: Transcendent
文章作者: Gavin Wang
文章链接: Oracle案例之监听 | Transcendent
本文章著作权归作者所有,任何形式的转载都请注明出处。

概述

listener,主要用来监听客户端向数据库服务器端提出的连接请求,是基于服务器端的服务,那么它也只存在于数据库服务器端,进行监听器的设置也是在数据库服务器端完成的。

要排除客户端与服务器端的连接问题,首先检查客户端配置是否正确(客户端配置必须与数据库服务器端监听配置一致),再根据错误提示解决。本文主要介绍在使用oracle过程中,碰到的一些监听故障/问题的记录/汇总。

ORA-12541: TNS: 没有监听器

显而易见,服务器端的监听器没有启动,另外检查客户端IP地址或端口填写是否正确。启动监听器:

shell

$ lsnrctl start

ORA-12500: TNS: 监听程序无法启动专用服务器进程

没有启动Oracle实例服务。启动实例服务。

ORA-12535: TNS: 操作超时

shell

TNS-12154 (ORA-12154):TNS:could not resolve service name

检查输入的服务名与配置的服务名是否一致。另外注意生成的本地服务名文件(Linux/Unix下$ORACLE_HOME/network/admin/tnsnames.ora)里每项服务的首行服务名称前不能有空格。

ORA-12514: TNS: 监听进程不能解析在连接描述符中给出的 SERVICE_NAME

检查tnsnames.ora里的服务名输入是否正确。该服务名必须与服务器端监听器配置的全局数据库名一致。

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

现象:

(1)在服务端和客户端使用sqlplus user/password@SID均无法连接

(2)在服务端使用sqlplus user/password@SID可以建立连接,客户端使用使用sqlplus user/password@SID无法建立连接。

解决:

(方法1)检查listener.ora以及tnsnames.ora文件。主要是检查文件中的HOST是否为

当前主机名(hostname),如果不是,修改成当前主机名(hostname)或IP地址;

(方法2)在listener.ora文件中添加SID_LIST_LISTENER信息。

创建监听错误

这个问题的解决方法如下:

在ORACLE_HOME/network/admin/listener.ora文件中增加"SID_LIST_LISTENER = "这部分内容。

shell

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST=10.164.75.167)(PORT = 1521))
    )
  )
SID_LIST_LISTENER =
    (SID_DESC =
      (GLOBAL_DBNAME = ora11g)       //ora11g是数据库实例名
      (ORACLE_HOME = /opt/oracle/app/product/11.1.0/db_1)    //oracle家目录
      (SID_NAME = ora11g)           
    )
  )

注:

Oracle System Identifier (SID)

shell

A name that identifies a specific instance of a running pre-release 8.1 Oracle
database. For any database, there is at least one instance referencing the database.
For pre-release 8.1 databases, SID is used to identify the database. The SID is
included in the connect descriptor of a tnsnames.ora file and in the definition of the
listener in the listener.ora file.

如果SID值不作人为的修改,该值默认为PLSExtProc,且完全可以正常运行(目前141 上的数据库该值就是PLSExtProc)。因此我觉得可能是如果不指定SID值的话,oracle会自动地去搜索运行的实例,然后找出一个匹配的,但是如果直接指定SID,则省去了搜索的步骤,也就加快了连接速度。不过这种猜想目前尚未得到证实,如果大家对这方面了解的话,希望不吝赐教。

启动监听时出错 – 12514

正确创建监听后,启动监听时监听启动异常,报12514错误。

shell

oerr ora 12514
12514, 00000, "TNS:listener does not currently know of service requested in connect descriptor"
// *Cause:  The listener received a request to establish a connection to a
// database or other service. The connect descriptor received by
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值