Oracle-数据字典解读

简介: Oracle-数据字典解读

概述


官方文档

Oracle数据库字典通常是在创建和安装数据库时被创建的,Oracle数据字典是Oracle数据库系统工作的基础,没有数据字典的支持,Oracle数据库系统就不能进行任何工作。数据字典中的表是不能直接被访问的,但是可以访问数据字典中的视图。


Oracle 数据字典是有表和视图组成,它们存放在 SYSTEM 表空间中, 数据字典中的表是不能直接被访问的,但是可以访问数据字典中的视图。


Oracle字典视图包括四个层次,分别为X$内部表、基础数据字典表、数据字典视图和动态性能视图(v$或者GV$开头)。


20161121224707537.png



Not all views sets have three members. For example, the data dictionary

contains a DBA_LOCK view but no ALL_LOCK view.


查看全部的数据字典 dictionary


Oracle 11g中数据字典视图2577个,神仙也记不住,但是有个dictionary视图,该视图里记录了所有的数据字典视图的名称。所以当我们需要查找某个数据字典而又不知道这个信息在哪个视图里的时候,就可以在dictionary视图里找。该视图还有个同名词dict。

select * from dict ORDER BY TABLE_NAME;
SELECT * FROM DICTIONARY ORDER BY TABLE_NAME;

同义词视图

select OWNER,SYNONYM_NAME,TABLE_NAME from dba_synonyms  ;


我们可以看到 v$ 正好是v_$的同义词,验证了之前的关于oracle性能视图的理论。


20161121230851821.png

SQL> select OWNER,SYNONYM_NAME,TABLE_NAME from dba_synonyms a where  a.table_name='DICTIONARY' ;
OWNER                 SYNONYM_NAME         TABLE_NAME
---------------     ----------------       ----------------- 
PUBLIC                  DICTIONARY        DICTIONARY
PUBLIC                  DICT              DICTIONARY


数据字典的内容


  • 1,数据库中所有模式对象的信息,如表、视图、簇、及索引等。
  • 2,分配多少空间,当前使用了多少空间等。
  • 3,列的缺省值。
  • 4,约束信息的完整性。
  • 5,Oracle 用户的名字。
  • 6,用户及角色被授予的权限。
  • 7,用户访问或使用的审计信息。
  • 8,其它产生的数据库信息。


数据字典分类


数据字典分为 数据字典表 和 数据字典视图


数据字典表

数据字典表里的数据是 Oracle 系统存放的系统数据,而普通表存放的是用户的数据。


为了方便的区别这些表,数据字典表的名字都是用”$”结尾, 这些表属于 SYS用户,只有 Oracle 能够进行读写。


数据字典表由$ORACLE_HOME/rdbms/admin/sql.bsq 脚本创建.


SYS 用户下的这些数据字典表,存放在 system 表空间下面, 表名都用”$”结尾.


为了便于用户对数据字典表的查询, Oracle 对这些数据字典都分别建立了用户视图, 这样即容易记住, 还隐藏了数据字典表表之间的关系, Oracle 针对这些对象的范围,分别把视图命名为 DBA_XXXX, ALL_XXXX 和 USER_XXXX。


数据字典视图

动态性能视图由脚本: $ORACLE_HOME/rdbms/admin/catalog.sql 创建

静态数据字典(静态性能视图)

Views with the Prefix DBA_


包括了所有数据库对象的信息;


Views with the prefix DBA_ show all relevant information in the entire database.

DBA_ views are intended only for administrators.


前提是当前用户具有访问这些数据库的权限,一般来说必须具有管理员权限。

SELECT OWNER, OBJECT_NAME, OBJECT_TYPE FROM
DBA_OBJECTS ORDER BY OWNER, OBJECT_NAME;

Views with the Prefix ALL_

当前用户有权限访问到的所有对象的信息;

与user_*相比,all_* 并不需要拥有该对象,只需要具有访问该对象的权限即可

SELECT OWNER, OBJECT_NAME, OBJECT_TYPE FROM
ALL_OBJECTS ORDER BY OWNER, OBJECT_NAME;


Views with the Prefix USER_

当前用户schema下的对象;

SELECT OBJECT_NAME, OBJECT_TYPE FROM USER_OBJECTS
ORDER BY OBJECT_NAME;


动态数据字典(动态性能视图)


