【Oracle】理解数据字典

最近在学习Oracle数据库,Oracle嘛emmmm上手有点难啊哈哈~于是根据老师给的课件整理了一下

数据字典的概述

一、概述

  • Oracle数据库的数据字典是在数据库创建的过程中创建的,由一系列表和视图构成,这些表和视图对于所有的用户(包括DBA),都是只读的。
  • 只有Oracle系统才可以对数据字典进行管理与维护。
  • 在Oracle数据库中,所有数据字典表和视图都属于SYS模式,存储于SYSTEM表空间中。

二、Oracle数据字典保存数据库本身的系统信息及所有数据库对象信息,包括:

  • 各种数据库对象的定义信息,包括表、视图、索引、同义词、序列、存储过程、函数、包、触发器及其他各种对象;
  • 数据库存储空间分配信息,如为某个数据库对象分配了多少空间,已经使用了多少空间等;
  • 数据库安全信息,包括用户、权限、角色、完整性等;
    数据库运行时的性能和统计信息;
  • 其他数据库本身的基本信息。

三、数据字典主要用途

  • Oracle通过访问数据字典获取用户、模式对象、数据库对象定义与存储等信息,以判断用户权限的合法性、模式对象的存在性及存储空间的可用性等;
  • 使用DDL语句修改数据库对象后,Oracle将在数据字典中记录所做的修改
  • 任何数据库用户都可以从数据字典只读视图中获取各种数据库对象信息
  • DBA可以从数据字典动态性能视图中获取数据库的运行状态,作为进行性能调整的依据。

数据字典的结构

数据字典结构分为:

  • 数据字典表
  • 数据字典视图

根据数据字典对象的虚实性不同,分为:

  • 静态数据字典
  • 动态数据字典

以下是它们的具体叙述:

  • 静态数据字典表
    静态数据字典表是在数据库创建过程中自动运行sql.bsq脚本创建的,由SYS用户所拥有,表中信息都是经过加密处理的。静态数据字典表的命名中通常包含 $ 符号。只有Oracle才能读/写这些静态数据字典表。例如,静态数据字典表tab$

  • 静态数据字典视图
    通过对静态数据字典表进行解密和处理,创建了一系列用户可读的静态数据字典视图。在数据库创建过程中,通过自动运行catalog.sql脚本创建静态数据字典视图及其公共同义词,并进行授权,如静态数据字典视图USER_TABLES

  • 动态数据字典表
    动态数据字典表是在数据库实例运行过程中由Oracle动态创建和维护的一系列“虚表”,在实例关闭时被释放。动态数据字典表中记录与数据库运行的性能相关的统计信息,因此又称为动态性能表。通常,动态性能表的命名以 X$ 开头。动态性能表由SYS用户所拥有,如动态性能表X$KSPPI

  • 动态数据字典视图
    在动态性能表上创建的视图称为动态数据字典视图,又称为动态性能视图。所有动态性能视图命名都以 V$ 开头,Oracle自动为这些视图创建了以 V$ 开头命名的公共同义词,因此动态性能视图又称为“ V$ 视图”,如动态性能视图V$DATAFILE

查询数据字典信息

  • 查询表dictionary,可以获得全部可以访问的数据字典表或数据字典视图的名称和解释;
  • 查询表dict_columns,可以获得全部可以访问的数据字典表或数据字典视图中的字段名称和解释。
SELECT * FROM dictionary;
SELECT * FROM dict_columns WHERE TABLE_NAME='USER_TABLES';

数据字典的使用

  • 静态数据字典表的使用
    静态数据字典表只能由Oracle进行维护,用户不能对这些表进行直接操作

  • 静态数据字典视图的使用
    通常,用户通过对静态数据字典视图的查询可以获取所需要的所有数据库信息。
    Oracle静态数据字典视图可以分为3类,各类视图具有独特的前缀.
    在这里插入图片描述

  • 动态性能表的使用
    动态性能表都属于SYS用户,Oracle使用这些表生成动态性能视图。

  • 动态性能视图的使用
    动态性能视图是SYS用户所拥有的,在默认情况下,只有SYS用户和拥有DBA角色的用户可以访问。
    与静态数据字典表和视图不同,在数据库启动的不同阶段只能访问不同的动态性能视图。 具体看下面:

    • 当数据库启动到NOMOUNT状态时:
      Oracle数据库打开初始化参数文件,分配SGA并启动后台进程,因此只能访问从SGA中获得信息的动态性能视图,如 V$ PARAMETER ,V$ SGA,V$ SESSION,V$ PROCESSE,V$ INSTANCE,V$ VERSION,V$ OPTION 等。

    • 当数据库启动到MOUNT状态时:
      Oracle打开控制文件,因此不仅能访问从SGA中获得信息的动态性能视图,还可以访问从控制文件中获得信息的动态性能视图,如V$ LOG,V$ LOGFILE,V$ DATAFILE,V$ CONTROLFILE,V$ DATABASE,V$ THREAD,V$DATAFILE_ HEADER等。

    • 当数据库完全启动后:
      可以访问V_$fixed_table表中所有的动态性能视图。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Oracle数据数据字典是一个包含Oracle数据库中所有对象的元数据信息的特殊数据库对象。它存储了数据库中的表、视图、索引、约束、触发器等各种对象的定义和属性信息。 数据字典Oracle数据库的一个重要组成部分,它存储在数据文件中,和其他数据库对象一样可以被备份和恢复。数据字典的存储结构是基于表和索引的,这使得它可以高效地进行查询和检索。 通过查询数据字典,我们可以获取到数据库中的各种对象的定义、属性、依赖关系、统计信息等信息。这些信息对于数据库管理员和开发人员来说非常重要,可以帮助他们更好地理解和管理数据库。 在Oracle数据库中,我们可以使用SQL语句查询数据字典。例如,我们可以使用以下语句查询数据库中的表信息: SELECT table_name, tablespace_name, num_rows FROM dba_tables; 这个查询语句会返回数据库中的所有表的名称、所属表空间和行数。 此外,我们还可以使用数据字典来查询索引、视图、约束、触发器等对象的信息。通过查询数据字典,我们可以了解数据库中的对象之间的依赖关系,比如一个表被哪些视图引用、一个触发器对哪些表进行操作等。 总之,Oracle数据数据字典是一个非常有用的工具,它存储了数据库中各种对象的元数据信息,可以帮助数据库管理员和开发人员更好地管理和理解数据库。通过查询数据字典,我们可以获取到数据库中的对象的定义、属性、依赖关系等信息,提供了非常重要的参考和帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值