ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 数据字典,Oracle数据字典

数据字典,Oracle数据字典

原创 Linux操作系统 作者:wxdlut 时间:2012-03-11 21:44:05 0 删除 编辑

定义来自《数据库系统概论》:

  数据流图表达了数据和处理的关系。数据字典则是 系统中各类数据的集合,是进行详细的数据收集和数据分析所获得的主要成果。
  数据字典通常包括 数据项、数据结构、数据流、数据存储 和 处理过程 5个部分。
  其中,数据项 是数据的最小组成单位,若干个数据项 可以组成一个数据结构,数据字典 通过对数据项和数据结构 的定义来描述数据流、数据存储的逻辑内容。
  可见,数据字典 是关于数据库中数据的描述,即元数据,而不是数据本身。
   数据字典在需求分析阶段建立,在数据库设计过程中不断修改、充实、完善的。
   明确把需求收集和分析作为数据库设计的第一阶段是十分重要的。这一阶段收集到的基础数据(用数据字典表示) 和 一组数据流图(Data Flow Diagram,DFD)是下一步进行概念设计的基础。

定义来自:http://www.blogjava.net/msmary/articles/152183.html
1、什么是数据字典(Data Dictionary)? 

应该承认,每个人对数据字典的理解有不同的地方,因为并没有这方面的标准,下面是三个大同小异的定义: 

1)数据字典是以数据库中数据基本单元为单位,按一定顺序排列,对其内容作详细说明的数据集。 
2)数据字典中存放着系统中所有数据的定义,即对所有数据库结构的描述。数据字典提供了对数据库数据描述的集中管理手段。 
3_数据字典是一个定义应用程序中使用的所有数据元素和结构的含义、类型、数据大小、格式、度量单位、精度以及允许取值范围的共享仓库。



2、数据字典的作用是什么? 

确保开发人员使用统一的数据定义; 
数据字典中有关系统的详细信息是系统设计、系统实施与维护的重要依据。 

我印象最深的是,数据字典作为最终文档的一部分提交给用户,用在系统维护中。



3、数据字典用在信息系统分析与设计的哪个阶段? 

不仅在系统的分析与设计过程中有用,而且在实现阶段经常被用来建立数据库。


数据字典之定义 

数据库的重要部分是数据字典。它存放有数据库所用的有关信息,对用户来说是一组只读的表。数据字典内容包括:

数据库中所有模式对象的信息,如表、视图、簇、及索引等。

分配多少空间,当前使用了多少空间等。

列的缺省值。

约束信息的完整性。

用户的名字。

用户及角色被授予的权限。

用户访问或使用的审计信息。

其它产生的数据库信息。

数据库数据字典是一组表和视图结构。它们存放在SYSTEM表空间中。

数据库数据字典不仅是每个数据库的中心。而且对每个用户也是非常重要的信息。用户可以用SQL语句访问数据库数据字典。 

数据字典定义以及组成  

数据字典定义  

数据字典(Data dictionary)是一种用户可以访问的记录数据库和应用程序元数据的目录。主动数据字典是指在对数据库或应用程序结构进行修改时,其内容可以由DBMS自动更新的数据字典。被动数据字典是指修改时必须手工更新其内容的数据字典。 
  数据字典是一个预留空间,一个数据库,这是用来储存信息数据库本身。 
  数据字典可能包含的信息,

例如: 
  数据库设计资料 
  储存的SQL程序 
  用户权限 
  用户统计 
  数据库的过程中的信息 
  数据库增长统计 
  数据库性能统计 
  数据字典则是系统中各类数据描述的集合,是进行详细的数据收集和数据分析所获得的主要成果. 
  数据字典通常包括数据项\数据结构\数据流\数据存储和处理过程五个部分. 
  数据字典是关于数据的信息的集合,也就是对数据流图中包含的所有元素的定义的集合. 
  数据字段还有另一种含义,是在数据库设计时用到的一种工具,用来描述数据库中基本表的设计,主要包括字段名、数据类型、主键、外键等描述表的属性的内容。 
