详解Oracle数据字典

php中文网
发布: 2016-06-07 16:00:06
原创
1384人浏览过

Oracle通过数据字典来管理和展现数据库信息,数据字典通常储存数据库的元数据,是数据库的ldquo;数据库rdquo;。通常说的数据字

oracle通过数据字典来管理和展现数据库信息,数据字典通常储存数据库的元数据,是数据库的“数据库”。通常说的数据字典由4部分组成:内部rdbms(x$)表、数据字典表、动态性能视图(v$)和(静态)数据字典视图。(两表两视图)

1,内部RDBMS(X$)表

     X$表示Oracle数据库的核心部分,这些表用于跟踪数据库内部信息,维持数据库的正常运行。X$表是加密命名的,而且Oracle不做文档说明。X$表是Oracle数据库的运行基础,在数据库启动时由Oracle应用程序动态创建。比如我们熟知的X$BH、X$KSMSP等。研究这些表的最好的办法就是借用Oracle的autotrace功能(set autotrace trace explain)。

 

crmeb电商系统
crmeb电商系统

CRMEB 是基于Thinkphp5基础开发的以会员为中心的电商系统,开源版微信公众号商城和小程序商城数据同步,带积分、优惠券、秒杀、砍价、分销等功能,更是一套方便二次开发的商城框架(后台封装了独有快速创建表单功能,无需写表单页面、快速创建数据搜索和数据列表页、导出表格、系统权限配置控制每一个控制器方法、系统参数配置、数据字典、组合数据等)

crmeb电商系统 0
查看详情 crmeb电商系统

2,数据字典表

     数据字典表(Data dictionary table)用以存储表、索引、约束以及其它数据库结构的信息,这些对象通常以“$”结尾(例如:TAB$、OBJ$、TS$等),在创建数据库的时候通过运行$ORACLE_HOME/rdbms/admin/sql.bsq脚本来创建。sql.bsq是一个非常重要的文件,其中包含了数据字典表的定义及注释说明,应仔细阅读研究。

     比如我们经常使用的V$DBA_OBJECT视图就是基于V$OBJ创建的;再比如,当用户创建一张表的时候,Oracle将会在后台执行一系列的内部操作,比如向objV$表中插入数据、向tab$表中记录表数据等。Oracle通过将DDL解析成DML操作,并且将这些操作记录在数据字典表中,那么我们当然可以通过反向解析得到原始的创建语句,从Oracle 9i 开始,一个新的工具包 DBMS_METADATA 就可以完成该功能:

详解Oracle数据字典

 

3,静态数据字典视图

     由于X$表和数据字典表通常不能直接被用户访问,Oracle创建了静态数据字典视图来提供用户对于数据字典信息的访问,由于这些信息通常相对稳定,不能直接修改,所以又被称为静态数据字典视图。静态数据字典视图在创建数据库时由$ORACLE_HOME/rdbms/admin/catagory.sql脚本创建。

     静态数据字典视图按照前缀的不同通常分成三类:

     ● USER_:用户所拥有的相关对象信息;

     ● ALL_:用于有权限访问的所有对象的信息;

     ● DBA_:数据库所有相关对象的信息,用于需要有 select any table 的权限才能访问。

     通过三类视图在本质上是为了实现权限控制。在Oracle数据库中,每个用户与方案(Schema)是对应的,Schema是用户所拥有的对象的集合。数据库通过Schema将不同用户的对象隔离开来,用户可以自由的访问自己的对象,但是要访问其他Schema对象就需要相关的授权。

 

4,动态性能视图

     动态性能视图记录了数据库运行时信息和统计数据,大部分动态性能视图被实时更新以及反映数据库当前状态。在数据库启动时,Oracle动态创建X$表,在此基础上,,Oracle创建了GV$和V$视图,GV$即Global V$,除了一些特例外,每个V$都对应一个GV$。GV$产生是为了OPS/RAC环境的需要,每个V$都是基于GV$的,只是GV$多了INST_ID列来显示实例ID。

    (1)如何查看一个视图的底层创建语句?

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

详解Oracle数据字典

     (2)查询V$视图时,报的错却是V_$视图不存在,V_$视图不是基于V$视图创建的吗,怎么反向报错了?

 

     为了防止普通用户的误操作,Oracle对通过软件机制对V$视图的访问做了限制,它不允许普通用户直接访问V$视图,但我们平时不是经常访问吗?这其实是Oracle引入了V_$视图。在建立V$视图后,Oracle就建立了V_$视图,随后为V_$视图建立了与V$视图同名的共用同义词。这些工作都是通过catalog.sql脚本(该脚本位于$ORACLE_HOME/rdbms/admin/目录下)实现的。

如:

     create or replace view v_$fixed_table as select * from v$fixed_table;

     create or replace public synonym v$fixed_table for v_$fixed_table;    --同名同义词

 

也就是说,大部分用户访问的V$对象,并不是视图,而是执行V_$视图的同义词;而V_$视图时基于真正V$视图创建的。

详解Oracle数据字典

本文永久更新链接地址

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号