You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Oracle中的远程表是什么?同容器不同PDB的表是否属于远程表?

Oracle数据库远程表定义及同CDB下跨PDB表属性判定

远程表核心判定标准

Oracle里的远程表没有复杂的模糊定义,核心判断逻辑非常直白:

  • 你当前登录会话所在的数据库服务,能不能直接定位到表对应的存储段、直接读取数据:如果不能,必须通过数据库链路(DB Link)走Oracle Net网络连接到其他独立数据库单元才能访问到的表,全算远程表。
    和两个库是不是部署在同一台物理服务器、是不是属于同一个数据库大版本没有任何关系,只看访问时要不要走跨库链路。

同一CDB下不同PDB中的表是否属于远程表

常规业务场景下属于远程表,只有极特殊的CDB级运维场景例外:

  • 常规场景:每个PDB都是自带独立元数据、独立系统表空间、独立访问服务名的逻辑独立库,本质和同一台服务器上跑的两个独立非CDB库没有区别。你在PDB1里直接查PDB2的表会直接报ORA-00942表不存在,必须先建指向PDB2的DB Link,通过表名@dblink名的语法才能访问,完全符合远程表的判定标准。
    操作示例:
    -- 当前会话连接PDB1,直接访问PDB2的表直接报错
    SELECT * FROM HR.EMP; -- ORA-00942: 表或视图不存在
    -- 创建指向PDB2的DB Link后才能正常访问
    CREATE DATABASE LINK pdb2_dbl CONNECT TO HR IDENTIFIED BY "你的密码" USING 'PDB2_TNS服务名';
    SELECT * FROM HR.EMP@PDB2_DBL; -- 此时访问的就是远程表
    
  • 例外场景:如果你用CDB公共用户登录根容器CDB$ROOT,通过CONTAINERS()函数跨PDB查询同Schema下的同名表,Oracle会通过内部容器映射机制直接读取各PDB的存储数据,不需要配置DB Link也不需要走跨库网络连接,这种场景下访问的跨PDB表不属于远程表。

注意:这个例外只针对CDB根容器级别的运维操作,普通业务用户都是直接连接具体PDB开展业务,日常开发、业务操作里跨PDB访问的表,全算远程表。

内容的提问来源于stack exchange,提问作者oramas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.03 08:18:28