编辑本段
数据字典的组成
  数据字典的组成: 
  1、数据项 
  2、数据结构 
  3、数据流 
  4、数据存储 
  5、处理过程 
  数据字典 
  数据库的重要部分是数据字典。它存放有数据库所用的有关信息,对用户来说是一组只读的表。数据字典内容包括: 
  1、数据库中所有模式对象的信息,

         如表、视图、簇、及索引等。 
  2、分配多少空间,当前使用了多少空间等。 
  3、列的缺省值。 
  4、约束信息的完整性。 
  5、用户的名字。 
  6、用户及角色被授予的权限。 
  7、用户访问或使用的审计信息。 
  8、其它产生的数据库信息。 
  数据库数据字典是一组表和视图结构。它们存放在SYSTEM表空间中。 
  数据库数据字典不仅是每个数据库的中心。而且对每个用户也是非常重要的信息。用户可以用SQL语句访问数据库数据字典。 
  关于数据的信息集合,是一种用户可以访问的记录数据库和应用程序元数据的目录,是对数据库内表信息的物理与逻辑的说明 
编辑本段
数据字典-数据库数据字典
  是一组表和视图结构。它们存放在SYSTEM表空间中。 
  数据库数据字典不仅是每个数据库的中心。而且对每个用户也是非常重要的信息。用户可以用SQL语句访问数据库数据字典 
  数据字典是关于数据的信息的集合,也就是对数据流图中包含的所有元素的定义的集合. 
  组成: 
  1、数据项 
  2、数据结构 
  3、数据流 
  4、数据存储 
  5、处理过程

8.1.3 数据字典()

数据字典的作用是对数据流图中的各种成分进行详细说明,作为数据流图的细节补充,和数据流图一起构成完整的系统需求模型。数据字典一般应包括对数据项,数据结构、数据存储和数据处理的说明。以下列出本系统的主要数据字典条目。

1. 数据项条目

数据项编号:D01-001

数据项名称:凭证编号

      名:凭证流水号

    名:PZBH

据类 型:数值型

      度:4

值范 围:1~9999

其余略。

 

2. 数据结构条目

数据结构编号:DS01-003

数据结构名称:会计分录

        名:分录

        述:记帐凭证的基本组成成分

        成:科目代码+借贷方向+金额

其余略。

 

3. 数据存储条目

数据存储编号:F01

数据存储名称:记账凭证

        源:由凭证处理产生

        成:凭证日期+凭证类别+凭证编号+附件张数+

{会计分录}+制证+主管+审核

4.数据处理条目

 

加工编号

P2.1

加工名称

记现金日记账

流入数据流:记账凭证

流出数据流:现金日记账

处理周期:每日一次

处理逻辑:

如果   记账凭证已经通过审核

对记账凭证中的所有收付凭证执行以下操作:

从记帐凭证中取收付凭证,判断会计分录的科目,若为现金科目,则登记现金日记账。登帐方法如下:

将凭证的日期,凭证类别,摘要分别记入日记账簿相应的栏内,根据发生方向,将金额记入帐簿的借方或贷方栏内,结出余额记入帐簿的余额栏内。将记帐凭证的相应分录作上已经记帐的标记。

否则

    停止记账

理解什么是数据字典

理解什么是数据字典

每个Oracle数据库包括一个被称为“元数据”的集合,或者说包含用来描述数据库有关数据结构的数据。包含这些元数据的表和视图称为Oracle数据字典。   
  数据字典中有前缀V$或GV$的表是动态表,它们会不断更新以反映出Oracle数据库当前的状态。静态数据字典表都有一个形如DBA_、ALL_或USER_的前缀,表示该视图中列出的对象范围。   
    
  数据库组件      数据库字典中的表和视图   
  数据库        V$DATABASE   
  表空间        DBA_TABLESPACE,DBA_DATA_FILES,   
             DBA_FREE_SPACE   
  控制文件       V$CONTROLFILE,V$PARAMETER,   
             V$CONTROLFILE_RECORD_SECTION   
  数据文件       V$DATAFILE,V$DATAFILE_HEADER,V$FILESTAT,   
             DBA_DATA_FILES   
  段          DBA_SEGMENTS   
  数据范围       DBA_EXTENTS   
  日志线程、日志组和  V$THREAD,V$LOG,V$LOGFILE   
  日志序列号   
  归档状态       V$DATABASE,V$LOG,V$ARCHIVED_LOG,   
             V$ARCHIVE_DEST   
  数据库实例      V$INSTANCE,V$PARAMETER,   
             V$SYSTEM_PARAMETER   
  内存结构       V$SGA,V$SGASTAT,V$DB_OBJECT_CACHE,V$SQL,   
             V$SQLTEXT,V$SQLAREA   
  后台进程       V$BGPROCESS,V$SESSION

