网站首页 > 技术文章 正文
概述
动态服务是实例在服务器上启动并运行时向侦听器注册的代表,而静态服务(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,这意味着实例确实存在并准备好服务。
猜你喜欢
- 2025-09-09 优化必备基础:Oracle中常见的三种表连接方式
- 2025-09-09 Oracle常用工具使用 - AWR_oracle工具有哪些
- 2025-07-01 oracle查询语句执行计划分析(oracle查看语句执行进度)
- 2025-07-01 Oracle探究_JAVA存储过程_开发指引《中》
- 2025-07-01 DBA日记之Oracle数据库索引一(oracle数据库索引有哪几种)
- 2025-07-01 如何“暴力破解”Oracle性能优化的极端问题(附精彩案例解读)
- 2025-07-01 Oracle 伪列!这些隐藏用法你都知道吗?
- 2025-07-01 ORACLE的RMAN 压缩类型(oracle压缩表空间文件)
- 2025-07-01 升级oracle19c后报不支持的字符集 (在类路径中添加 orai18n.jar)
- 2025-07-01 Oracle存储过程和调用(oracle存储过程调用操作系统脚本)
- 最近发表
-
- count(*)、count1(1)、count(主键)、count(字段) 哪个更快?
- 深入探索 Spring Boot3 中 MyBatis 的 association 标签用法
- js异步操作 Promise fetch API 带来的网络请求变革—仙盟创梦IDE
- HTTP状态码超详细说明_http 状态码有哪些
- 聊聊跨域的原理与解决方法_跨域解决方案及原理
- 告别懵圈!产品新人的接口文档轻松入门指南
- 在Javaweb中实现发送简单邮件_java web发布
- 优化必备基础:Oracle中常见的三种表连接方式
- Oracle常用工具使用 - AWR_oracle工具有哪些
- 搭载USB 3.1接口:msi 微星 发布 990FXA Gaming 游戏主板
- 标签列表
-
- cmd/c (90)
- c++中::是什么意思 (84)
- 标签用于 (71)
- 主键只能有一个吗 (77)
- c#console.writeline不显示 (95)
- pythoncase语句 (88)
- es6includes (74)
- sqlset (76)
- apt-getinstall-y (100)
- node_modules怎么生成 (87)
- chromepost (71)
- flexdirection (73)
- c++int转char (80)
- mysqlany_value (79)
- static函数和普通函数 (84)
- el-date-picker开始日期早于结束日期 (76)
- js判断是否是json字符串 (75)
- asynccallback (71)
- localstorage.removeitem (74)
- vector线程安全吗 (70)
- java (73)
- js数组插入 (83)
- mac安装java (72)
- 查看mysql是否启动 (70)
- 无效的列索引 (74)