首页 > 代码库 > oracle监听详解

oracle监听详解

典型的监听配置模板:

创建监听有多重方式:(1)netca (2)netmgr (3)手工编辑listener.ora文件等;

下面是一个监听配置的标准模板:


配置文件中的关键之解析:

(1) PROTOCOL指的是监听接收链接的协议;

(2) HOST是指的监听运行的主机或者IP地址;

(3) PORT指的是监听运行的端口。

(4) SID_NAME指的是监听服务的实例名

(5) GLOBAL_NAME指的是监听服务的服务名

(6) ORACLE_HOME指的是监听服务的$ORACLE_HOME;

 

监听支持的协议参数:

 



注意:为增加系统的可用性,在HA环境下,建议将listener.oora关键字HOST配置成主机名;

其中的SID_NAME等于数据库参数INSTANCE_NAME的;

 

然后再看一下tnsnames的文件内容:

 

我们需要关注的是tns的service name是等于listener文件中的global_dbname的;

 

注意tnsping:tnsping只是发送链接包(NSPTCN)至服务端监听上,所以即使tnsping监听正常,客户端也不一定能连接到数据库库服务器;tnsping主要检查的是远程监听是否启动在相应的ip地址和端口上,并不检查监听中的实力服务和句柄(handle);

 

 

 

静态配置内容:

在静态注册环境下,在listener.ora文件中主要配置一下内容

(1) SID_NAME:数据库实例名,其值需和数据库参数INSTANCE_NAME保持一致。

(2) GLOBAL_DBNAME:数据库服务名,可以省略,默认和SID_NAME保持一致。

(3) ORACLE_HOME:实力运行的ORACLE_HOME目录,在unix和linux环境下,该参数可以省略,默认和环境变量¥ORACLE_HOME保持一致;

 

以下为实例名为felix和pyf静态注册配置:(注意:在监听静态注册的情况下,即使数据库实例已关闭,具有sysdba权限的业务用户仍然可以通过监听远程连接到数据库中进行维护);

[oracle@felix admin]$ vi  listener.ora   

# listener.ora Network Configuration File:/u01/app/oracle/product/11.2.0/db_1/network/admin/listener.ora

# Generated by Oracle configuration tools.

 

LISTENER =

 (DESCRIPTION =

    (ADDRESS= (PROTOCOL = TCP)(HOST = felix)(PORT = 1521))

  )

 

SID_LIST_LISTENER =

   (SID_LIST =

      (SID_DESC =

        (GLOBAL_DBNAME = develop)

       (ORACLE_HOME=/u01/app/oracle/product/11.2.0/db_1)

       (SID_NAME = felix )

      )

      (SID_DESC =

        (GLOBAL_DBNAME = pyfeng)

       (ORACLE_HOME=/u01/app/oracle/product/11.2.0/db_2)

       (SID_NAME = pyf )

      )

 

   )

 

ADR_BASE_LISTENER = /u01/app/oracle

 

11:36:53 SQL>show  parameter service

 

NAME                                 TYPE                   VALUE

---------------------------------------------------------- ------------------------------

service_names                        string                 felix

 

 

[oracle@felix admin]$ cat tnsnames.ora  

# tnsnames.ora Network Configuration File:/u01/app/oracle/product/11.2.0/db_1/network/admin/tnsnames.ora

# Generated by Oracle configuration tools.

 

DEVELOP_p =

 (DESCRIPTION =

   (ADDRESS_LIST =

     (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.10.17)(PORT = 1521))

    )

   (CONNECT_DATA =http://www.mamicode.com/

     (SERVICE_NAME = develop)

    )

  )

 

[oracle@felix admin]$

特别注意:如果listener.ora设置了GLOBAL_DBNAME参数,呢么在RAC环境下,TAF和connect-time failover特性将失效;

 

注意监听状态:

 [oracle@felixadmin]$ lsnrctl status

LSNRCTL for Linux: Version 11.2.0.3.0 - Productionon 12-AUG-2014 14:01:58

 

Copyright (c) 1991, 2011, Oracle.  All rights reserved.

 

Connecting to(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=felix)(PORT=1521)))

STATUS of the LISTENER

------------------------

Alias                     LISTENER

Version                   TNSLSNR for Linux: Version 11.2.0.3.0 -Production

Start Date                12-AUG-2014 11:25:44

Uptime                    0 days 2 hr. 36 min. 13 sec

Trace Level               off

Security                  ON: Local OS Authentication

SNMP                     OFF

Listener Parameter File  /u01/app/oracle/product/11.2.0/db_1/network/admin/listener.ora

Listener Log File        /u01/app/oracle/diag/tnslsnr/felix/listener/alert/log.xml

Listening Endpoints Summary...

 (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=felix)(PORT=1521)))

Services Summary...

Service "develop" has 1 instance(s).

  Instance"felix", status UNKNOWN, has 1 handler(s) for this service...

Service "felix" has 1 instance(s).

  Instance"felix", status BLOCKED, has 1 handler(s) for this service...

The command completed successfully

[oracle@felix admin]$