除了静态数据字典中三类视图, 其他的字典视图中主要的是 V$视图,之所以这样叫是因为他们都是以 V$或 GV$开头的。


这些视图会不断的进行更新,从而提供了关于内存和磁盘的运行情况,所以我们只能对其进行只读访问而不能修改它们。


V$视图是基于 X$虚拟视图的。V$视图是 SYS 用户所拥有的,在缺省状况下,只有 SYS 用户和拥有 DBA 系统权限的用户可以看到所有的视图,没有 DBA 权限的用户可以看到 USER_和 ALL_视图,但不能看到 DBA_视图。


与 DBA_,ALL,和 USER_视图中面向数据库信息相反,这些视图可视的给出了面向实例的信息。


更多请查看 Oracle-动态性能视图解读

相关文章
|
3天前
|
Oracle 关系型数据库 Linux
【YashanDB 知识库】通过 dblink 查询 Oracle 数据时报 YAS-07301 异常
某客户在使用 YashanDB 通过 yasql 查询 Oracle 数据时,遇到 `YAS-07301 external module timeout` 异常,导致 dblink 功能无法正常使用,影响所有版本。问题源于操作系统资源紧张,无法 fork 新子进程。解决方法包括释放内存、停掉不必要的进程或增大进程数上限。分析发现异常原因为系统调用 fork() 失败。经验总结:优化日志记录,提供更多异常信息。
|
2天前
|
Oracle 关系型数据库 Linux
【YashanDB 知识库】通过 dblink 查询 Oracle 数据时报 YAS-07301 异常
客户在使用 YashanDB 通过 yasql 查询 Oracle 数据时,遇到 `YAS-07301 external module timeout` 异常,导致 dblink 功能无法正常使用,影响所有 YashanDB 版本。原因是操作系统资源紧张,无法 fork 新子进程。解决方法包括释放内存、停掉不必要的进程或增大进程数上限。分析发现异常源于 system() 函数调用失败,返回 -1,通常是因为 fork() 失败。未来 YashanDB 将优化日志信息以更好地诊断类似问题。
|
7月前
|
SQL 运维 Oracle
【迁移秘籍揭晓】ADB如何助你一臂之力,轻松玩转Oracle至ADB的数据大转移?
【8月更文挑战第27天】ADB(Autonomous Database)是由甲骨文公司推出的自动化的数据库服务,它极大简化了数据库的运维工作。在从传统Oracle数据库升级至ADB的过程中,数据迁移至关重要。
111 0
|
4月前
|
存储 Oracle 关系型数据库
【赵渝强老师】Oracle的还原数据
Oracle数据库中的还原数据(也称为undo数据或撤销数据)存储在还原表空间中,主要用于支持查询的一致性读取、实现闪回技术和恢复失败的事务。文章通过示例详细介绍了还原数据的工作原理和应用场景。
【赵渝强老师】Oracle的还原数据
|
4月前
|
SQL Oracle 关系型数据库
【赵渝强老师】Oracle的联机重做日志文件与数据写入过程
在Oracle数据库中,联机重做日志文件记录了数据库的变化,用于实例恢复。每个数据库有多组联机重做日志,每组建议至少有两个成员。通过SQL语句可查看日志文件信息。视频讲解和示意图进一步解释了这一过程。
|
4月前
|
SQL Oracle 关系型数据库
【赵渝强老师】Oracle的数据文件
在Oracle数据库中,数据库由多个表空间组成,每个表空间包含多个数据文件。数据文件存储实际的数据库数据。查询时,如果内存中没有所需数据,Oracle会从数据文件中读取并加载到内存。可通过SQL语句查看和管理数据文件。附有视频讲解及示例。
|
5月前
|
Oracle 关系型数据库 数据库
oracle数据创建同义词
oracle数据创建同义词
74 0
|
7月前
|
SQL 监控 Oracle
Oracle数据误删不用怕,跟我来学日志挖掘
Oracle数据误删不用怕,跟我来学日志挖掘
137 0
|
7月前
|
SQL Oracle 关系型数据库
Oracle误删数据怎么恢复?
Oracle误删数据怎么恢复?
79 0
|
7月前
|
SQL Oracle Java
实时计算 Flink版产品使用问题之采集Oracle数据时,为什么无法采集到其他TABLESPACE的表
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。

推荐镜像

更多