oracle登陆到监听器,oracle 监听器学习

关于Oracle动态注册和静态注册的一些实验:

实验平台:oracle 10.2.0.1

据目前所知Oracle 8i(含)以后都推荐使用service_name而不是sid来连接数据库了。

通过service_name连接有几个好处:

1、同个实例可通过多个不同的service_name来连接。而不是像sid一样只能唯一的指定了。

2、可以最大指定255个字符的名称,而不是sid的8个字符限制。

首先说下标准配置下的动态注册过程:

1、Oracle启动实例;

2、监听器启动(lsnrctl start);

3、由pmon进程向监听器进行注册。

注册的名称从service_names从取出来,然后注册到监听器的hostname:1521上面。

注册的结果就是我们在不用对listener.ora做任何设置的情况下就可以直接登录数据库了。

实验:

显示service_names列表:

> show parameter service_names;

NAME                                 TYPE        VALUE

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

service_names                        string      orcl,dyndb

> host lsnrctl service

LSNRCTL for 32-bit Windows: Version 10.2.0.1.0 - Production on 02-9月 -2009 14:58:07

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

正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1)))

服务摘要..

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

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

处理程序:

"DEDICATED" 已建立:0 已被拒绝:0

LOCAL SERVER

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

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

处理程序:

"DEDICATED" 已建立:10 已拒绝:0 状态:ready

LOCAL SERVER

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

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

处理程序:

"DEDICATED" 已建立:10 已拒绝:0 状态:ready

LOCAL SERVER

....

命令执行成功

以上服务列表中列出了所有已经注册的服务。

可以看到其中有dyndb和orcl列个服务,目前状态是ready的。

由于动态注册是由数据库主动发起到监听器的注册,因此其状态是可以的,所以显示的状态是ready的。

而静态注册是直接配置到listener.ora中的,实际上并不知道此时数据库的状态,所以监听器对该服务器的状态显示是unknown的。

服务在监听器端注册好后,客户端即可通过tnsname.ora到监听器中取对应的service name

以上注册的两个service name可同时使用:

ORCL =

(DESCRIPTION =

(ADDRESS_LIST =

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

)

(CONNECT_DATA =

(SERVER = DEDICATED)

(SERVICE_NAME = dyndb)

)

)

或者

HSCUSTOMER =

(DESCRIPTION =

(ADDRESS_LIST =

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

)

(CONNECT_DATA =

(SERVICE_NAME = orcl)

)

)

现在如果要新增一个service name,则使用如下命令即可:

alter system set service_names='orcl,dyndb,testdb' scope=memory;

配置完成后,即可用lsnrctl service或lsnrctl status检查状态:

> host lsnrctl status

........

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

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

命令执行成功

但是,如果监听器的监听端口不是默认的,数据库就不能注册。

> host lsnrctl service

LSNRCTL for 32-bit Windows: Version 10.2.0.1.0 - Production on 02-9月 -2009 15:37:45

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

正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1)))

服务摘要..

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

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

处理程序:

"DEDICATED" 已建立:0 已被拒绝:0

LOCAL SERVER

命令执行成功

没有出现前面配置好的监听服务。

所以就要显式的注册了,这次需要用到local_listenter参数。

alter system set local_listenter = '(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=8888)))';

然后手动处罚pmon到监听器去注册:

alter system register;

再次查看,发现注册成功:

> host lsnrctl status

LSNRCTL for 32-bit Windows: Version 10.2.0.1.0 - Production on 02-9月 -2009 15:39:17

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

正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1)))

LISTENER 的 STATUS

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

别名                      LISTENER

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

启动日期                  02-9月 -2009 15:33:31

正常运行时间              0 天 0 小时 5 分 46 秒

跟踪级别                  off

安全性                    ON: Local OS Authentication

SNMP                      OFF

监听程序参数文件          e:\oracle\product\10.2.0\db_1\network\admin\listener.ora

监听程序日志文件          e:\oracle\product\10.2.0\db_1\network\log\listener.log

监听端点概要...

(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\\.\pipe\EXTPROC1ipc)))

(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=127.0.0.1)(PORT=8888)))

服务摘要..

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

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

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

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

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

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

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

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

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

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

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

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

命令执行成功

参考文章:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值