`

racle数据字典dictionary

 
阅读更多
了解Oracle数据字典dictionary

数据字典
用户表是由用户创建并包含业务数据的一些表,如 EMPLOYEES。另外,Oracle DB 中有一个由表和视图组成的集合,这个集合被称为数据字典。此集合由 Oracle Server 创建和 维护,其中包含关于数据库的信息。数据字典是结构化的表和视图,就像其它数据库数据一样。数据字典不仅是每个 Oracle DB 的核心,而且还是所有用户(从最终用户到应用程序设计者和数据库管理员)的一个重要工具。
使用 SQL 语句可访问数据字典。因为数据字典是只读的,所以只能对它的表和视图发出查询命令。
可以通过在基于字典表的字典视图中进行查询来查找如下信息:
数据库中所有方案对象(表、视图、索引、同义词、序列、过程、函数、程序包、 触发器等等)的定义
列的默认值
完整性约束条件信息
Oracle 用户的名称
授予每个用户的权限和角色
其它常规数据库信息


数据字典结构
基础基表中存储了相关数据库的信息。只有 Oracle Server 可写入和读取这些表。用户很少直接访问这些表。
在若干个视图中汇总并显示在数据字典基表中存储的信息。这些视图使用联接和 WHERE 子句将基表数据解码为有用的信息(如用户名或表名),使这些信息更易于理解。大多数用户可以访问视图,但不能访问基表。
Oracle 用户 SYS 拥有数据字典的所有基表以及用户可访问的视图。Oracle 用户在任何时候都不应更改(UPDATE、DELETE 或 INSERT)在 SYS 方案中包含的任何行或方案对象,因为此类操作会破坏数据完整性。


数据字典由一些视图集组成。在许多情况下,一个视图集由包含相似信息并用前缀相互 区分的三个视图组成。例如,名为 USER_OBJECTS、ALL_OBJECTS 和 DBA_OBJECTS 的三个视图。
这三个视图包含关于数据库对象的相似信息,只是范围有所不同。USER_OBJECTS 包含关于您拥有或创建的对象的信息。ALL_OBJECTS 包含关于您可访问的所有对象的信息。DBA_OBJECTS 包含关于所有用户拥有的所有对象的信息。对于前缀为 ALL 或 DBA 的 视图,在名为 OWNER 的视图中通常有一个附加列,用来标识拥有对象的用户。
此外,还有一个前缀为 v$ 的视图集。这些视图本质上是动态的,其中存储了关于性能 的信息。动态性能表不是实际存在的表,大多数用户都不能访问此类表。但是,数据库 管理员可以使用这些表进行查询和创建视图,然后授予其他用户对这些视图的访问权限。


如何使用字典视图
为了熟悉字典视图,可以使用名为 DICTIONARY 的字典视图。该视图包含您可访问的 每个字典视图的名称和简要描述。
可以通过编写查询来搜索关于特定视图名的信息,也可以搜索 COMMENTS 列中的某个 词或词组。在上面显示的示例中对 DICTIONARY 视图进行了描述。该视图含有两列。SELECT 语句会检索关于名为 USER_OBJECTS 的字典视图的信息。USER_OBJECTS 视图包含关于您拥有的所有对象的信息。
您可以通过编写查询来搜索 COMMENTS 列中的某个词或词组。例如,下面的查询会返回您可访问的所有视图的名称,这些视图的 COMMENTS 列中包含词 columns:
SELECT table_name
FROM dictionary
WHERE LOWER(comments) LIKE '%columns%';
注:数据字典中的名称均为大写。


USER_OBJECTS 和 ALL_OBJECTS 视图
在 USER_OBJECTS 视图中进行查询可查看您方案中所有对象的名称和类型。此视图中有以下几列:
OBJECT_NAME:对象的名称
OBJECT_ID:对象的字典对象编号
OBJECT_TYPE:对象的类型(如 TABLE、VIEW、INDEX、SEQUENCE)
CREATED:创建对象的时间戳
LAST_DDL_TIME:使用数据定义语言 (DDL) 命令上次对对象进行修改时的时间戳
STATUS:对象的状态(VALID、INVALID 或 N/A)
GENERATED:此对象名称是否是系统生成的?(Y|N) 
注:以上只列出了部分列。为了查看完整列表,请参阅《Oracle 数据库参考》中的“USER_OBJECTS”。
此外,在 ALL_OBJECTS 视图中进行查询可查看您拥有访问权限的所有对象的列表。


USER_OBJECTS 视图
该示例显示此用户所拥有的所有对象的名称、类型、创建日期和状态。
OBJECT_TYPE 列的值可以为 TABLE、VIEW、SEQUENCE、INDEX、PROCEDURE、FUNCTION、PACKAGE 或 TRIGGER。
STATUS 列的值可以为 VALID、INVALID 或 N/A。虽然表始终有效,但视图、过程、 函数、程序包和触发器可能无效。
CAT 视图
为了简化查询和输出,可以在 CAT 视图中进行查询。此视图只包含两列:TABLE_NAME 和 TABLE_TYPE。其中提供所有 INDEX、TABLE、CLUSTER、VIEW、SYNONYM、SEQUENCE 或 UNDEFINED 对象的名称。
注:CAT 是 USER_CATALOG 的同义词,USER_CATALOG 是一个视图,其中列出了用户拥有的各种表、视图、同义词和序列。


表信息
可以使用 USER_TABLES 视图来获得所有表的名称。USER_TABLES 视图包含关于表的 信息。除了提供表名外,该视图还包含关于存储空间的详细信息。
TABS 视图是 USER_TABLES 视图的同义词。在该视图中进行查询可查看您所拥有表的 列表:
SELECT table_name
FROM  tabs;
注:为了查看 USER_TABLES 视图中列的完整列表,请参阅《Oracle 数据库参考》中的“USER_TABLES”。
此外,在 ALL_TABLES 视图中进行查询可查看您拥有访问权限的所有表的列表。



列信息
在 USER_TAB_COLUMNS 视图中进行查看可查找关于表中各个列的详细信息。虽然 USER_TABLES 视图提供关于表名和存储空间的信息,但在 USER_TAB_COLUMNS 视图中可找到详细的列信息。
此视图包含以下信息:
列名
列数据类型
数据类型的长度
NUMBER 列的精度和小数位数
是否允许空值(即列上是否存在 NOT NULL 约束条件?)
默认值
注:为了查看 USER_TAB_COLUMNS 视图中列的完整列表和描述,请参阅《Oracle 数据库参考》中的“USER_TAB_COLUMNS”。


通过在 USER_TAB_COLUMNS 表中进行查询,可以查找关于列的详细信息,如列的名称、数据类型、数据类型长度、空值约束条件和默认值。
给出示例中显示了 EMPLOYEES 表的列、数据类型、数据长度和空值约束条件。请注意,此信息与 DESCRIBE 命令产生的输出相似。
要查看关于设置为“未使用”列的信息,请使用 USER_UNUSED_COL_TABS 字典视图。
注:数据字典中对象的名称均为大写。


约束条件信息
可以找到约束条件名称、约束条件类型、约束条件适用的表名称、检查约束条件的条件、外键约束条件信息、外键约束条件删除规则、约束条件状态以及其它类型的约束条件信息。
注:为了查看 USER_CONSTRAINTS 视图中列的完整列表和描述,请参阅《Oracle 数据库参考》中的“USER_CONSTRAINTS”。


USER_CONSTRAINTS:示例
在显示示例中,在 USER_CONSTRAINTS 视图中进行查询的目的是为了查找 EMPLOYEES 表上约束条件的名称、类型、检查条件、外键引用的唯一约束条件的名称、外键删除规则以及状态。
CONSTRAINT_TYPE 可以是:
C(表上的检查约束条件,或 NOT NULL)
P(主键)
U(唯一关键字)
R(引用完整性)
V(视图上有检查选项)
O(视图为只读)
DELETE_RULE 可以是:
CASCADE:如果删除父记录,还会删除子记录
SET NULL:如果删除父记录,请将各自的子记录更改为空值
NO ACTION:只有不存在子记录时才能删除父记录 


在 USER_CONS_COLUMNS 中进行查询
要查找约束条件适用的列的名称,请在 USER_CONS_COLUMNS 字典视图中进行查询。 此视图提供约束条件所有者的名称、约束条件名称、有约束条件的表、有约束条件的列的名称以及列或属性在对象定义中的原始位置。
注:一个约束条件可适用于多个列。
此外,可以编写 USER_CONSTRAINTS 和 USER_CONS_COLUMNS 之间的一个联接来创建两个表的自定义输出。



视图信息
创建视图之后,可以通过在名为 USER_VIEWS 的数据字典视图中进行查询来查看视图名称和视图定义。构成视图的 SELECT 语句的文本会存储在 LONG 列中。LENGTH 列指定了 SELECT 语句中的字符数。默认情况下,在 LONG 列中进行选择时,只会显示列值的前 80 个字符。要在 SQL*Plus 中看到更多的字符(多于 80 个),请使用 SET LONG 命令:
SET LONG 1000
在幻灯片示例中:
1.        显示了 USER_VIEWS 的各个列。请注意,只列出了其中一部分。
2.        对视图名称进行检索。
3.        显示字典中 EMP_DETAILS_VIEW 的 SELECT 语句。
使用视图访问数据
在使用视图访问数据时,Oracle Server 会执行以下操作:
在数据字典表 USER_VIEWS 中检索视图定义。
检查视图基表的访问权限。
将视图查询转换为对一个或多个基础基表的相应操作。即,从基表中检索数据或对 基表进行更新。


序列信息
在 USER_SEQUENCES 视图中描述了您拥有的所有序列。在创建序列时,可以指定要存储在 USER_SEQUENCES 视图中的标准。此视图有如下列:
SEQUENCE_NAME:序列的名称。
MIN_VALUE:序列的最小值。
MAX_VALUE:序列的最大值。
INCREMENT_BY:序列递增的增量。
CYCLE_FLAG:在达到限制时序列是否循环使用?
ORDER_FLAG:序列号是否是按顺序生成的?
CACHE_SIZE:要高速缓存的序列号的数量。
LAST_NUMBER:写入磁盘的最后一个序列号。如果序列使用高速缓存,则写入磁盘的编号是序列高速缓存中的最后一个编号。此编号可能大于用过的最后一个序列号。



确认序列
创建序列之后,就会在数据字典中记录序列。因为序列是一种数据库对象,所以可在 USER_OBJECTS 数据字典表中标识它。
还可以通过在 USER_SEQUENCES 数据字典视图中进行选择来确认序列的设置。
不增加序列值时查看下一个可用序列值
如果序列是使用 NOCACHE 创建的,则在 USER_SEQUENCES 表中进行查询就可以在不 增加序列值的情况下查看下一个可用序列值。



索引信息
在 USER_INDEXES 视图中进行查询可找到索引名、创建了索引的表名,还可确认索引 是否唯一。
注:为了查看 USER_INDEXES 视图中列的完整列表和描述,请参阅《Oracle Database Reference 11g Release 2 (11.1)》中的“USER_INDEXES”。



USER_INDEXES:示例
在幻灯片示例 a 中,在 USER_INDEXES 视图中进行查询的目的是为了查找索引名、创建了索引的表名,以及确认索引是否唯一。
在幻灯片示例 b 中,注意 Oracle Server 给为 PRIMARY KEY 列创建的索引提供了一个 通用名称。EMP_LIB 表是使用以下代码创建的:
CREATE TABLE EMP_LIB
   (book_id NUMBER(6)PRIMARY KEY ,     title VARCHAR2(25),
    category VARCHAR2(20));





在 USER_IND_COLUMNS 中进行查询
在 USER_IND_COLUMNS 字典视图中提供了各种信息,如索引名、索引表名、索引中列的名称以及索引中列的位置。
在幻灯片示例中,emp_test 表和 LNAME_IDX 索引是使用以下代码创建的:
CREATE TABLE emp_test AS SELECT * FROM employees;
CREATE INDEX LNAME_IDX ON emp_test(Last_Name);




同义词信息
在 USER_SYNONYMS 字典视图中描述了专用同义词(您所拥有的同义词)。
在这个视图进行查询可以查找您的同义词。在 ALL_SYNONYMS 中进行查询,可找到为您提供的所有同义词的名称以及这些同义词适用的对象。
此视图有如下列:
SYNONYM_NAME:同义词的名称
TABLE_OWNER:同义词引用的对象的所有者
TABLE_NAME:同义词引用的表或视图的名称
DB_LINK:数据库链接引用的名称(如果有)


在表中添加注释
使用 COMMENT 语句可为列、表、视图或快照添加最多 4,000 个字节的注释。注释会存储在数据字典中。可以在以下数据字典视图的 COMMENTS 列中查看注释:
ALL_COL_COMMENTS
USER_COL_COMMENTS
ALL_TAB_COMMENTS
USER_TAB_COMMENTS
语法 
COMMENT ON {TABLE table | COLUMN table.column}
    IS 'text';
在该语法中:
table        是表名称
column        是表中列的名称
text        是注释文本
将注释文本设置为空字符串 ('') 就可以从数据库中删除注释:
  COMMENT ON TABLE  employees IS '';
分享到:
评论

相关推荐

    ORACLE数据字典(很实用,很适合DBA、开发运维人员、大学生)

    **数据字典**(Data Dictionary)是指对数据库中的各个数据对象及其属性进行详细描述的集合,它为数据库设计者、开发者、运维人员乃至最终用户提供了一种有效管理与理解数据库结构的方式。 #### 二、数据字典在Oracle...

    oracle字典表 深入了解Oracle数据字典

    ### Oracle 数据字典详解 #### 一、引言 Oracle 数据库系统中,数据字典起着至关重要的作用。它不仅记录了数据库的各种元数据,还提供了管理与维护数据库的有效手段。通过深入学习数据字典,我们可以更好地理解和...

    ORACLE数据字典

    常用静态数据字典视图:Dictionary(Dict)、DBA_objects、DBA_tables、DBA_tab_columns、DBA_views、DBA_synonyms、DBA_recyclebin、DBA_constraints、DBA_indexes、DBA_db_links、DBA_mviews、DBA_triggers、DBA_...

    oracle数据字典

    数据字典(Data Dictionary)是Oracle数据库内部维护的一系列特殊表和视图的集合,用于存储关于数据库结构的元数据。这些元数据包括但不限于:表、索引、视图、用户、权限、存储过程等所有数据库对象的定义信息。...

    从四大方面介绍Oracle的数据字典

    Oracle的数据字典主要由两部分构成:系统表(System Tables)和数据字典视图(Dictionary Views)。系统表是实际存储元数据信息的物理表,它们通常以“DBA_”、“ALL_”或“USER_”开头,例如DBA_OBJECTS、ALL_USERS...

    ORACLE完整数据字典

    ### ORACLE完整数据字典详解 #### 一、概述 Oracle 数据库系统是业界领先的数据库管理系统之一,提供了强大而全面的数据管理功能。其中,“Oracle 完整数据字典”是数据库内部存储的重要元数据集合,它包含了关于...

    ORACLE系统数据字典

    Oracle系统数据字典是Oracle数据库中的一个重要组成部分,它包含了关于数据库结构、对象和操作的元数据。这个数据字典由一系列视图和表组成,这些视图和表存储了数据库的状态信息,例如用户、表、索引、权限、过程、...

    SQL实验六 Oracle数据字典和ODBC

    在Oracle数据库管理系统中,数据字典(Data Dictionary)扮演着至关重要的角色。它是一个存储在数据库内部的特殊知识库,包含了所有对象(如表、视图、索引等)的元数据信息,以及与安全性相关的详细资料。数据字典...

    Oracle数据字典

    查询数据字典通常通过`SELECT * FROM dictionary`来获取所有可用的视图及其描述。在不同的数据库状态(NOMOUNT、MOUNT、OPEN)下,可访问的动态性能视图有所不同,随着数据库状态的变化,可获取的信息范围也会相应...

    ORACLE中数据字典的使用方法

    数据字典(Data Dictionary)在Oracle数据库中扮演着非常关键的角色。它是一个存储数据库和应用程序元数据的目录,这些元数据包括了数据库对象(如表、视图、索引等)的定义及其属性。数据字典分为两种类型:主动...

    DataDictionary(数据字典工具)

    查看数据库数据字典,包括表、视图、索引、存储过程等内容; 支持SQL Server和Oracle两大商业数据库; 能将数据字典导出为Html、XML、Word等文件格式; 免费注册、免费使用; 没有注册,会定时弹出About窗口。

    ORACLE sqlplus命令+数据字典的使用

    ### ORACLE sqlplus命令与数据字典的使用详解 #### 一、ORACLE的启动与关闭 在管理ORACLE数据库时,了解如何正确地启动和关闭数据库是非常重要的。以下是两种不同环境下的操作方法: ##### 1. 单机环境下启动与...

    Data dictionary for oracle 2.0

    "Data Dictionary for Oracle 2.0"是一个第三方工具,旨在帮助数据库管理员和开发人员更方便地访问和理解Oracle数据库的数据字典。这个工具可能提供了图形化的用户界面,使得查询和分析元数据变得更加直观和高效。它...

    推荐 Quest公司提供的Oracle字典查看工具

    Oracle字典是数据库的核心组成部分,存储了关于数据库对象、权限、表空间、索引、触发器等所有信息。这些信息以数据字典表和视图的形式存在,对于DBA(数据库管理员)和开发人员来说,理解并能够有效利用这些信息是...

    Introduction_data_dictionary.rar_oracle

    《Introduction_data_dictionary》这本书可能详细介绍了如何理解和利用Oracle的数据字典。通过阅读这本书,你可以学习到以下关键知识点: 1. 数据字典的概念:数据字典是数据库的元数据,即关于数据的数据,如表...

    Oracle的数据字典的查询.doc

    1. **导航图**:DICTIONARY(同义词DICT)和DICT_COLUMNS这两个视图提供了数据字典的基本结构和列信息,帮助用户了解数据字典的构成。 2. **对象信息**:包括表(及列)、视图、同义词和序列等数据库对象的详细信息...

    DATA_DICTIONARY.zip

    "DATA_DICTIONARY.zip"压缩包中的资源,正是面向那些需要深入理解Oracle数据字典并进行数据导出的用户。本文将详细介绍这些资源的内容,并探讨如何利用它们来提升数据库管理工作效率。 1. 数据字典项(DATA_DIC_...

    Commands for Querying Oracle Data Dictionary Tables

    在IT领域,尤其是在数据库管理与查询方面,Oracle数据字典表是系统管理员和数据库开发者的重要资源。这些表提供了关于数据库实例中的所有对象的详细信息,包括但不限于表、视图、索引、用户、角色等。以下是从给定的...

    MFC下的数据字典字典管理系统

    本项目“MFC下的数据字典管理系统”是一个基于MFC的典型实例,它涉及到了数据库的设计与管理,特别是数据字典的实现。 数据字典是数据库管理系统中的一个重要组成部分,它记录了关于数据库中所有数据的信息,如数据...

    如何有效的利用数据字典

    数据字典在数据库管理中扮演着至关重要的角色,特别是在Oracle数据库系统中。Oracle的数据字典是由sys用户下的各种表和视图组成,它记录了关于数据库的全面信息,包括用户信息、权限设置、数据对象详情、表的约束...

Global site tag (gtag.js) - Google Analytics