您的位置:首页 > 其它

local_listener参数作用

2017-02-14 17:13 399 查看

pmon只会动态注册port等于1521的监听,否则pmon不能动态注册listener,要想让pmon动态注册listener,需要设置local_listener参数。

listener.ora内容如下:

****************************************************************************************************************************************************************

SID_LIST_LISTENER =

(SID_LIST =

  (SID_DESC =

    (GLOBAL_DBNAME = orcl)

    (ORACLE_HOME = E:oracleproduct10.2.0db_1)

    (SID_NAME = orcl)

  )

  (SID_DESC =

    (GLOBAL_DBNAME = test)

    (ORACLE_HOME = E:oracleproduct10.2.0db_1)

    (SID_NAME = test)

  )

)

LISTENER2=

(DESCRIPTION =

  (ADDRESS = (PROTOCOL = TCP)(HOST = xys)(PORT = 1522))

)
****************************************************************************************************************************************************************

端口为1522时尝试:

****************************************************************************************************************************************************************

LSNRCTL2> start

启动tnslsnr: 请稍候...

TNSLSNR for 32-bit Windows: Version 10.2.0.1.0 - Production

系统参数文件为e:oracleproduct10.2.0db_1networkadminlistener.ora

写入e:oracleproduct10.2.0db_1networkloglistener.log的日志信息

监听: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=xys)(PORT=1522)))

正在连接到(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=xys)(PORT=1522)))

LISTENER2 的STATUS

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

别名 LISTENER2

版本 TNSLSNR for 32-bit Windows: Version 10.2.0.1.0 - Production

启动日期 25-10月-2008 20:39:07

正常运行时间 0 天 0 小时 0 分 3 秒

跟踪级别 off

安全性 ON: Password or Local OS Authentication SNMP OFF

监听程序参数文件e:oracleproduct10.2.0db_1networkadminlistener.ora

监听程序日志文件e:oracleproduct10.2.0db_1networkloglistener.log

监听端点概要...

(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=xys)(PORT=1522)))

服务摘要..

服务"orcl" 包含1 个例程。

例程"orcl", 状态 UNKNOWN, 包含此服务的 1 个处理程序...

服务"test" 包含1 个例程。

例程"test", 状态 UNKNOWN, 包含此服务的 1 个处理程序...

命令执行成功

--因为listener.ora中port是1522而非默认的1521,因此此时pmon不会动态注册监听

 

SQL> alter system register;    //就算手动强制注册,下面还是没有动态注册

系统已更改。

LSNRCTL2> status

正在连接到(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=xys)(PORT=1522)))

LISTENER2 的 STATUS

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

别名 LISTENER2

版本 TNSLSNR for 32-bit Windows: Version 10.2.0.1.0 - Production

启动日期 25-10月-2008 20:22:50

正常运行时间 0 天 0 小时 0 分 7 秒

跟踪级别 off

安全性 ON: Password or Local OS Authentication

SNMP OFF

监听程序参数文件e:oracleproduct10.2.0db_1networkadminlistener.o

ra

监听程序日志文件 e:oracleproduct10.2.0db_1networkloglistener.log

监听端点概要...

(DESCRIPTION=(ADDRESS=(PROTOCOL= TCP)(HOST=xys)(PORT=1522)))

服务摘要..

服务 "orcl" 包含 1 个例程。

例程 "orcl", 状态 UNKNOWN, 包含此服务的 1 个处理程序...

服务 "test" 包含 1 个例程。

例程 "test", 状态 UNKNOWN, 包含此服务的 1 个处理程序...

命令执行成功

**********************************************************************************************************************************************************

没有注册的原因是pmon 缺省只会注册port=1521的listener。如果想让pmon动态注册prot=1521以外的监听,此时需要设置参数local_listener。

Local_listener有两种设置:

方法一、如果我们设置

Alter system set local_listener=’ (ADDRESS = (PROTOCOL = TCP)(HOST = xys)(PORT = 1522))’

那么,我们只要alter system register;强制PMON注册,就可以实现动态注册了。

方法二、接下来,来讨论另外一个local_listener的设置:

Alter system set local_listener= LISTENER2;

那么,PMON能识别出来吗?

答案是不能的,因为PMON不知道去哪里解析这个LISTENER2。

此时如果我们重启动数据库,则会出现:

*************************************************************************************************************************************

SQL> startup

ORA-00119: invalid specification for system parameter LOCAL_LISTENER

ORA-00132: syntax error or unresolved network name 'LISTENER2'

*************************************************************************************************************************************

这是因为:启动时它会去服务端的tnsnames.ora里探寻LISTENER2的含义,找不到,解析不了,则会报ora-00132的错误。

那服务端的tnsnames.ora要怎么设置呢?

LISTENER2=(ADDRESS = (PROTOCOL = TCP)(HOST = xys)(PORT = 1525))

加上这个就OK了。 

另外说明:LISTENER2注册的实例和服务器默认的监听一样,那只要我们设置了alter system set local_listener=……

这时,我们listener status,也就是默认的监听状态,我们发现,动态监听没有了,剩下的静态监听。

可以知道,默认的监听就只有静态监听了,动态监听都在等待local_listener所对应的监听了。PMON真是见风使舵啊。

更进一步,我们发现,只要我们成功设置了local_listener的值,包括实例和服务名不和默认监听一样,PMON都会在等待local_listener对应的监听。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: