【问题标题】:What is the difference between data dictionary table and data dictionary views in oracle? [closed]oracle中的数据字典表和数据字典视图有什么区别? [关闭]
【发布时间】:2019-07-27 07:34:18
【问题描述】:

我正在搜索数据字典表,我最终进入了这个页面,该页面描述了“表数据字典视图”和那里的描述。

https://docs.oracle.com/cd/B28359_01/server.111/b28310/tables014.htm#ADMIN01508

那么数据字典视图数据字典表有什么区别

请以简单的方式回答,因为我是 oracle 新手,我使用的是 oracle 11g。 我只想知道有什么区别。

【问题讨论】:

  • 您好,欢迎来到 StackOverflow,可能值得而不是直接在文章中链接,您应该包括您想要比较的两个项目。它将帮助那些回答你问题的人。

标签: oracle oracle11g oracle-sqldeveloper plsqldeveloper


【解决方案1】:

您发布的链接会将您带到标题为“表数据字典视图”的页面。

该页面上列出的所有内容都是视图,而不是表格。例如,该页面上列出的DBA_COL_COMMENTS 是一个视图。 DBA_TABLES 是一个视图。

在这个特定页面上,所有条目都是关于数据库中表的数据字典视图。这就是该页面标题为“表数据字典视图”的原因。还有另一个类似的页面,标题为“撤消数据字典视图”,其中列出了数据库中有关撤消的所有数据字典视图。另一个页面“Cluster Data Dictionary Views”列出了数据库中关于集群的所有数据字典视图。

真正的“数据字典表”(不是您的链接显示的内容)类似于SYS.OBJ$。这是一个存储数据库中对象信息的表。它是DBA_OBJECTS 数据字典视图的主要数据源之一。数据字典表是低级和神秘的(大多数情况下)。数据字典视图更友好且易于解释。

另外,为了完整起见,还有“固定数据字典表”,这超出了你的问题范围。

【讨论】:

  • 所以什么开发人员正在使用视图,所以很可能没有人使用“真正的数据字典表”。所以你说“真正的桌子”看起来像这样adp-gmbh.ch/ora/misc/sys_tables.html
  • 是的,这些是数据字典表。许多开发人员使用它们以及数据字典视图。视图更容易解释,但有时如果视图包含与您的特定查询无关的内容,则直接访问表会更快。根据需要使用任何一种。
【解决方案2】:

三种数据字典视图的区别在于结果集。

USER_TABLES 显示您当前连接到的架构中的表。

ALL_TABLES 显示您当前连接的用户有权访问的表。此视图有一个附加列 OWNER,用于显示拥有的模式。

DBA_TABLES 显示数据库中的表。此视图有一个附加列 OWNER,用于显示拥有的模式。仅限高级用户,例如具有 DBA 角色或 SELECT ANY DICTIONARY 权限的用户。

【讨论】:

  • 感谢 APC。现在我知道了它们的基础知识,这对我来说已经足够了
  • @johnjo - 如果您发现此答案有用,请考虑支持和/或接受它。接受的答案提高了本网站作为未来寻求者资源的价值。
【解决方案3】:

与所有表和视图一样,数据字典视图是从数据字典表中呈现数据的不同方式。字典表是字典数据的主要来源。同一张表可能支持多个视图。视图(在查询时动态计算,不会存储在数据库中)可能会显示来自同一个表的不同数据,例如基于查询数据的用户。

以 DBA_TABLES、ALL_TABLES 和 USER_TABLES views 为例。它们从单个存储的字典表中提取;但是,它们有不同的列、不同的 WHERE 子句 - 表示不同的行集 - 并且 ALL_TABLES 和 USER_TABLES 将根据用户的身份呈现不同的数据。

Dictionary VIEWS 还可以在单​​个结果集中(通过连接等)或处理过的数据(例如聚合)呈现来自多个字典 TABLES 的数据 - 与一般数据库中使用视图的方式没有什么不同,没有特殊与它们的连接是“数据字典”视图。

编辑

我从来没有好奇检查DBA_TABLES 视图的定义。找到它并不难。读到这里,我意识到我上面说的一件事是不正确的。 DBA_TABLES 本身不是基于单个基本字典表;相反,它是连接其他几个表和视图的结果(它们本身可能有非平凡的定义)。这是Oracle 12.2.0.1 中DBA_TABLES 的视图定义的FROM 部分:

...
from sys.user$ u, sys.ts$ ts, sys.seg$ s, sys.obj$ co, sys.tab$ t,
     sys."_CURRENT_EDITION_OBJ" o,
     sys.obj$ cx, sys.user$ cu, x$ksppcv ksppcv, x$ksppi ksppi,
     sys.deferred_stg$ ds, sys.imsvc$ svc
-- where
...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-11-09
    • 1970-01-01
    • 2020-08-17
    • 2012-03-14
    • 2011-02-22
    • 1970-01-01
    • 2017-12-03
    • 1970-01-01
    相关资源
    最近更新 更多