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

如何通过查询语句获取Oracle数据库中指定表的创建用户信息

Oracle查询表创建用户方案

场景1:获取表所属Schema用户(绝大多数场景下的创建人)

你正在使用的DBA_OBJECTS视图本身就包含该信息,直接查询OWNER字段即可,这也是日常场景中默认的表创建人,示例语句如下:

SELECT
  OWNER AS 表创建用户,
  OBJECT_NAME AS 表名,
  CREATED AS 创建日期
FROM DBA_OBJECTS
WHERE OBJECT_TYPE = 'TABLE'
  AND OWNER = '你的目标SCHEMA名' -- Oracle Schema名默认全大写,特殊小写命名需要加双引号包裹
  AND OBJECT_NAME IN ('表名1', '表名2', '需查询的表名列表');

如果你的账号没有DBA权限,可将视图名替换为ALL_OBJECTS,仅能查询你有访问权限的表信息。

场景2:获取实际执行建表操作的账号(适配跨Schema建表场景)

如果存在A账号持有CREATE ANY TABLE权限,在B账号的Schema下建表的特殊场景,DBA_OBJECTS的OWNER字段仅会返回表所属的B账号,无法返回实际操作的A账号,这类场景需要按以下方式查询:

  • 已开启数据库标准审计的前提下,可查询DBA_AUDIT_TRAIL视图追溯:
SELECT
  USERNAME AS 实际建表操作人,
  OBJ_NAME AS 表名,
  OWNER AS 表所属Schema,
  TIMESTAMP AS 建表时间
FROM DBA_AUDIT_TRAIL
WHERE ACTION_NAME = 'CREATE TABLE'
  AND OWNER = '你的目标SCHEMA名'
  AND OBJ_NAME IN ('表名1', '表名2', '需查询的表名列表');
  • 未开启审计的前提下,仅能查询最近一段时间的SQL缓存记录,无法追溯太久远的操作,示例语句:
SELECT
  PARSING_SCHEMA_NAME AS 执行建表操作的用户,
  SQL_TEXT AS 建表语句,
  FIRST_LOAD_TIME AS 首次执行时间
FROM V$SQL
WHERE SQL_TEXT LIKE '%CREATE TABLE%你要查询的表名%'
  AND COMMAND_TYPE = 1;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 15:39:03