-----------------------------------------------------------------------------

数据字典就是一个用描述数据库中表的字段名,字段长度,字段说明等信息的文挡;
--------------------------
数据词典是对数据库里字段的一种描述,说明
--------------------------
数据字典就是存储数据库中基本元素的一个集合!它可以存储基本表的数据结构,存储过程,等等...
-------------------------
数据字典是一张表,记录某些数据库的信息
-------------------------
每个编程环境都有两个基本成分:程序逻辑—— 程序需要进行的工作说明—— 及数据。可以在程序内部,或者持久稳固地在外部以变量的方式临时保存数据,如文件或者数据库中。传统的文件结构需要开发员进行理解,然后描述文件结构,以使程序可以适当地访问,并且处理文件的字段或者记录。但是,在Oracle关系型数据库内部,整个数据库结构(包括它的表、视图、索引、用户、安全规则等)存储在一组特殊的表及视图中,称其为数据字典。

Oracle数据字典由特殊的用户账户所拥有,称其为SYS。SYS账户与Unix系统的根超级用户是一样的。通常开发员将永远不需要与共享数据库进行连接,作为特权账户。甚至不鼓励数据库管理员使用SYS账户进行任何工作,但是仅有很少的操作需要该等级的能力。如果您既是开发人员,又是DBA,或许在Oracle数据库的个人复制上,需要理解当作为SYS进行连接的时候,进行交互式的工作的潜在危机。

另外一个关于Oracle数据字典的普通条目将它的表存储在一些特殊的表空间(如SYSTEM以及SYSAUX)中。在这些特殊的表空间中,永远不创建其他的应用程序数据库对象。

Oracle数据字典的关键在于可以使用相同的SQL语言,在数据库内部访问应用程序的数据结构,对其进行访问。通常,直接地访问字典限于SELECT语句(永远不针对字典对象发布INSERT、UPDATE或者DELETE语句)。通过特殊的SQL语句间接地修改数据字典,通常称其为数据处理语言(DML)命令。DML语句,如CREATE TABLE、DROP INDEX、GRANT等,需要特殊的许可。它们通常由开发机构中的DBA来执行,该机构在DBA及开发人员之间进行责任分配。为了建立并且维护自己的数据库环境,独立地进行工作的学生或者开发人员将必须学习SLQ DML命令。

Oracle数据字典

数据字典Oracle数据库安装之后,自动创建的一系列数据库对象。数据字典是Oracle数据库对象结构的元数据信息。熟悉和深入研究数据字典对象,可以很大程度的帮助我们了解Oracle内部机制。

 

Oracle字典视图包括四个层次,分别为X$内部表、基础数据字典表、数据字典视图和动态性能视图。

 

X$内部表

 

X$内部数据表的特征为以X$作为前缀,属于Oracle运行核心基础信息。X$数据表用于监控管理Oracle正常工作,维护核心功能。X$数据表含义、资源属于Oracle非公开保密信息。目前关于X$数据表的知识,都是诸多Oracle技术研究人员不懈努力探索的结果。X$数据表只能为SYS用户访问到,并且权限不能赋给其他用户。

 

 

SQL> show user;

User is "SYS" //当前用户为sys用户

 

SQL> desc x$bh;

Object x$bh does not exist.//使用desc描述x$bh

 

