【问题标题】:SQL Statement to Find Out Which Schema Owns an Oracle Table?SQL 语句找出哪个模式拥有一个 Oracle 表?
【发布时间】:2015-12-14 23:23:16
【问题描述】:

什么是查询哪个 Schema 拥有 Oracle 表的 SQL 语句?

【问题讨论】:

  • 你用谷歌搜索过你的问题吗?您将在 10 秒内找到答案。
  • 我试图查看谁拥有USER_TABLES。我发现的 SQL 对这张表没有帮助,到目前为止,答案也不适用于这张表,但它们适用于所有普通用户表。
  • USER_TABLES 不是表,而是字典视图。请参阅下面的答案。

标签: sql oracle schema


【解决方案1】:

要查看有关数据库中任何对象的信息,在您的情况下使用 USER_TABLES:

select * from all_objects where object_name = 'USER_TABLES';

OWNER OBJECT_NAME       OBJECT_ID   OBJECT_TYPE   CREATED   LAST_DDL_TIME
SYS   USER_TABLES       3922        VIEW          24-MAY-13 24-MAY-13

USER_TABLES 是一个字典视图。所有字典视图都归 SYS 所有。

【讨论】:

  • 谢谢! “USER_TABLES”这个名字让我觉得它是一张桌子。
【解决方案2】:

SELECT OWNER FROM DBA_TABLES WHERE TABLE_NAME = '<your table>'

如果您没有DBA_TABLES 的权限,请使用ALL_TABLES。

【讨论】:

  • 这确实适用于所有普通用户表。如何查看谁拥有USER_TABLES。因为我想在 Toad for Oracle 中查看此表,但不知道谁拥有它。
【解决方案3】:

这里是查询:

SELECT TABLE_NAME FROM USER_TABLES WHERE TABLE_NAME='<TABLE_NAME>'; -- There is no owner column in this view
SELECT OWNER, TABLE_NAME FROM ALL_TABLES WHERE OWNER='<OWNER_NAME>' AND TABLE_NAME='<TABLE_NAME>';
SELECT OWNER, TABLE_NAME FROM DBA_TABLES WHERE OWNER='<OWNER_NAME>' AND TABLE_NAME='<TABLE_NAME>';

您也可以使用OBJECT_TYPE='TABLE' and OWNER= '&lt;OWNER_NAME&gt;' and OBJECT_NAME='&lt;TABLE_NAME&gt;'查询 USER_OBJECTS、ALL_OBJECTS、DBA_OBJECTS

有 3 个视图,可以提供该信息:

  • USER_TABLES,如果登录架构是表的所有者
  • ALL_TABLES,如果登录架构对表或表所有者具有权限或具有 SELECT_CATALOG 角色
  • DBA_TABLES,如果登录架构具有 SELECT_CATALOG 角色或任何其他具有 SELECT_CATALOG 角色的角色

【讨论】:

    猜你喜欢
    • 2010-09-24
    • 1970-01-01
    • 2012-03-15
    • 1970-01-01
    • 2016-10-17
    • 2012-10-05
    • 1970-01-01
    • 2018-06-27
    • 2021-02-09
    相关资源
    最近更新 更多