监听中出现的以数字命名的服务

在 oracle 19c 中安装多容器数据库实例后,打开监听,可以发现有两个服务的名称是有一串数字所组成的,分别是:
- 2b6f176f0f10db3be0637885a8c06e04
- 86b637b62fdf7a65e053f706e80a27ca

通过SQL查询,发现这两个数字分别代表CDB$ROOT和创建的PDB数据库MYPDB的GUID
 

在 Oracle 19c 及以上的多租户架构(Multitenant)中,每个 CDB 和 PDB 都会分配一个 全局唯一标识符(GUID),这个 GUID 可能会被监听进程 TNS Listener 自动注册为服务名。这通常与 Oracle 内部的管理机制相关,尤其是在使用 Oracle Cloud 或某些特定功能(如 Data Guard、GoldenGate、远程 PDB 复制等)时,这些 GUID 可能被用来标识数据库实例,也就是说Oracle 监听器自动为 CDB 和 PDB 生成了以 GUID 为名称的服务,以便某些内部或远程管理任务使用

此外,通过 lsnrctl status 命令可以看出,同时存在 orclcdb、mypdb 以及 CDB/PDB 的 GUID 形式的服务,但它们并不会相互冲突,这是因为:Oracle 监听器 (TNS Listener) 采用动态服务注册机制(Dynamic Service Registration,DSR),允许数据库实例以多个不同的名称注册到监听器中,包括:
- 数据库的常规服务名(如 orclcdb、mypdb)
- 数据库的 GUID 服务名(如 86b637b62fdf7a65e053f706e80a27ca、2b6f176f0f10db3be0637885a8c06e04)
- XDB 相关的 HTTP 端口服务(如 orclcdbXDB)
- ASM 相关的服务(如 +ASM、+ASM_DATA、+ASM_FRA)

这些不同名称的服务都映射到同一个数据库实例 orclcdb,但 Oracle 允许它们共存,原因是:
- 不同的客户端连接方式可能会使用不同的服务名:普通数据库用户通常使用 orclcdb 或 mypdb 连接数据库,而 Oracle 内部进程或特定管理工具(如 Data Guard、GoldenGate)可能会使用 GUID 作为标识来连接数据库
- 某些 Oracle 组件依赖 GUID 进行唯一标识:在 Oracle Cloud 或某些跨 CDB 迁移、Data Guard、GoldenGate 配置中,GUID 形式的服务可以避免重名冲突,因为 GUID 全球唯一,而 orclcdb 可能在多个环境中都存在

总的来说,orclcdb 和 mypdb 这些服务名是用户友好的连接方式,而 GUID 形式的服务是 Oracle 内部管理用途,两者共存不会冲突

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值