当前位置:  数据库>oracle

详解Oracle数据字典

    来源: 互联网  发布时间:2017-06-16

    本文导语: Oracle通过数据字典来管理和展现数据库信息,数据字典通常储存数据库的元数据,是数据库的“数据库”。通常说的数据字典由4部分组成:。(两表两视图) 1,内部RDBMS(X$)表      X$表示Oracle数据库的核心部分,这些表用于...

Oracle通过数据字典来管理和展现数据库信息,数据字典通常储存数据库的元数据,是数据库的“数据库”。通常说的数据字典由4部分组成:。(两表两视图)

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


    
 
 

您可能感兴趣的文章:

  • Python 字典(Dictionary)操作详解
  • python学习笔记:字典的使用示例详解
  • python基础教程之字典操作详解
  • python创建和使用字典实例详解
  • python基础入门详解(文件输入/输出 内建类型 字典操作使用方法)
  • Oracle 数据库(oracle Database)性能调优技术详解
  • Android 实现永久保存数据的方法详解
  • 服务器存储快照和数据库快照详解
  • 解决无法在unicode和非unicode字符串数据类型之间转换的方法详解
  • mysql jdbc连接mysql数据库步骤及常见参数详解
  • sqlserver数据库导入数据操作详解(图)
  • 3步搞定纯真IP数据导入到MySQL的方法详解
  • Oracle数据库中分区功能详解
  • 基于mysql数据库的密码问题详解
  • 减少mysql主从数据同步延迟问题的详解
  • 关于MySQL数据迁移--data目录直接替换注意事项的详解
  • Sql Server使用cursor处理重复数据过程详解
  • 将ACCESS数据库迁移到SQLSERVER数据库两种方法(图文详解)
  • MySQL数据入库时特殊字符处理详解
  • 使用Oracle数据挖掘API方法详解[图文]
  • 深入数据库通用的连接方式详解
  • 安装Linux与Oracle数据库步骤详解
  • 详解远程连接Mysql数据库的问题(ERROR 2003 (HY000))
  • MySQL笔记之数据备份与还原的使用详解
  • oracle联机数据库备份详解
  • 详解Linux平台下的Oracle数据库编程
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • html保留字符详解
  • 关于tcp/ip详解卷2中的代码
  • Linux/centos/redhat下各种压缩解压缩方式详解
  • 请问哪儿有java2编程详解的电子书下载??本人急需!!跟贴有分!!!
  • linux c malloc函数定义及用法详解
  • 哪有LINUX命令详解下??
  • TCP协议报头字段详解及报头图
  • 请问:setTimeout(p1,p2) 的函数详解,马上给分的。
  • Web前端设计:html上标<sup>标签与下标<sub>标签详解
  • 求 sun ldoms 配置 虚拟化服务器 步骤详解
  • TCP协议三次握手过程详解
  • 请问:哪里可以下tcp/ip详解书上程序的源码
  • HTML 5 <acronym> 标签定义用法详解
  • linux 2.4 内核软中断详解?
  • c++断言assert()函数的头文件及其用法详解
  • 哪本书介绍mutex、POSIX 线程详解
  • html5/css3文本阴影(text-shadow)详解及示例
  • 哪位java同门师兄有《java2编程详解》电子文档,注意不是影印版
  • HTML 5中<address> 标签定义用法详解及几个示例
  • 如何在Linux下使用脚本实现程序的自动重启!望各位详解!
  • linux下进程占用内存空间详解
  • 大家推荐几本详解Linux或unix 操作系统源代码的书籍!!!!


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3