首页 > 数据库 >PART1-Oracle关系数据结构-数据字典与动态性能视图

PART1-Oracle关系数据结构-数据字典与动态性能视图

时间:2024-09-07 09:24:58浏览次数:8  
标签:数据库 用户 视图 PART1 Oracle 数据 字典

6. 数据字典与动态性能视图

6.1. 数据字典概述

Oracle数据库的一个重要组成部分是其数据字典,这是一个只读的表集合,提供了有关数据库的管理元数据。数据字典包含如下信息:

  • 数据库中每个模式对象的定义,包括列的默认值和完整性约束信息
  • 分配给模式对象的空间量以及当前使用的量
  • Oracle数据库用户的名称、授予用户的权限和角色,以及与用户相关的审计信息(见第17-1页的“用户账户”)

数据字典是每个Oracle数据库数据管理的核心部分。例如,数据库执行以下操作:

  • 访问数据字典以查找有关用户、模式对象和存储结构的信息
  • 每次发出DDL语句时修改数据字典(见第7-3页的“数据定义语言(DDL)语句”)

因为Oracle数据库将数据字典数据存储在表中,就像其他数据一样,用户可以使用SQL查询这些数据。例如,用户可以运行SELECT语句来确定他们的权限,他们的模式中存在哪些表,这些表中有哪些列,是否在这些列上建立了索引等。

6.1.1. 数据字典的内容

数据字典由以下类型的对象组成:

  • 基础表
    这些底层表存储有关数据库的信息。只有Oracle数据库应该写入和读取这些表。用户很少直接访问基础表,因为它们是规范化的,大多数数据都以难以理解的格式存储。

  • 视图
    这些视图使用连接和WHERE子句将基础表数据解码成有用的信息,例如用户或表名,以简化信息。这些视图包含数据字典中所有对象的名称和描述。一些视图对所有数据库用户都是可访问的,而其他视图则仅供管理员使用。

通常,数据字典视图是成组的。在许多情况下,一组由三个包含类似信息的视图组成,它们通过前缀来区分,如表6-1所示。通过查询适当的视图,您可以只访问对您相关的信息。

不是所有的视图集合都包含三个成员。例如,数据字典中包含一个DBA_LOCK视图,但没有ALL_LOCK视图。
系统提供的DICTIONARY视图包含了所有数据字典视图的名称和简略描述。以下对这一视图的查询包括部分示例输出:

SQL> SELECT * FROM DICTIONARY 2 ORDER BY TABLE_NAME;
TABLE_NAME COMMENTS
------------------------------ ---------------------------------------
ALL_ALL_TABLES                 Description of all object and relational tables accessible to the user
ALL_APPLY                      Details about each apply process that dequeues from the queue visible to the current user
. . .

6.1.1.1. DBA_视图

带有DBA_前缀的视图显示整个数据库中的所有相关信息。DBA_视图仅供管理员使用。例如,以下查询显示了数据库中所有对象的信息:

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

6.1.1.2. ALL_视图

带有ALL_前缀的视图指的是用户对数据库的整体视角。这些视图返回用户通过公共或明确的权限和角色授予访问权限的模式对象的信息,以及用户拥有的模式对象的信息。例如,以下查询返回了您有权访问的所有对象的信息:

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

由于ALL_视图遵循当前启用的角色集,查询结果取决于哪些角色被启用,如下例所示:

SQL> SET ROLE ALL; 
Role set. 
SQL> SELECT COUNT(*) FROM ALL_OBJECTS;
COUNT(*) 
---------
68295
SQL> SET ROLE NONE; 
Role set. 
SQL> SELECT COUNT(*) FROM ALL_OBJECTS;
COUNT(*) 
---------
53771

应用程序开发人员在使用存储过程中的ALL_视图时,应该意识到角色的影响,因为在存储过程中角色默认情况下不会被启用。

6.1.1.3. USER_视图

对典型数据库用户最感兴趣的视图是带有USER_前缀的视图。这些视图:

  • 指的是用户在数据库中的私有环境,包括用户创建的模式对象的元数据、用户授予的权限等
  • 只显示与用户相关的行,返回ALL_视图中信息的一个子集
  • 除了列OWNER是隐含的之外,其他列与其它视图相同,可以有简略的PUBLIC同义词以方便使用

例如,以下查询返回了您的模式中包含的所有对象:

SELECT OBJECT_NAME, OBJECT_TYPE FROM USER_OBJECTS ORDER BY OBJECT_NAME;

6.1.1.4. DUAL表

DUAL 是数据字典中的一个小表,Oracle数据库和用户编写的程序可以引用它以保证一个已知的结果。DUAL表在必须只返回一次值时非常有用,例如当前的日期和时间。所有数据库用户都可以访问DUAL。

DUAL表有一个名为DUMMY的列和一行,包含值X。以下示例查询DUAL以执行算术运算:

SQL> SELECT ((3*4)+5)/3 FROM DUAL;
((3*4)+5)/3 
----------
5.66666667

6.1.2. 数据字典的存储

数据字典基础表是任何Oracle数据库中首先创建的对象。数据库的所有数据字典表和视图都存储在SYSTEM表空间中。因为当数据库打开时,SYSTEM表空间始终在线,所以当数据库打开时,数据字典始终可用。

6.1.3. Oracle数据库如何使用数据字典

Oracle数据库用户SYS拥有数据字典的所有基础表和用户可访问的视图。数据字典基础表中的数据对于Oracle数据库的运行是必要的。因此,只有Oracle数据库应该写入或更改数据字典信息。没有任何Oracle数据库用户应该更改SYS模式中包含的行或模式对象,因为这样的活动可能会危及数据完整性。安全管理员必须严格控制这个中心账户。

