【数据库管理】⑩数据字典

打印 上一主题 下一主题

主题 969|帖子 969|积分 2907


 1. 数据字典的概述

   数据字典(Data Dictionary)是数据库管理系统中的一个重要构成部分,它是一个存储数据库元数据的聚集,包含了数据库中所有对象的定义和描述信息。数据字典可以资助用户了解数据库中的各种对象和数据结构,以及它们之间的关系和依赖关系。
  数据字典通常包含以下信息:
  

  • 数据库对象的定义和描述信息,包罗表、视图、索引、存储过程、触发器等。
  • 数据库对象的属性信息,包罗对象的名称、范例、巨细、创建时间、修改时间等。
  • 数据库对象之间的关系和依赖关系,包罗表之间的关系、视图和表之间的关系、索引和表之间的关系等。
  • 数据库用户和权限信息,包罗用户的名称、脚色、权限等。
  • 数据库参数和配置信息,包罗数据库的名称、版本、字符集、时间区域等。
  数据字典可以通过SQL查询来访问和管理,也可以通过数据库管理工具来查看和修改。在实际应用中,数据字典可以资助用户了解数据库的结构和内容,以及举行数据库的管理和维护。同时,还可以通过数据字典来举行数据库的安全审计和性能优化。
  如RDBMS架构图所示,Oracle架构重要包罗=
   ​ User Process、Server Process等的Client端+Instance实例+Databases+一些参数文件+密码文件+归档日记文件.
    在Oracle数据库中,用户并不能直接访问到数据库文件,而是必要先创建一个数据库实例.数据库实例指的就是操作系统中一系列的历程以及为这些历程所分配的内存块,就是访问Oracle数据库文件的通道.
    一个数据库实例包罗Shared Pool(共享池),Data Buffer Cache(数据库缓冲区缓存),Redo Log Buffer(重做日记缓冲区)等部分,其中Shared Pool(共享池)又包罗Library Cache(库缓存),Data Dictionary Cache(数据字典缓存).
    当用户访问数据库文件时,必要先启动一个数据库实例,然后将数据库文件加载到Data Buffer Cache,将数据字典加载到Data Dictionary Cache,之后Server Process会首先访问Data Dictionary Cache,获取到有关数据库表的字段,关键字等元数据信息,然后再访问Data Buffer Cache,读取相关数据.从上述过程中,可以看到在Oracle数据库中,数据字典不仅是管理和查询元数据的工具,照旧用户访问数据库文件的基础.
    数据字典(Data dictionary)是一种用户可以访问的记载数据库和应用程序元数据(Metadata)的目录.
  而元数据是指对数据对象(如表、视图、存储过程等)的描述,包罗数据容器的名称、创建时间、创建者或属者、物理存放位置等基础元信息,还包罗外部实体、参照完整性等与其他对象的关联信息
  
  数据字典的内容:
  1).数据库的逻辑和物理架构
  2).用户和对象的定义和存储信息
  3).权限、脚色、审计等
  4).Database**的状态
  2. 数据字典的作用

   数据字典(Data Dictionary)在数据库管理系统中扮演着重要的脚色,它的作用包罗以下几个方面:
  

  • 数据库对象的描述和定义:数据字典包含了数据库中所有对象的定义和描述信息,包罗表、视图、索引、存储过程、触发器等。这些信息可以资助用户了解数据库中的各种对象和数据结构,以及它们之间的关系和依赖关系。
  • 数据库对象的属性信息:数据字典还包含了数据库对象的属性信息,包罗对象的名称、范例、巨细、创建时间、修改时间等。这些信息可以资助用户了解数据库对象的特性和属性,以及举行数据库对象的管理和维护。
  • 数据库对象之间的关系和依赖关系:数据字典还包含了数据库对象之间的关系和依赖关系,包罗表之间的关系、视图和表之间的关系、索引和表之间的关系等。这些信息可以资助用户了解数据库对象之间的关系和依赖关系,以及举行数据库对象的设计和优化。
  • 数据库用户和权限信息:数据字典还包含了数据库用户和权限信息,包罗用户的名称、脚色、权限等。这些信息可以资助用户了解数据库用户和权限的分配情况,以及举行数据库用户和权限的管理和维护。
  • 数据库参数和配置信息:数据字典还包含了数据库参数和配置信息,包罗数据库的名称、版本、字符集、时间区域等。这些信息可以资助用户了解数据库的配置和参数设置情况,以及举行数据库的配置和优化。
  综上所述,数据字典在数据库管理系统中扮演着重要的脚色,它可以资助用户了解数据库的结构和内容,以及举行数据库的管理和维护。同时,还可以通过数据字典来举行数据库的安全审计和性能优化。
  数据字典最重要的作用是作为分析阶段的工具,详细如下:
   1.管理系统数据资源
  数据字典提供了管理和网络数据的方法;
  2.实现数据标准化
  数据库中的名称、格式和涵义等在差别的场合下容易肴杂,数据字典提供标准化的工具可以赋予其统一的名称、格式和涵义;
  3.使系统的描述文体化
  所有和系统有关的描述,都可以对数据字典中的信息举行查询、插入、删除和修改;
  4.作为设计的工具
  由于数据字典中存放着与数据库有关的各种信息和原始资料,就为数据库设计提供了有力的工具;
  5.为数据库提供存取控制和管理
  数据库在继承存取哀求时,都要查抄用户标识、口令、子模式、模式和物理模式等.某种意义上讲,数据字典控制了数据库的运行;
  6.供数据库管理员(DBA)举行各种查询
  以便了解系统性能、空间使用状况和各种统计信息,及时把握数据库的动态.以是数据字典是 DBA 观察数据库的眼晴和窗口.
  3. 数据字典的特点

  1. sys@cdb$root:orclcdb> col table_name format a20
  2. sys@cdb$root:orclcdb> col comments format a30
  3. sys@cdb$root:orclcdb> select * from dict where table_name='DBA_OBJECTS';
  4. TABLE_NAME           COMMENTS
  5. -------------------- ------------------------------
  6. DBA_OBJECTS          All objects in the database
  7. 1 row selected.
  8. sys@cdb$root:orclcdb> select count(*) from dict;
  9.   COUNT(*)
  10. ----------
  11.       4690
  12. 1 row selected.
  13. sys@cdb$root:orclcdb>
