在运行lsnrctl命令的status时,常会看到如下返回值:

服务“test”包含1个例程。
   例程"mydata",状态 UNKOWN,包含此服务的一个处理程序。。。
服务"a"包含1个例程。
   例程"mydata",状态 READY,包含此服务的一个处理程序。。。

这里的,状态UNKOWN即表明为静态注册(手动填写参数);

状态为READY的记录,表明为动态注册(listener.ora参数由PMON进程自动从参数文件获取);
 
一、静态注册
 

监听配置中,数据库服务中的全局数据库名,可以写任意内容,与数据库无关,只要保证SID正确即可连上数据库。
由于静态注册,参数是手动静态添加,与数据库无关。数据库无法确认监听是否正确配置。因此,lsnrctl中的status显示状态为unkown。即不保证能连通数据库。
注意:静态注册监听,客户端在配置tnsnames.ora服务命名时,“(Oracle 8i或更高版本)服务名”里填写内容要与服务端静态注册监听器时的全局数据库名一致。否则,无法连通。

lsnrctl中显示如下
服务“test”包含1个例程。
   例程“mydata”,状态UNKOWN,包含此服务的一个处理程序。。。
test即从监听配置过程,数据库服务中的“全局数据库名”读到的值(即配置文件中GLOBAL_DBNAME的值),“mydata”是从监听配置中,数据库服务中SID读到的值(即SID_NAME的值)。
SID_LIST_LISTENER =
 (SID_LIST =
    (SID_DESC =
      (GLOBAL_DBNAME = test)
      (ORACLE_HOME = /orahome/oracle/product/10.2.0/db_1)
      (SID_NAME = mydata)
    )
  )
 
客户端在配置tnsname时,服务名(SERVICE_NAME)即为test。否则,连接不到数据库。
ABC =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.23)(PORT = 1521))
    )
    (CONNECT_DATA =

(SERVICE_NAME =
test)

    )
  )
这里的ABC,为服务命名。可以为任意值,在客户端连接服务器时,填写的主机字符串,即为此服务命名ABC。
 
二、动态注册
1、缺省的动态注册

pmon在数据库启动到mount或open时,动态从参数文件中读取service_names值。service_names可以为多个值。
service_names缺省为dbca建立数据库时的全局数据库名。
设置参数service_names为'a,b,c',命令如下:
alter system set service_names='a,b,c';
则:

lsnrctl状态如下:
服务“test”包含1个例程。
   例程"mydata",状态 UNKOWN,包含此服务的一个处理程序。。。
服务"a"包含1个例程。
   例程"mydata",状态 READY,包含此服务的一个处理程序。。。
服务"b"包含1个例程。
   例程"mydata",状态 READY,包含此服务的一个处理程序。。。
服务"c"包含1个例程。
   例程"mydata",状态 READY,包含此服务的一个处理程序。。。
服务 "mydata.ccddt.cn" 包含一个例程。
   例程"mydata",状态 READY, 包含此服务的一个处理程序。。。

以上服务名a, b, c, mydata.ccddt.cn都为READY,为动态注册。
这里多了最后一条"mydata.ccddt.cn",是PMON缺省动态注册到监听器内的。
注意:不管参数service_names为何值,pmon都会自动以全局数据库名(这里为mydata.ccddt.cn)为服务名,动态注册一个监听。
缺省情况下,若启用动态注册监听,端口号必须为1521。若启用其他端口的动态监听注册,必须要做相关配置。

通过查看v$session,状态为SYS$USERS的连接为通过静态注册监听连接到服务器。

2、自定义端口的动态监听注册
若要启用非默认端口1521的动态监听注册,缺省状态,Oracle不会进行动态注册。要启用动态注册,必须设置local_listener参数。并在服务端配置tnsnames.ora指定监听参数,或者直接通过修改local_listener指定监听参数。步骤如下:
1)服务端
netmgr,配置监听程序,监听端口为1525(非默认端口)

保存配置

        2)、指定监听参数

(1)法1:直接通过修改local_listener参数指定

 

SQL>alter system set LOCAL_LISTENER='(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.23)(PORT=1525))';
    System altered

SQL>alter system register

  System altered
             (2)法2:
在Oracle服务器端建立$ORACLE_HOME/network/admin/tnsnames.ora。解析文件,位置并填入如下内容
mytest =

(DESCRIPTION =
    (ADDRESS_LIST =
        (ADDRESS=(PROTOCOL=TCP)(HOST = 192.168.1.23)(PORT = 1525))
    )
)

 
这里的mytest也可以根据自己需要,修改为其他字符串。如a或b等。
设置参数,指定通过tnsnames.ora内的信息指定监听参数

SQL>alter system set local_listener=mytest;

System altered
SQL>alter system register;

3、查看监听器状态

LSNRCTL> status
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.23)(PORT=1525)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 10.2.0.1.0 - Production
Start Date                15-MAR-2011 10:43:47
Uptime                    0 days 0 hr. 0 min. 56 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /orahome/oracle/product/10.2.0/db_1/network/admin/listener.ora
Listener Log File         /orahome/oracle/product/10.2.0/db_1/network/log/listener.log
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=oraserver)(PORT=1525)))
Services Summary...
Service "a" has 1 instance(s).
  Instance "mydata", status READY, has 1 handler(s) for this service...
Service "b" has 1 instance(s).
  Instance "mydata", status READY, has 1 handler(s) for this service...
Service "c" has 1 instance(s).
  Instance "mydata", status READY, has 1 handler(s) for this service...
Service "mydata" has 1 instance(s).
  Instance "mydata", status READY, has 1 handler(s) for this service...
