首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >oracle中的数据字典表和数据字典视图有什么区别?

oracle中的数据字典表和数据字典视图有什么区别?
EN

Stack Overflow用户
提问于 2019-03-05 18:43:00
回答 3查看 1.6K关注 0票数 2

我在搜索数据字典表,最后在这个页面中描述了“表数据字典视图”,并给出了描述。

01/server.111/b28310/tables014.htm#ADMIN01508

那么,数据字典视图、数据字典表之间有什么区别?

请用简单的方式回答,因为我是先知的新手,我用的是甲骨文11g。如果有什么不同,我只想知道。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-03-05 20:24:03

您发布的链接将您带到一个名为“表数据字典视图”的页面。

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

在这个特定的页面上,所有条目都是关于数据库中表的数据字典视图。这就是为什么页面的标题是“表数据字典视图”。还有另一个类似的页面,名为“撤销数据字典视图”,它列出了数据库中有关撤消的所有数据字典视图。另一个页面“群集数据字典视图”列出了数据库中有关集群的所有数据字典视图。

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

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

票数 1
EN

Stack Overflow用户

发布于 2019-03-05 18:48:54

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

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

字典视图还可以从单个结果集中的多个字典表(通过联接等)或处理过的数据(例如聚合)中显示数据--与数据库中使用视图的方式没有什么不同,与它们没有特殊的连接是“数据字典”视图。

编辑

我从不好奇地检查DBA_TABLES视图的定义。不难找到。读了之后,我意识到我上面说的一件事是不正确的。DBA_TABLES本身并不是基于一个单一的基字典表,而是几个其他表和视图(这些表和视图本身可能有重要的定义)的连接的结果。以下是Oracle12.2.0.1中DBA_TABLES视图定义的DBA_TABLES部分:

代码语言:javascript
复制
...
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
...
票数 2
EN

Stack Overflow用户

发布于 2019-03-05 20:19:42

三种类型的数据字典视图之间的区别是结果集。

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

ALL_TABLES向您显示您当前连接到的用户可以访问的表。此视图有一个额外的列所有者,以显示所属架构。

DBA_TABLES向您显示数据库中的表。此视图有一个额外的列所有者,以显示所属架构。只有高级用户,例如那些具有DBA角色或SELECT任何字典特权的用户。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55009500

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档