警告:更改或操纵数据字典表中的数据可能会永久性地对数据库操作产生不利影响。

在数据库运行期间,Oracle数据库读取数据字典以确认模式对象的存在以及用户对它们的适当访问权限。Oracle数据库还不断更新数据字典,以反映数据库结构、审计、授权和数据的变更。

例如,如果用户hr创建了一个名为interns的表,那么数据字典中会添加新行,以反映新表、列、段、扩展和hr对表的权限。下次查询字典视图时,这些新信息将可见。

6.1.3.1. 数据字典视图的公共同义词

Oracle数据库为许多数据字典视图创建了公共同义词,以便用户可以方便地访问它们。安全管理员还可以为全系统使用的模式对象创建额外的公共同义词。用户应避免将自己的模式对象命名为与公共同义词相同的名称。

6.1.3.2. 为快速访问而缓存数据字典

数据字典的大部分信息都存储在数据字典缓存中,因为数据库不断地需要这些信息来验证用户访问权限和核实模式对象的状态。解析信息通常保存在缓存中。描述表及其列的COMMENTS列不缓存在数据字典缓存中,但可能会缓存在数据库缓冲区缓存中。

6.1.3.3. 其他程序和数据字典

其他Oracle数据库产品可以引用现有的视图,并创建自己的额外数据字典表或视图。编写引用数据字典的程序的应用程序开发人员应该引用公共同义词,而不是底层表。同义词在不同版本之间更改的可能性较小。

6.2. 动态性能视图概述

6.2.1. 动态性能视图内容

6.2.2. 动态性能视图存储

6.3. 数据库对象元数据

标签:数据库,用户,视图,PART1,Oracle,数据,字典
From: https://www.cnblogs.com/crispy-bro/p/18401292

相关文章

  • Oracle 19c数据库:Windows详细安装与配置指南
    Oracle19c的安装和配置是一个相对复杂但系统化的过程,本文演示如何在Windows系统下安装Oracle数据库,安装足够的磁盘空间(一般需要5~6个G,所以选剩余空间大的盘)。以下是一个详细的步骤指南,包括准备工作、安装过程、配置监听器和数据库测试等关键步骤:一、下载Oracle19c安装包访问Or......
  • oracle锁的机制
    文章目录oracle锁的机制1.概括2.锁的模式3.锁查看死锁1.说明2.死锁产生条件3.解决死锁冲突4.事务和死锁预防总结oracle锁的机制1.概括1)说明锁是一种机制,多个事务同时访问一个数据库对象时,该机制可以实现对并发的控制2)oracle中锁的类别1.DDL锁:oracle自动......
  • Oracle 12.2.0.1.0单实例安装补丁
    ......
  • 【EBS】Oracle EBS数据库中的表空间
      在OracleEBSR12系统中,在安装完毕OracleEBS套件之后,根据OracleEBS的可选数据库模型OATM(OracleApplicationsTablespaceModel),在其后台数据库中一般会自动创建19个表空间,包括:TablespaceNameDescriptionAPPS_TS_ARCHIVE包含已归档的清理相关数据的表空间......
  • PART1-Oracle关系数据结构-数据完整性
    5.数据完整性5.1.数据完整性简介5.1.1.保证数据完整性的技术5.1.2.完整性约束的优势5.2.完整性约束的类型5.2.1.非空完整性约束5.2.2.唯一性约束5.2.3.主键约束5.2.4.外键约束5.2.5.检查约束5.3.完整性约束状态5.3.1.对已修改和现有数据的检查5.3.2.可延......
  • 【优技教育】Oracle 19c OCP 082题库(第14题)- 2024年修正版
    【优技教育】Oracle19cOCP082题库(Q14题)-2024年修正版考试科目:1Z0-082考试题量:90通过分数:60%考试时间:150min本文为(CUUG原创)整理并解析,转发请注明出处,禁止抄袭及未经注明出处的转载。原文地址:http://www.cuug.com.cn/ocp/082kaoshitiku/38183734957.html第14题:14......
  • Oracle高级压缩和透明数据加密组合实验
    本文参考了实验DBSecurity-AdvancedCompressionwithTransparentDataEncryption(TDE),其申请地址在这里。本文只使用了实验中关于高级压缩和在线重定义的部分。并对要点进行说明及对实验进行了简化。准备:环境设置原文中的实验环境实际上是改自Oracle示例SampleSch......
  • 20240907_004551 mysql 视图 创建视图
    很幸苦的获取数据SELECTstudent.id,student.nameASsname,class.nameAScname,class.detailFROMstudentINNERJOINclassONstudent.cid=class.id存在的问题下次要再拿这样的数据重写语句很麻烦希望上面的查询结果直接就作为虚拟表的本体创建视图语法createvi......
  • 使用 MySQL 创建直方图:数据分析与可视化技巧,mysql创建视图表
    在数据分析和可视化过程中,直方图是一种常见的工具,用来显示数据的分布情况。使用MySQL创建直方图,可以帮助我们快速理解数据的整体趋势和分布特征。本文将介绍如何使用MySQL来创建直方图,并结合数据分析与可视化的技巧,让数据分析更加直观易懂。什么是直方图?直方图是一种用于展......
  • Oracle隐式转换
    收到数据库服务器cpu告警,当时在吃饭,来不及登录查看。(数据库80%的问题都是SQL引起的)后续通过会话快照信息进行分析。selectsample_time,sql_id,count(*)fromdba_hist_active_sess_historywheresample_time>to_date('2024090417:58:00','yyyymmddhh24:mi:ss')andsample_tim......