oracle+实例注册到监听,Oracle监听器:动态注册

本文大部分为转载。

原文作者1:realkid4,原文:链接

原文作者2:chyinzi,原文:链接

1,动态注册

动态注册是Oracle上一个不能关闭的功能,注册的动作是监听器所在主机上数据库实例的后台进程PMON完成的。

实例的background process PMON,每隔一段时间(1~2分钟)就会将实例的参数信息注册到监听器上,实现动态注册。

注册的信息是数据库参数service_name和instance_name。可以通过Show Parameter命令查看。

SYS@sales>show parameter instance_name

NAME TYPE VALUE

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

instance_name string sales

SYS@sales>show parameter service_name

NAME TYPE VALUE

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

service_names string a,b

SYS@sales>show parameter domain

NAME TYPE VALUE

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

db_domain string

一般数据库在建立的时候,这两个参数都是已经设置好的,不会轻易的发生变化。

如果instance_name参数没有设置,则系统会选取参数db_name作为实例名称返回。如果service_names没有设置,则会将db_name和db_domain两个参数组合成服务名实现注册。

值得注意的一个问题是,service_names参数是一个可以指定多个服务名称的参数,以逗号分隔。也就是说,一个Oracle实例时可以同时作为多个服务名向外提供服务的。Service_name是Oracle在新近版本中提出,替代SID_NAME的概念。使用Service的指定方式,多个Oracle实例就可以统一提供一致的数据访问服务(也就是RAC)。

通常,对instance_name和service_name两个参数,还是建议设置上。因为会在一定程度上影响到动态注册的效果。

如果没有显示的指定这两个参数,那么只有在数据库实例启动在监听器实例之后的时候,才会一次动态注册。一旦之后监听器重新启动,动态注册的信息就不会存在,而且很难再次注册上。所以,我们是推荐将这两个参数设置上的。

只有显式设置两个值的情况下,PMON才会周期性的将注册信息加以注册。

此外,也可以通过register强制PMON立即执行一次注册操作。

SYS@sales>alter system register;

系统已更改。

最后,我们聊一聊动态注册的作用:支持错误转移failover。

注册操作的发动方是PMON后台进程,PMON是Oracle实例最重要的后台进程,很多资料和DBA都是以该进程的状态确定数据库实例的状态。PMON负责动态注册,如果不能进行动态注册,说明PMON已经失去了工作能力,也就意味着监听程序所服务的实例已经不能工作。

通过动态注册的机制,监听程序是可以知道所服务的服务器实例已经崩溃,对于客户端的请求,可以实现错误转移。

当然,这里谈到的崩溃是实例的崩溃。如果监听器程序崩溃了,情况又是另一种样子了。

2,动态注册的方式

2.1、缺省的动态注册

pmon在数据库启动到mount或open时,动态从参数文件中读取service_names值(service_names可以为多个值)。

service_names缺省为dbca建立数据库时的全局数据库名。

设置参数service_names为'a,b,c',命令如下:

alter system set service_names='a,b';

lsnrctl反馈状态如下:

服务 "Example_1" 包含 1 个实例。

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

服务 "a" 包含 1 个实例。

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

服务 "b" 包含 1 个实例。

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

服务 "sales" 包含 1 个实例。

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

以上服务名a, b, 都为READY,为动态注册。

这里多了最后一条"sales",是PMON缺省动态注册到监听器内的。

注意:不管参数service_names为何值,pmon都会自动以全局数据库名(这里为sales)为服务名,动态注册一个监听。

缺省情况下,若启用动态注册监听,端口号必须为1521。若启用其他端口的动态监听注册,必须要做相关配置。

通过查看v

math?formula=session%EF%BC%8C%E7%8A%B6%E6%80%81%E4%B8%BASYSUSERS的连接为通过静态注册监听连接到服务器。

2.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;

2.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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Oracle数据库中,监听器是用于接收客户端连接请求并将其转发给相应的数据库实例的网络服务。在Oracle 19.3中,监听器的配置较为简单,可以通过以下步骤进行设置: 1. 首先,确认Oracle数据库已经成功安装并启动。在Oracle 19c中,默认监听器名称为LISTENER。 2. 打开命令行终端或者终端,输入lsnrctl start命令来启动监听器。可以通过lsnrctl status命令来验证监听器是否已经成功启动。 3. 在Oracle 19.3中,监听器的配置文件为listener.ora,默认位于$ORACLE_HOME/network/admin目录下。可以使用文本编辑器打开该文件。 4. 在listener.ora文件中,可以根据需要修改以下参数: - PROTOCOLS_LISTEN:指定监听器使用的协议。 - LISTENER:指定监听器的名称。 - PORT:指定监听器使用的端口号。 - HOST:指定监听器所在的主机名。 5. 保存listener.ora文件,并重启监听器以使更改生效。可以使用lsnrctl命令来停止和启动监听器。 6. 如果需要在监听器中添加或删除特定数据库实例监听端口,可以使用lsnrctl命令的services参数来进行配置。例如,使用以下命令添加一个数据库实例监听端口: lsnrctl services <监听器名称> 7. 配置完成后,可以使用tnsping命令或者其他客户端工具来测试监听器是否正常响应客户端连接请求。 需要注意的是,在配置监听器时,应确保监听器的名称、端口和协议与数据库实例的配置相匹配,以确保客户端能够正确连接到数据库实例。 以上是Oracle 19.3监听器配置的基本步骤,根据具体的环境和需求,还可以进行更高级的配置,如支持多个监听器、配置监听器密码验证等。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值