SQL> select count(*) from x$bh;//但是直接查询数据表x$bh,是有结果的

 

 COUNT(*)

----------

     9967

 

SQL> grant select on x$bh to scott;

 

grant select on x$bh to scott //不支持赋值

 

ORA-02030: 只能从固定的表/视图查询

 

SQL>

 

 

 

由于x$数据表的特殊性,给我们研究带来一些困难。比较常用的方法,是通过autotrace工具进行x$数据表作用的研究。

 

 

数据字典表

x$内部数据表的内容更倾向于维护Oracle实例正常工作,主要涉及到共享内存的管理和各个实例进程的工作。数据字典表($表)的内容用来记录数据表、索引、视图和数据文件等对象的内容。这部分字典表特征是以$结尾,如tab$、COL$和ts$等。

 

数据字典表是在数据库创建的时候,通过调用脚本创建。脚本在安装数据库之后,还保存在数据库服务器目录上。一般路径为$oracle_home/rdbms/admin,文件名为sql.bsq。sql.bsp是一个很重要的学习资源,其中定义了所有数据字典表的结构。

 

数据字典表是数据字典的基础,但是注意数据字典表的可读性较差。Oracle在设计数据字典表结构的时候,相对严格的遵守了范式规则,消除冗余。示例如下:

 

//以数据表空间tablespace数据字典为例

SQL> descts$;

Name         Type          Nullable Default Comments

------------- -------------- -------- ------- --------

TS#          NUMBER                                  

NAME         VARCHAR2(30)                            

OWNER#       NUMBER                                  

ONLINE$      NUMBER                                  

CONTENTS$    NUMBER                                  

UNDOFILE#    NUMBER        Y                        

UNDOBLOCK#   NUMBER        Y                        

 

SQL> select ts#, name,owner#, undofile# from ts$;

 

      TS# NAME                              OWNER# UNDOFILE#

---------- ------------------------------ ---------- ----------

        0 SYSTEM                                 0         0

        1 UNDOTBS1                               0         0

        2 SYSAUX                                 0         0

        3 TEMP                                   0         0

        4 USERS                                  0         0

        5 UNDOTBS2                               0         0

        6 EXAMPLE                                0         0

 

7 rows selected

//上面的结果中,owner#为一个数字类型的,不能直接使用,需要使用user$数据表进行解析;

 

SQL> select user#,name from user$ where user#=0;

 

    USER# NAME

---------- ------------------------------

        0 SYS

 

 

$数据字典是保存数据库结构的基础数据表。一般的DBA管理和信息获取,可以从后面的数据字典视图入手。

 

 

V$动态性能视图

 

v$动态视图是描述Oracle当前运行状态的一系列视图集合。这部分视图的特点是以v$开头,描述系统当前状态信息。常见常用的如v$session、v$session_wait(10g后,其中内容融入到v$session中)、v$lock和v$sysstat等。

 

v$视图传统上是代表系统当前状态的描述,也就是即时性视图。虽然可以描述当前系统中发生的瓶颈或者性能问题,但是当瓶颈接触之后,很难发现和分析过去一个事件点的系统状态和问题SQL。同时,如果需要对运行时间段的情况进行分析,采用时间段镜像snap技术也存在一些偶然性。

 

oracle10g开始,v$动态视图进入了一个新的时代,可以保存v$session的历史信息。ASH(Active Session History)技术就是每个一个间隔的时间段,保存当前动态视图的镜像进行保存,这些信息保存7天。借助ASH技术,Oracle提出了基于历史进行分析的AWR(Automatic Workload Report)报表。最后,从性能主动优化的出发点,提出了ADDM(Automatic Database Diagnostic Monitor)报告,提供智能化的数据库优化提示。这些方便的功能特性,全都是基于动态视图。

 

v$动态视图主要是针对SGA和数据库实例进程的显示。在这个过程中,Oracle使用了DMA(Direct Memory Access)技术,可以高效的获取这些分析数据。

 

 

数据字典视图

 

