浅谈Oracle的监听服务-静态注册

运维 数据库运维
动态服务是实例在服务器上启动并运行时向侦听器注册的代表,而静态服务(SID_LIST_LISTENER)可用于服务外部连接,无论是否在服务器上运行实例,连接非常有用到空闲或 NOMOUNT 数据库。

概述

动态服务是实例在服务器上启动并运行时向侦听器注册的代表,而静态服务(SID_LIST_LISTENER)可用于服务外部连接,无论是否在服务器上运行实例,连接非常有用到空闲或 NOMOUNT 数据库。

根据Oracle 19c Advanced Features of Oracle Net Services,静态服务的用例可以是以下任何一种:

  • 外部过程调用。
  • Oracle 异构服务。
  • Oracle Data Guard。
  • 从 Oracle Enterprise Manager Cloud Control 以外的工具远程启动数据库。
  • 与早于 Oracle8i 版本 2 (8.1) 的 Oracle 数据库的连接。

1、添加单个静态服务

启用静态服务注册功能的配置非常简单,只需在监听器配置文件中添加一个名为SID_LIST_LISTENER的条目,该文件通常位于$ORACLE_HOME/network/admin/listener.ora,然后重新启动监听器。

[oracle@test ~]$ vi $ORACLE_HOME/network/admin/listener.ora
...
SID_LIST_LISTENER=
(SID_LIST=
(SID_DESC=
(ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1)
(SID_NAME=ORCL))
)

基本上,静态服务注册至少需要知道两项,ORACLE_HOME和ORACLE_SID。如您所见,我们在条目中提供了它们。

2、添加多个静态服务

对于更多ORACLE_SID,您可以像这样将SID_LIST附加到条目中。

[oracle@test ~]$ vi $ORACLE_HOME/network/admin/listener.ora
...
SID_LIST_LISTENER=
(SID_LIST=
(SID_DESC=
(ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1)
(SID_NAME=ORCL))
(SID_DESC=
(ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1)
(SID_NAME=SMALLDB))
)

3、 使用 GLOBAL_DBNAME

对于那些DB_DOMAIN不为空的数据库,您应该在SID_LIST中添加更多信息GLOBAL_DBNAME。

[oracle@test ~]$ vi $ORACLE_HOME/network/admin/listener.ora
...
SID_LIST_LISTENER=
(SID_LIST=
(SID_DESC=
(ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1)
(SID_NAME=ORCL))
(GLOBAL_DBNAME=orcl.example.com)
)

GLOBAL_DBNAME的格式如下:

<DB_UNIQUE_NAME>.<DB_DOMAIN>

在上述情况下,数据库的DB_DOMAIN是example.com。请注意,如果您的DB_DOMAIN为空,则不必添加它。不要忘记重新启动监听器以立即生效。

4、Data Guard Broker 的静态服务

您必须为数据保护代理添加一个特殊的静态服务<DB_UNIQUE_NAME>_DGMGRL.<DB_DOMAIN>以启用需要重新启动实例而无需手动干预的代理操作,例如通过switchover在主数据库和备用数据库之间进行角色转换。

[oracle@test ~]$ vi $ORACLE_HOME/network/admin/listener.ora
...
SID_LIST_LISTENER=
(SID_LIST=
(SID_DESC=
(ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1)
(SID_NAME=ORCL))
(GLOBAL_DBNAME=ORCL_DGMGRL)
)

请注意,如果您的DB_DOMAIN为空,则不必添加它。所有服务名称最好大写。

服务名称的状态

让我们看看他们在监听器中的状态。

[oracle@test ~]$ lsnrctl status
...
Services Summary...
Service "ORCL" has 2 instance(s).
Instance "ORCL", status UNKNOWN, has 1 handler(s) for this service...
Instance "ORCL", status READY, has 1 handler(s) for this service...
Service "ORCLXDB" has 1 instance(s).
Instance "ORCL", status READY, has 1 handler(s) for this service...
The command completed successfully

静态服务ORCL的状态被标记为UNKNOWN,而动态服务是READY,这意味着实例确实存在并准备好服务。

责任编辑:姜华 来源: 今日头条
相关推荐

2011-05-17 13:17:29

Oracle静态注册动态注册

2011-07-25 16:54:52

Oracle数据库注册监听

2010-04-15 11:10:26

Oracle无法启动监

2011-06-21 16:51:21

Qt 静态 编译

2009-05-04 09:52:49

Oracle优化排序

2011-03-21 16:21:49

Oracle监听口令监听器

2009-05-06 11:09:10

Oracle物化视图数据库

2011-07-04 13:39:32

注册表监听器

2009-11-18 18:28:27

Oracle监听器

2009-11-17 17:47:56

Oracle Shar

2017-04-01 17:00:39

oracle监听IP地址

2010-11-19 14:22:04

oracle服务端

2009-02-18 12:46:00

2011-07-18 18:01:34

buffer cach

2009-08-28 12:25:58

C#静态方法

2022-01-24 07:01:55

oracle数据库oracle监听

2009-11-17 10:48:22

Oracle Spat

2010-09-27 10:48:44

2009-04-24 10:49:57

Oracle性能优化错误

2009-05-07 11:30:28

Oracle扫描数据索引
点赞
收藏

51CTO技术栈公众号