Service "mydataXDB" has 1 instance(s).
  Instance "mydata", status READY, has 1 handler(s) for this service...
Service "mydata_XPT" has 1 instance(s).
  Instance "mydata", status READY, has 1 handler(s) for this service...
The command completed successfully

oracle静态与动态监听的更多相关文章

  1. Oracle静态监听与动态监听概念全解析

    基于11g,linux5.5做出的测试,单实例数据库做出的测试. 1.注册 Instance到监听器去注册自己的Instance_name与ORACLE_HOME,还可以选择添加global_dbna ...

  2. ORACLE动态监听

    动态监听的原理 pmon在数据库启动到mount或open时,动态从参数文件中读取service_names值.service_names可以为多值(可以有64个,其中包括两个系统的).  servi ...

  3. (4)oracle连接工具和配置监听

    一.SQL PLUS sql plus 是oracle最常用的命令行工具,启动sqlplus工具的方法有两种 1. 是在安装好的oracle开始程序的路径下运行程序 点击运行弹出此界面 2 .是在cm ...

  4. 关于Oracle报“ORA-12514 TNS 监听程序当前无法识别连接描述符中请求服务”错误

    关于Oracle报“ORA-12514 TNS 监听程序当前无法识别连接描述符中请求服务”错误原因:listener.ora中没有指定监听服务器名. 如下是解决思路: 尝试1.通过重启服务的方式启动数 ...

  5. 新建Oracle数据库时,提示使用database control配置数据库时,要求在当前oracle主目录中配置监听程序

    新建一个oracle数据库时,当提示使用database control配置数据库时,要求在当前oracle主目录中配置监听程序等字样的时候,问题是那个监听的服务没有启动,解决方法如下: 打开cmd命 ...

  6. 详解vuex结合localstorage动态监听storage的变化

    这篇文章主要介绍了详解vuex结合localstorage动态监听storage的变化,小编觉得挺不错的,现在分享给大家,也给大家做个参考.一起跟随小编过来看看吧 需求:不同组件间共用同一数据,当一个 ...

  7. js动态监听dom变化

    原生js 动态监听dom变化,根据不同的类型绑定不同的处理逻辑 // Firefox和Chrome早期版本中带有前缀   var MutationObserver = window.MutationO ...

  8. Oracle启动两个监听

    接上篇:Oracle服务器修改IP后 Oracle服务器更换IP后,办公网络里面可以正常访问了,外地的同事,连了vpn 也可以访问,以为可以收工回家,突然又有同事过来说,机房的服务器ping不通新的i ...

  9. 解决(Oracle)ORA-12528: TNS: 监听程序: 所有适用例程都无法建立新连接 问题

    解决(Oracle)ORA-12528: TNS: 监听程序: 所有适用例程都无法建立新连接 问题通过在CMD下用lsnrctl status 查看出的问题:发现BLOCKEDORACLE启动步骤:s ...

随机推荐

  1. Oracle SQL的硬解析、软解析、软软解析

    Oracle中每条sql在执行前都要解析,解析分为硬解析.软解析.软软解析. Oracle会缓存DML语句,相同的DML语句会进行软解析.但不会缓存DDL语句,所以DDL每次都做硬解析.硬解析是一个很 ...

  2. 如何应用CLR线程池来管理多线程

        class Program     {         static void Main(string[] args)         {             int intWorkerT ...

  3. HDU 3487 Splay

    给定两种操作,一种是把一个数列的某一段切下来插到剩余数列的某一个位置上. 一种是翻转操作,把数列的某一段进行翻转. 都是Splay的基本操作.标准的Rotateto调整出 [a,b]区间.然后对[a, ...

  4. python学习笔记9(对文件的操作)

    一.文件对象 我理解的文件对象就是一个接口,通过这个接口对文件进行相关操作. 二.相关函数 [1].内建函数:open() 提供了初始化输入/输出(I/O)操作的通用接口,成功打开一个文件后会返回一个 ...

  5. C语言关键字-volatile

    1.C语言关键字volatile     C 语言关键字volatile(注意它是用来修饰变量而不是上面介绍的__volatile__)表明某个变量的值可能在外部被改变,因此对这些变量的存取 不能缓存 ...

  6. sed 常见用法

    sed 1. 移除空白行 sed '/^$/d' file 2. 直接在文本中进行替换 sed 's/pattern/replacement/g' -i file -i[SUFFIX], --in-p ...

  7. mysql 跨库JOIN

    现有两台MYSQL数据库 一台是192.168.1.1 端口3306 上有数据库DB1 有表TABLE1一台是192.168.1.2 端口3307 上有数据库DB2 有表TABLE2192.168.1 ...

  8. LNMP笔记:更改网站文件和MySQL数据库的存放目录

    配置好LNMP环境以后,默认的网站目录和数据库存放目录都在系统盘,所以我们需要将它们转移到数据盘. 更改网站文件目录 如果你使用的是军哥的lnmp一键安装包,那默认的虚拟主机配置环境在 /usr/lo ...

  9. Matlab中rand('state',sum(clock))解析

    一.问题来源 来自于一份PSO代码,PSO中需要初始化粒子位置和速度. 二.问题探究 众所周知,Matlab中的rand()函数产生的是伪随机数,但一般用来也可以接受.但是,如果我们知道伪随机数的初始 ...

  10. [转载]再次谈谈easyui datagrid 的数据加载

    这篇文章只谈jQuery easyui datagrid 的数据加载,因为这也是大家谈论最多的内容.其实easyui datagrid加载数据只有两种方式:一种是ajax加载目标url返回的json数 ...