首批通过分布式安全可靠测评,为关键业务系统打造
Oracle 租户中 sys_context('userenv', 'instance') 函数是如何获取的
更新时间:2026-05-19 08:21
select sys_context('userenv', 'instance') from dual; 这个函数在原生 Oracle 和 OceanBase 的区别。
在原生 Oracle 中,返回的当前实例的标识 ID。
在 OceanBase-Oracle 模式中,返回的是节点的 ID。
详细说明
OceanBase 中查询每个节点
sys_context('userenv', 'instance')返回的值,是在root@sys用户下查询__all_server,其中 ID 就是每个节点此 SQL 对应的值。增删节点会导致
__all_server记录的 ID 值推高,或者形成不连续的现象,一个集群中不会存在两个一样的 ID。示例。
select id,svr_ip from __all_server; +----+-------------+ | id | svr_ip | +----+-------------+ | 3 | xx.xx.xx.14 | | 5 | xx.xx.xx.15 | | 12 | xx.xx.xx.16 | | 18 | xx.xx.xx.17 | | 20 | xx.xx.xx.18 | | 28 | xx.xx.xx.19 | +----+-------------+
影响租户
影响 OceanBase 数据库中的 Oracle 租户,对于 SYS 租户和 MySQL 租户无影响。
适用版本
OceanBase 数据库 V2.x、V3.x 版本。