复制代码
  1).central of database(*X$*内部表)
  2).read_only table and views
  3).owner:sys
  4).oracle server维护,DDL操作会更新
  5).通过select 访问
  6).记载数据库的物理、逻辑结构(tbs)和模式信息及对象信息(用户、束缚、权限、审计等)
  7).存放在system tablespace (v$来自内存或控制文件)
    数据字典(Data Dictionary)是数据库管理系统中的一个重要构成部分,具有以下几个特点:
  

  • 统一性:数据字典是一个集中存储数据库元数据的地方,它包含了数据库中所有对象的定义和描述信息。因此,数据字典具有统一性,可以资助用户了解数据库中各种对象和数据结构的定义和描述信息。
  • 实时性:数据字典中的信息是实时更新的,它可以反映数据库中对象的最新状态和属性信息。因此,用户可以通过数据字典来了解数据库对象的最新状态和属性信息。
  • 可扩展性:数据字典可以根据必要举行扩展和修改,以适应差别的应用场景和需求。用户可以通过数据字典来举行数据库对象的设计和优化,以及举行数据库的管理和维护。
  • 可访问性:数据字典可以通过SQL查询来访问和管理,也可以通过数据库管理工具来查看和修改。因此,用户可以方便地访问和管理数据字典中的信息。
  • 安全性:数据字典中包含了数据库对象的定义和描述信息,以及数据库用户和权限信息等敏感信息。因此,数据字典具有较高的安全性,必要举行严格的权限控制和访问控制。
  综上所述,数据字典具有统一性、实时性、可扩展性、可访问性和安全性等特点,它是数据库管理系统中不可或缺的构成部分,可以资助用户了解数据库的结构和内容,以及举行数据库的管理和维护。
  4. 数据字典的结构

   数据字典(Data Dictionary)是数据库管理系统中的一个重要构成部分,它包含了数据库中所有对象的定义和描述信息。数据字典的结构通常包罗以下几个方面:
  

  • 对象定义信息:数据字典中包含了数据库中所有对象的定义信息,包罗表、视图、索引、存储过程、触发器等。这些对象的定义信息包罗对象的名称、范例、巨细、创建时间、修改时间等。
  • 对象属性信息:数据字典中还包含了数据库对象的属性信息,包罗对象的名称、范例、巨细、创建时间、修改时间等。这些信息可以资助用户了解数据库对象的特性和属性,以及举行数据库对象的管理和维护。
  • 对象关系信息:数据字典中还包含了数据库对象之间的关系和依赖关系,包罗表之间的关系、视图和表之间的关系、索引和表之间的关系等。这些信息可以资助用户了解数据库对象之间的关系和依赖关系,以及举行数据库对象的设计和优化。
  • 用户和权限信息:数据字典中还包含了数据库用户和权限信息,包罗用户的名称、脚色、权限等。这些信息可以资助用户了解数据库用户和权限的分配情况,以及举行数据库用户和权限的管理和维护。
  • 参数和配置信息:数据字典中还包含了数据库参数和配置信息,包罗数据库的名称、版本、字符集、时间区域等。这些信息可以资助用户了解数据库的配置和参数设置情况,以及举行数据库的配置和优化。
  综上所述,数据字典的结构包罗对象定义信息、对象属性信息、对象关系信息、用户和权限信息以及参数和配置信息等方面,它可以资助用户了解数据库的结构和内容,以及举行数据库的管理和维护。
    数据字典(Data Dictionary)是关系型数据库的核心组件之一,在差别的关系型数据库中,数据字典的结构和存储方式有所差别,先容Oracle数据库数据字典的结构和使用.
    Oracle提供了大量的内部表,它们记载了数据库对象的更改和修正.可以将这些内部表划分为两种重要范例: 静态的数据字典表和动态的性能表.这些内部表是由oracle维护的,包罗sys都不能修改,只能查看.
    Oracle数据字典包罗四个层次:X$内部表+动态性能视图+基础数据字典表+静态数据字典视图
  动态性能视图静态数据字典视图l 记载数据库运行时信息和统计数据l 提供给普通用户访问l 实时更新l 创建数据库时由$ORACLE_HOME/rdbms/admin/catalog.sql创建l 数据库启动时,基于X$表创建l 根据基础数据字典表创建l 包罗GV$、V$视图l 包罗user_、all_、dba_三类↑↑X$部表基础数据字典表l Oracle数据库的核心部分和运行基础l 存储表、索引、束缚以及其他数据库结构信息l 只有sysdba可以直接访问l 普通用户不能直接访问l 数据库启动时由Oracle应用程序动态创建X$表l 创建数据库时由$ORACLE_HOME/rdbms/admin/sql.bsq脚本创建l 包罗X$BH、X$KSMSP等l 包罗TAB$、OBJ$、TS$等   普通用户不能直接访问X$内部表和基础数据字典表,那么用户如何查看这些表中的信息?
  Oracle为用户提供了两个视图:动态性能视图和静态数据字典视图,它们分别是基于X$内部表和基础数据字典表创建的,其中静态数据字典视图包罗user_xxx、all_xxx、dba_xxx三类,在创建数据库时由$ORACLE_HOME/rdbms/admin/catagory.sql脚本创建.
  5. 结构之--静态数据字典视图

    
  user_xxx :存储了关于当前用户所拥有的对象的信息,即所有在该用户模式下的对象;
  all_xxx :存储了当前用户能够访问的对象的信息(包罗用户所拥有的对象和别的用户授权访问的对象)
  dba_xxx :存储了数据库中所有对象的信息, 默认只能有sys/system 用户访问
     NOTE: 实例参数O7_DICTIONARY_ACCESSIBILITY在缺省时为FALSE,这将限制具有select any table权限的非DBA用户访问sys用户下的对象,否则这些非DBA用户也能查看dba_.
  让普通用户访问dba_xxx的三种授权方法
  1. -- 第一种        : 将对象权限授予scott
  2. SQL> grant select on dba_objects to scott;
  3.         -- : 收回对象权限
  4. SQL> revoke select on dba_users from scott;
  5. -- 第二种        : 将系统权限授权给scott
  6. SQL>        grant select any dictionary to scott;
  7. -- 第三种
  8. SQL> grant select any table to scott;        -- 此时,scott除了不能访问dba_xxx,其余均可访问
  9. SQL> alter system set O7_DICTIONARY_ACCESSIBILITY=true scope=spfile;        -- o7的布尔值变为ture,即可达到scott访问任意表,需要重启生效
