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

news/2024/12/25 9:10:33/文章来源:https://www.cnblogs.com/crispy-bro/p/18401292

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. 数据库对象元数据

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/793491.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

最让程序员破防的12句话,你来补充下一句。

1、这个应该很简单吧,要那么久? 2、之前有一个类似的功能,拿过来改一下就好了。 3、产品说这个功能,已经给客户沟通好了,你想办法看怎么实现。 4、这个需求真的是最终版了。 5、要不我们还是使用上一版设计? 6、先做出来看看,不合适再改。 7、我就要这种效果,怎么实现是…

Delphi怎样安装和配置第三方控件并处理找不到文件

一、提示信息:[dcc64 Error] E1026 File not found: ‘***.res’ 二、解决方法: 1、正解:应当去看官方的安装说明文档,比如若你用自动或手动方式安装和部署TMS FlexCel Studio for VCL and FireMonkey *.*.*.*.exe时,你应当仔细阅读官方的安装说明:http://www.tmssoftwar…

五子棋AI:实现逻辑与相关背景探讨(上)

绪论本合集将详细讲述如何实现基于群只能遗传算法的五子棋AI,采用C++作为底层编程语言 本篇将简要讨论实现思路,并在后续的文中逐一展开了解五子棋 五子棋规则五子棋是一种经典的棋类游戏,规则简单却充满策略性。游戏在一个1919的棋盘上进行(也可以使用1313或1515的棋盘)。…

常用delphi IDE环境配置

目录 常用delphi XE IDE环境配置,大家都需要熟练 一、android SDK : 二、环境变量 User System Overrides :覆盖用户操作系统的全局配置参数:System Variables 操作系统层面的全局变量: 其中:重要的,和自己个性化的: 三、自己的类库路径 四、测试工程默认路径 五、…

如果没有热风枪,如何组合热缩管的5种简单方法

转载自:https://mil.sohu.com/a/779354413_120429259当谈到收缩热缩管时,没有什么比热风枪更好的了。但如果你没有,你该怎么办? 请放心,您仍然可以在没有热风枪的情况下使用热缩管。它可以响应多种热源,因此您可以使用许多替代工具。 在本文中,我列出了一些最流行的热收…

17_电话号码的字母组合

17_电话号码的字母组合 【问题描述】 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按任意顺序返回。给出数字到字母的映射如下(与电话按键相同)。注意1不对应任何字母。示例一: 输入:digits = "23" 输出:["ad","ae&q…

读软件设计的要素03概念的组合

概念的组合1. 概念的组合 1.1. 概念不像程序那样,可以用较大的包含较小的1.1.1. 每个概念对用户来说都是平等的,软件或系统就是一组串联运行的概念组合1.2. 概念是通过操作来同步组合的1.2.1. 同步并不增加新的概念操作,但会限制已有的操作,从而消除一些独立概念可能会出现…

南沙信C++陈老师解一本通题: 1101:不定方程求解

​ 【题目描述】给定正整数a,b,c。求不定方程 ax+by=c关于未知数x和y的所有非负整数解组数。【输入】一行,包含三个正整数a,b,c 两个整数之间用单个空格隔开。每个数均不大于1000。【输出】一个整数,即不定方程的非负整数解组数。【输入样例】 2 3 18 【输出样例】 4 #in…

musl libc 与 glibc 在 .NET 应用程序中的兼容性

musl Linux 和 glibc 是两种不同的 C 标准库实现,它们在多个方面存在显著差异。历史和使用情况:glibc 是较早且广泛使用的 C 标准库实现,具有较长的开发历史和广泛的社区支持。它被大多数 Linux 发行版采用,特别是在桌面和服务器环境中。 musl 是一个相对较新的实现,旨在提…

JDBC,SQL注入,事务,C3P0于Druid连接池(最详细解析)

JDBCJDBC(Java DataBase Connectivty,Java数据库连接)API,是一种用于执行Sql语句的Java API,可以为关系型数据库提供统一的访问,其由一组Java编写的类和接口组成.JDBC驱动程序起初,SUN公司推出JDBC API希望能适用于所有数据库,但实际中是不可能实现的,各个厂商提供的数据库差异…

Redis 入门 - 安装最全讲解(Windows、Linux、Docker)

最全的Redis安装教程,本文介绍了Redis在Windows(官方建议、脚本、可执行文件方式)、Linux(apt包管理器、源码编译)及Docker下的安装过程,详细步骤包括命令执行、文件操作等。经过上一章节的介绍,相信大家对Redis已经有了大致的认知,今天主要给大家详细讲解Redis在Windo…

WPF在UserControl使用MVVM模式实现窗体移动,最大化,最小化,关闭

1、在WPF中,我们移动窗体,可以使用MouseDown或者MouseLeftButtonDown去触发DragMove方法 2、当我们使用UserControl的时候,它是没有DragMove方法的,这个时候怎么办 我们改为命令的形式,可以直接调出当前的窗体,或者将窗体当参数传入到ViewModel,也没问题 我写了 <i:I…