zoukankan      html  css  js  c++  java
  • oracle静态与动态监听

    在运行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

     

  • 相关阅读:
    嵌入式:使用dd命令制作烧写文件
    C: 函数的名字是否受大小写影响?
    C++:互斥量C++实现,内存调试,自动锁
    linux环境ubuntu: pushd: not found
    3. 海思Hi3519A MPP从入门到精通(三 视频输入)
    详解YUV数据格式
    海思Hi3519A MPP从入门到精通(二 系统控制)
    海思Hi3519A MPP从入门到精通(一 系统概述)
    HiGV ui代码流程
    音视频学习路线
  • 原文地址:https://www.cnblogs.com/hllnj2008/p/4084316.html
Copyright © 2011-2022 走看看