复制代码
6. 结构之--动态性能视图

动态视图在数据库mount状态下访问(如控制文件的 v$)
是维护当前实例信息的,由于不断的更新,以是也叫动态视图.其底层是一组虚拟的动态表称为X$表,oracle不允许直接访问X$表,而是在这些表上创建视图,然后再创建这些视图的同义词.
 基表(x$)-------------视图(v_$)--------------同义词v$-------User access

可以通过v$fixed_table 视图查到所有的动态视图的名称;用于调优和数据库监控.

从 Oracle8开始引入GV$视图,寄义为Global V$,GV$的产生是为了满足OPS环境的必要,除一些特例,每个V$视图都有一个GV$视图存在.
  1. [oracle@MaxwellDBA ~]$
  2. [oracle@MaxwellDBA ~]$ sqlplus / as sysdba
  3. SQL*Plus: Release 19.0.0.0.0 - Production on Mon Apr 3 17:46:57 2023
  4. Version 19.3.0.0.0
  5. Copyright (c) 1982, 2019, Oracle.  All rights reserved.
  6. Connected to:
  7. Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
  8. Version 19.3.0.0.0
  9. sys@cdb$root:orclcdb>
  10. sys@cdb$root:orclcdb> show user;
  11. USER is "SYS"
  12. sys@cdb$root:orclcdb> select count(*) from v$fixed_table;
  13.   COUNT(*)
  14. ----------
  15.       2898
  16. 1 row selected.
  17. sys@cdb$root:orclcdb>
复制代码
  
广义概述中:v$也属于数据字范例畴.因为v$的结构也是在创建数据库的时候通过执行脚本完成的.与数据字典视图差别的是:v$数据源不是来自system TBS,而是来自内存或控制文件,它在实例启动后被添补,在实例关闭后被扫除.
    NOTE
  动态性能视图添补了来自实例和控制文件的信息
     前缀为DBA_、ALL_、USER_的视图则添补了来自数据字典的信息,此差异决定了可以在差别的启动阶段查询哪些视图.
    (比如在mount阶段, 读完控制文件后, 可以查询大部分视图;但是在 TBS上的静态视图无法查询,因为数据库open时候才可以访问数据字典)
  让普通用户访问v$xxx
    SQL> grant select on v_$log to scott;  -- 授予scott 用户v_$对象权限

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

飞不高

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表