基于湖库一体架构,统一管理结构化、半结构化与非结构化等多模态数据,一个系统承载事务处理、实时分析与 AI 工作负载。
OceanBase 数据库 Oracle 模式下如何查看外键约束关系
更新时间:2026-05-21 01:56
使用 sys 用户登录数据库的 Oracle 租户。
$obclient -h172.xx.xxx.xxx -P2xxx -usys@oracle -pxxxx -A执行如下语句查询指定数据库中已启用的外键约束。
SELECT * FROM DBA_CONSTRAINTS WHERE OWNER IN ( SELECT USER_NAME FROM ALL_VIRTUAL_USER_REAL_AGENT WHERE IS_LOCKED=0 AND USER_NAME NOT IN ( 'LBACSYS', 'SYS', 'ORAAUDITOR', 'PUBLIC','DBA','CONNECT','RESOURCE' ) ) AND CONSTRAINT_TYPE = 'R' AND STATUS = 'ENABLED';OWNER IN ( SELECT USER_NAME FROM ALL_VIRTUAL_USER_REAL_AGENT WHERE IS_LOCKED=0 AND USER_NAME NOT IN ( 'LBACSYS', 'SYS', 'ORAAUDITOR', 'PUBLIC','DBA','CONNECT','RESOURCE' ) ):这个条件首先通过子查询从ALL_VIRTUAL_USER_REAL_AGENT表中获取用户名称,其中排除了一些指定的用户。然后,通过OWNER字段匹配DBA_CONSTRAINTS表中的OWNER名称,以过滤出特定的所有者。CONSTRAINT_TYPE = 'R':这个条件用于限制只查询外键约束,其中R代表外键约束。AND STATUS = 'ENABLED':这个条件用于过滤出状态为ENABLED(已启用)的外键约束。
执行如下语句查看外键约束父子关系。
SELECT A.OWNER 外键拥有者, A.TABLE_NAME 外键表, C.COLUMN_NAME 外键列, B.OWNER 主键拥有者, B.TABLE_NAME 主键表, D.COLUMN_NAME 主键列 FROM DBA_CONSTRAINTS A, DBA_CONSTRAINTS B, DBA_CONS_COLUMNS C, DBA_CONS_COLUMNS D WHERE A.R_CONSTRAINT_NAME = B.CONSTRAINT_NAME AND A.CONSTRAINT_TYPE = 'R' AND A.R_OWNER = B.OWNER AND A.CONSTRAINT_NAME = C.CONSTRAINT_NAME AND B.CONSTRAINT_NAME = D.CONSTRAINT_NAME AND A.OWNER = C.OWNER AND A.TABLE_NAME = C.TABLE_NAME AND B.OWNER = D.OWNER AND B.TABLE_NAME = D.TABLE_NAME AND A.OWNER = 'MLTEST';A.CONSTRAINT_TYPE = 'R':限制只查询外键约束,其中R代表外键约束。A.OWNER = 'MLTEST':限制只查询指定所有者下的外键关系,其中MLTEST是指定的所有者。
适用版本
OceanBase 数据库所有版本。