我在搜索数据字典表,最后在这个页面中描述了“表数据字典视图”,并给出了描述。
01/server.111/b28310/tables014.htm#ADMIN01508
那么,数据字典视图、和数据字典表之间有什么区别?
请用简单的方式回答,因为我是先知的新手,我用的是甲骨文11g。如果有什么不同,我只想知道。
发布于 2019-03-05 20:24:03
您发布的链接将您带到一个名为“表数据字典视图”的页面。
该页面上列出的所有内容都是视图,而不是表。例如,该页面上列出的DBA_COL_COMMENTS是一个视图。DBA_TABLES是一个视图。
在这个特定的页面上,所有条目都是关于数据库中表的数据字典视图。这就是为什么页面的标题是“表数据字典视图”。还有另一个类似的页面,名为“撤销数据字典视图”,它列出了数据库中有关撤消的所有数据字典视图。另一个页面“群集数据字典视图”列出了数据库中有关集群的所有数据字典视图。
一个真正的“数据字典表”(它不是链接显示的)将类似于SYS.OBJ$。这是一个存储数据库中有关对象的信息的表。它是DBA_OBJECTS数据字典视图的主要数据源之一。数据字典表是低级的和神秘的(大部分)。数据字典视图更友好,更容易解释。
此外,为了完整起见,还有“固定数据字典表”,这超出了您的问题范围。
发布于 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部分:
...
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
...发布于 2019-03-05 20:19:42
三种类型的数据字典视图之间的区别是结果集。
USER_TABLES显示当前连接到的架构中的表。
ALL_TABLES向您显示您当前连接到的用户可以访问的表。此视图有一个额外的列所有者,以显示所属架构。
DBA_TABLES向您显示数据库中的表。此视图有一个额外的列所有者,以显示所属架构。只有高级用户,例如那些具有DBA角色或SELECT任何字典特权的用户。
https://stackoverflow.com/questions/55009500
复制相似问题