数据字典视图是建立在X$数据表和数据字典表之上的一个视图层。这个视图层还v$视图层一样,是在数据库创建的时候自动执行的脚本。这个脚本名为catalog.sql,位于$oracle_home/rdbms/admin里。

 

数据字典视图解决了数据字典表可读性差等一系列缺点,是适合方便使用的视图层。字典视图最大的一个特点就是清晰的前缀结构,分为dba、all、user三种。对于一个对象信息,如数据表,有dba_tables,all_tables和user_tables三个版本。

 

ü       user_对象视图:描述了当前用户schema下的对象;

ü       all_对象视图:描述了当前用户有权限访问到的所有对象的信息;

ü       dba_对象视图:包括了所有数据库对象的信息;

 

三层对象视图的视角在于owner的差异。通过不同的owner划分为不同的层次。user_视图中,是不包括owner列的。其他两类视图中,都有owner列表是对象的所属schema信息。

 

 

数据字典视图在Oracle角度上是公开的资源信息,所有的数据字典视图都可以在官方文档中找到对应的说明和解释。同时,这些视图都包括准确的comment信息。善于使用数据字典视图,可以帮助我们解决很多日常问题。

 

 

SQL> desc dba_tablespaces;

Name                    Type        Nullable Default Comments                                                            

------------------------ ------------ -------- ------- --------------------------------------------------------------------

TABLESPACE_NAME         VARCHAR2(30)                 Tablespace name                                         

BLOCK_SIZE              NUMBER                       Tablespace block size                                               

INITIAL_EXTENT          NUMBER      Y      Default initial extent size                                         

NEXT_EXTENT             NUMBER      Y        Default incremental extent size                                     

MIN_EXTENTS             NUMBER              Default minimum number of extents                                   

MAX_EXTENTS             NUMBER      Y      Default maximum number of extents                                   

PCT_INCREASE            NUMBER Y  Default percent increase for extent size                            

MIN_EXTLEN              NUMBER      Y  Minimum extent size for the tablespace                              

STATUS                  VARCHAR2(9) Y   Tablespace status: "ONLINE", "OFFLINE", or "READ ONLY"              

CONTENTS                VARCHAR2(9) Y      Tablespace contents: "PERMANENT", or "TEMPORARY"                    

LOGGING                 VARCHAR2(9) Y     Default logging attribute                                           

FORCE_LOGGING           VARCHAR2(3) Y     Tablespace force logging mode                                       

EXTENT_MANAGEMENT       VARCHAR2(10) Y   Extent management tracking: "DICTIONARY" or "LOCAL"                 

ALLOCATION_TYPE         VARCHAR2(9) Y               Type of extent allocation in effect for this tablespace             

PLUGGED_IN              VARCHAR2(3) Y                                                                                    

SEGMENT_SPACE_MANAGEMENT VARCHAR2(6) Y               Segment space management tracking: "AUTO" or "MANUAL"               

DEF_TAB_COMPRESSION     VARCHAR2(8) Y               Default compression enabled or not: "ENABLED" or "DISABLED"         

RETENTION               VARCHAR2(11) Y               Undo tablespace retention: "GUARANTEE", "NOGUARANTEE" or "NOT APPLY"

BIGFILE                 VARCHAR2(3) Y               Bigfile tablespace indicator: "YES" or "NO"                         

 

SQL>

 

这里要说明一下,并不是所有的对象都是有三层对象视图,有时候all_层视图是被省略掉的。比如我们之前在闪回中介绍的dba_recyclebin,就没有对应的all_层视图。

 

SQL> desc all_recyclebin;

Object all_recyclebin does not exist.

 

SQL> desc all_tablespaces;

Object all_tablespaces does not exist.

 

 

这个问题的解释也是可以接受的,一些对象是不存在授权的关系的。而且站在管理上看,一些对象可能还是有管理员dba或者对象创建者owner进行管理比较合适。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/22492385/viewspace-718298/,如需转载,请注明出处,否则将追究法律责任。

上一篇: ORA-01950
请登录后发表评论 登录
全部评论

注册时间:2012-03-09

  • 博文量
    61
  • 访问量
    61536