oracle学习篇:三、数据字典

不羁岁月 提交于 2019-12-02 15:50:44

本章开始学习数据字典相关知识

oracle通过数据字典来管理和展现数据库信息。

3.1 数据字典概述

数据字典是oracle数据库的一个重要组成部分,是元数据的存储地点。oracle rdbms使用数据字典记录和管理对象信息和安全信息等,用户和数据库系统管理员可以通过数据字典来获取数据库相关信息。

数据字典包含以下内容:

(1)所有数据库schema对象的定义(表、视图、索引、聚簇、同义词、序列、过程、函数、包、触发器等);

(2)数据库的空间分配和使用情况;

(3)字段的缺省值;

(4)完整性约束信息;

(5)oracle用户名称、角色、权限等信息;

(6)审计信息;

(7)其他数据库信息。

通常所说的数据字典由4个部分组成:内部RDBMS(X$)表、数据字典表、动态性能(V$)视图和数据字典视图。

3.2 内部RDBMS(X$)表

X$是oracle数据库的核心部分,这些表用于跟踪内部数据库信息,维持数据库的正常运行。

X$是oracle数据库的运行基础,在数据库启动时由oracle应用程序动态创建。

3.3 数据字典表

数据字典表用以存储表、索引、约束以及其他数据库结构的信息,这些对象通常以$结尾(如tab$、obj$、ts$等),在创建数据库的时候通过运行sql.bsq脚本来创建。

3.4 动态性能视图

动态性能(V$)视图记录了数据库运行时信息和统计数据,大部分动态性能视图被实时更新以反映数据库当前状态。

3.4.1 GV$和V$视图

在数据库启动时,oracle动态创建X$表,在此基础上,oracle创建了GV$和V$视图。查询GV$视图返回所有实例信息,而每个V$视图是基于GV$视图,增加了inst_id列的where条件限制建立,指包含当前连接实例信息。

oracle提供了一些特殊视图用以记录其他视图的创建方式,v$fixed_view_definition就是其中之一。

3.4.2 GV_$、V_$视图和V$、GV$同义词

在GV$和V$之后,oracle建立了GV_$和V_$视图,随后为这些视图建立了公用同义词。这些工作都是通过catalog.sql脚本(该脚本位于$ORACLE_HOME/rdbms/admin/目录下)实现的。

在进行数据访问时,oracle访问view优先,然后是同义词。

3.4.3 数据字典视图

数据字典视图是在X$表和数据字典表之上创建的视图,在创建数据库时由catalog.sql脚本创建。

按照前缀的不同,数据字典视图通常被分为以下三类:

(1)USER_类视图:包含了用户所拥有的相关对象信息;

(2)ALL_类视图:包含了用户有权限访问的所有对象的信息;

(3)DBA_类视图:包含了数据库所有相关对象的信息。

3.4.4 进一步的说明

oracle的X$表信息可以从v$fixed_table中查到。

3.5 最后的验证

最后通过v$aprameter视图来追踪数据库的架构。

3.5.1 v$parameter的结构

select view_definition from v$fixed_view_definition a where a.view_name='V$PARAMETER';

可以看到v$parameter是由gv$parameter创建的,gv$parameter则由X$创建的。

3.5.2 视图还是同义词

访问的是同义词,除sys用户以外,其他用户不能查询V$视图,V$视图也不能被授权给其他用户。

3.5.3 oracle如何通过同义词定位对象

事件10046

alter session set events '10046 trace name context forever,level 12';

最后总结一下sql语句中oracle对于对象名的解析顺序,具体如下(写太多了简化一下):

用户是否存在表或视图>私有同义词是否存在>公有同义词是否存在>报错不存在

第三章完

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!