监听-创建静态监听

lisenter 注册  
1)动态监听:listener 采用的是默认端口(1521),当实例启动时,由pmon 每分钟自动将service name,本机的1521端口号注册到listener
2)静态监听:当listener 一般使用的是非标准端口(如1522),在listener.ora的文件里手工注册(添加GLOBAL_DBNAME 和instance name)

静态注册:
1)静态注册不需要数据库打开,通过读取listener.ora的静态注册描述完成监听器的注册,因为不需要数据库open,所以如果服务器端一旦启动了静态监听,便可以通过sqlplu以sys用户连接到服务器,实现远程启动/关闭数据库的任务。
2)静态注册可以使用用户指定的端口号(非1521),相对隐蔽,安全。
3)静态注册在一些特殊场合,如使用数据库复制技术时是很有用处的。


动态注册:
1)需要数据库打开才能注册成功,所以动态注册无法使用sysdba身份远程启动数据库。一般都是通过远程TELNET先以root登录服务器,这时你已经在服务器本地了,再转入oracle以sysdba身份打开数据库。之后监听器才可以进行动态注册。
2)可以不使用listener.ora,因为动态注册由PMON后台进程自动注册信息,PMON每60秒查看listener进程是否启动,启动了就注册相关服务器信息。
3)PMON默认1521端口。如果非要PMON注册其他非标准端口,需要设置服务器端的listener.ora和tnsnames.ora, 并设定local_listener,使该值为tnsnames.ora的连接符。

动态注册不需要显示的配置 listener.ora 文件,实例启动的时候, PMON 进程根据 instance_name,service_name 参数将实例和服务动态注册到 listerer 中。如果没有设定 instance_name ,将使用 db_name 初始化参数值。如果没有设定 service_names ,将拼接 db_name db_domain 参数值来注册监听。

第一种 静态和动态都使用1521端口注册。

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.90)(PORT = 1521))
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))        --如果想静态监听起作用的话,此行要删除掉。
    )
  )

SID_LIST_LISTENER =
    (SID_LIST =
    (SID_DESC =
        (GLOBAL_DBNAME= oracle11g)     --随便起的
        (ORACLE_HOME = /u01/oracle)
        (SID_NAME = hong)
    )
    )

第二种,静态注册监听器使用其他端口,如1522端口。

LSN2 =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.90)(PORT = 1522))
    )
  )
  
SID_LIST_LSN2 =
    (SID_LIST =
    (SID_DESC =
        (GLOBAL_DBNAME= oracle11g)
        (ORACLE_HOME = /u01/oracle)
        (SID_NAME = hong)
    )
    )

客户端的tnsnames.ora中的动态注册与静态注册描述

90 =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.90)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl11)
    )
  )


90_JT =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.90)(PORT = 1522))
    )
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      ( SERVICE_NAME = hong )
    )
  )


说明:
1、 lisnter.ora中的SID_NAME的值必须与SID的值一致。通过lisnter.ora中的SID_NAME和GLOBAL_DBNAME两个参数以及客户端的tnsnames.ora中的SERVICE_NAME,这三个参数一起作用,可以实现ORACLE客户端与服务端的隔离。
2、客户端tnsnames.ora中静态注册描述时的SERVICE_NAME与服务器端listener.ora中的GLOBAL_DBNAME是对应的;listener.ora中的SID_NAME指的是实例名,与操作系统的环境变量ORACLE_SID也是一致的。
3、客户端tnsnames.ora中动态注册描述时的SERVICE_NAME值应该是SERVICE_NAMES的值(show parameter service_names可查到


动态注册的status


例程“hong" :与上面的SID_NAME对应,由INSTANCE_NAME参数值确定。

SQL>alter system set service_names = 'lch' scope=spfile;

修改service_names后的监听状态如下图


静态注册的status



注意:端口是1522,且status UNKNOWN 这两个信息都说明监听是以静态注册的

服务 "oracl11g" :此名称是由GLOBAL_DBNAME参数值决定的,如果未加GLOBAL_DBNAME参数,则此名称就是实例名(hong),如下图


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/27661381/viewspace-1358961/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/27661381/viewspace-1358961/

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值