第五章 使用数据字典和动态性能视图

时间:2024-11-20 07:56:25

数据字典

任务目标:
  • 识别内置数据库对象
  • 识别数据字典的内容和用途
  • 描述如何创建数据字典视图
  • 识别数据字典视图类别
  • 查询数据字典和动态性能视图
  • 描述管理脚本命名约定

数据库创建的对象

  1. 表(Tables):表是数据库中存储数据的基本结构,用于组织和存储数据。表由行和列组成,每列定义了表中存储的数据类型和约束条件。

  2. 视图(Views):视图是基于一个或多个表的查询结果集,类似于虚拟表。视图可以简化复杂查询、隐藏数据细节,并提供安全性控制。

  3. 索引(Indexes):索引是对表中的列或列组合进行排序的数据结构,用于加快数据检索速度。通过索引,可以快速定位和访问表中的数据。

  4. 序列(Sequences):序列是数据库中生成唯一数字序列的对象,通常用于生成主键值或其他需要唯一标识的值。

  5. 存储过程(Stored Procedures):存储过程是一组预编译的 SQL 语句集合,存储在数据库中并可以被多次调用。存储过程可以实现复杂的业务逻辑和数据处理。

  6. 触发器(Triggers):触发器是与表相关联的数据库对象,当表上发生特定事件(如插入、更新、删除)时触发执行特定的操作。

  7. 包(Packages):包是存储过程、函数、变量和游标等数据库对象的集合,用于封装和组织相关的数据库逻辑。

  8. 用户定义类型(User-Defined Types):用户定义类型是用户自定义的数据类型,可以在数据库中创建并用于表的列定义或存储过程参数等。

数据字典

Oracle 数据字典是 Oracle 数据库中的一组特殊表和视图,用于存储有关数据库对象的元数据信息。这些数据字典提供了对数据库结构的详细描述,包括表、视图、索引、约束、列等对象的定义和属性。通过查询数据字典,用户可以了解数据库对象的结构、依赖关系和权限信息,有助于数据库管理、查询优化和安全性控制。

  • 是每个Oracle数据库的中心
  • 描述了数据库及其对象
  • 包含只读表和视图
  • 存储在system表空间中
  • 属于用户SYS
  • 由Oracle服务器维护
  • 通过select访问
数据字典的两部分
  • 基表
    存储了对数据库的描述
    使用CREATE DATABASE创建
  • 数据字典视图
    永固简化基表信息
    通过公共同义词访问 Accessed through public synonyms
    使用catalog.sql脚本创建

catalog.sql 用于创建常用的数据字典视图和同义词
catproc.sql 用于服务器端PL/SQL所需的脚本

  • 数据字典提供以下的信息
    逻辑和物理数据库结构、对象的定义和空间分配、完整性约束、用户、角色、特权、审计
数据字典的用途
  • Oracle服务器使用它来查找有关的信息(用户、模式对象、存储结构)
  • Oracle服务器在执行DDL语句的时候修改它
  • 用户和dba将其用作有关数据库信息的只读引用

三组静态视图

在 Oracle 数据库中,三组静态视图指的是 DBAALLUSER 这三种视图的分类。这些视图是 Oracle 数据字典中的一部分,用于提供关于数据库对象(如表、视图、索引等)的元数据信息。它们的主要区别在于提供的对象范围和访问权限:

  1. DBA 视图:以 DBA_ 开头的视图,提供了数据库中所有模式(schemas)的对象信息,包括所有用户创建的对象。只有具有 DBA 权限的用户才能访问这些视图,用于管理整个数据库的对象。

  2. ALL 视图:以 ALL_ 开头的视图,提供了当前用户可以访问的所有对象的信息,包括其他用户的对象。这些视图显示了当前用户有权限访问的对象,但不包括所有对象。通常用于查询当前用户可以查看的对象信息。

  3. USER 视图:以 USER_ 开头的视图,提供了当前用户模式(schema)中的对象信息。这些视图显示了当前用户拥有的对象,不需要额外的权限即可访问。通常用于查询当前用户自己创建的对象信息。

使用desc来查看上边的表

desc all_tables;

其他的视图

1. DICTIONARY

  • 概述:数据字典是 Oracle 数据库的核心组件,包含了数据库的元数据。它提供了关于数据库对象(如表、视图、索引、用户等)的信息。
  • 用途:用于查询数据库结构和对象的属性,帮助用户理解数据库的设计和配置。

2. DICT_COLUMNS

  • 概述:这是一个视图,提供了数据字典中各个对象的列信息。
  • 用途:用于获取数据字典中所有对象的列名、数据类型及其他属性。

3. DBA_TABLES

  • 概述:提供数据库中所有表的详细信息。
  • 主要字段
    • TABLE_NAME:表名
    • OWNER:表的拥有者
    • TABLESPACE_NAME:表所在的表空间
    • NUM_ROWS:表中的行数
    • CREATED:表的创建时间
  • 用途:用于管理和监控数据库中的表。

4. DBA_INDEXES

  • 概述:提供数据库中所有索引的详细信息。
  • 主要字段
    • INDEX_NAME:索引名
    • TABLE_NAME:索引所关联的表名
    • UNIQUENESS:索引是否唯一
    • INDEX_TYPE:索引类型(如 B-tree、Bitmap 等)
  • 用途:用于优化查询性能,了解索引的使用情况。

5. DBA_TAB_COLUMNS

  • 概述:提供数据库中所有表的列信息。
  • 主要字段
    • TABLE_NAME:表名
    • COLUMN_NAME:列名
    • DATA_TYPE:数据类型
    • DATA_LENGTH:数据长度
    • NULLABLE:是否允许 NULL 值
  • 用途:用于查看表的结构,帮助开发人员理解数据模型。

6. DBA_CONSTRAINTS

  • 概述:提供数据库中所有约束的信息。
  • 主要字段
    • CONSTRAINT_NAME:约束名
    • TABLE_NAME:约束所关联的表名
    • CONSTRAINT_TYPE:约束类型(如 P:主键,F:外键,U:唯一约束)
    • SEARCH_CONDITION:约束条件
  • 用途:用于管理数据完整性,确保数据的有效性和一致性。

7. DBA_TABLESPACES

  • 概述:提供数据库中所有表空间的详细信息。
  • 主要字段
    • TABLESPACE_NAME:表空间名
    • STATUS:表空间状态(如 ONLINE、OFFLINE)
    • BLOCK_SIZE:块大小
    • INITIAL_EXTENT:初始扩展大小
  • 用途:用于管理数据库的存储结构,监控表空间的使用情况。

8. DBA_DATA_FILES

  • 概述:提供数据库中所有数据文件的信息。
  • 主要字段
    • FILE_NAME:数据文件名
    • TABLESPACE_NAME:所属表空间
    • BYTES:文件大小(以字节为单位)
    • STATUS:文件状态(如 ONLINE、OFFLINE)
  • 用途:用于监控和管理数据库的物理存储,确保数据文件的可用性。

动态性能表

介绍

  • 是一个虚拟表
  • 记录当前数据库活动
  • 在数据库运行时不断更新
  • 从内存和控制文件访问信息
  • 用于监视和调优数据库
  • 归属sys用户所有
  • 在以vs开头的同义词
  • 在v$FIXED_TABLE中列出
 SQL> desc v$fixed_table;
 Name					   Null?    Type
 ----------------------------------------- -------- ----------------------------
 NAME						    VARCHAR2(30)
 OBJECT_ID					    NUMBER
 TYPE						    VARCHAR2(5)
 TABLE_NUM					    NUMBER

描述一个表或视图的结构。在您提供的输出中,描述了一个名为 V$FIXED_TABLE 的视图的结构,具体如下:

  • NAME:列名,数据类型为 VARCHAR2(30)。
  • OBJECT_ID:列名,数据类型为 NUMBER。
  • TYPE:列名,数据类型为 VARCHAR2(5)。
  • TABLE_NUM:列名,数据类型为 NUMBER。

其他的表

当然,让我更详细地向您介绍您提到的这些 Oracle 数据库中的动态性能视图或系统视图:

  1. V$CONTROLFILE

    • 描述:提供了有关数据库控制文件的信息,包括控制文件的路径、大小、状态等。
    • 常用字段
      • NAME:控制文件的名称
      • STATUS:控制文件的状态
      • CREATION_CHANGE#:控制文件的创建 SCN 号码
      • BYTES:控制文件的大小
  2. V$DATABASE

    • 描述:提供了有关当前数据库的信息,如数据库名称、数据库 ID、数据库版本等。
    • 常用字段
      • NAME:数据库名称
      • DBID:数据库 ID
      • CREATED:数据库创建时间
      • VERSION:数据库版本号
  3. V$DATAFILE

    • 描述:提供了有关数据文件的信息,包括数据文件的路径、大小、状态等。
    • 常用字段
      • FILE#:数据文件编号
      • NAME:数据文件路径
      • STATUS:数据文件状态
      • BYTES:数据文件大小
  4. V$INSTANCE

    • 描述:提供了有关数据库实例的信息,如实例名称、启动时间、当前状态等。
    • 常用字段
      • INSTANCE_NAME:实例名称
      • STARTUP_TIME:实例启动时间
      • STATUS:实例状态(OPEN、MOUNTED、CLOSED)
  5. V$PARAMETER

    • 描述:提供了有关数据库参数的信息,包括初始化参数的名称、值、描述等。
    • 常用字段
      • NAME:参数名称
      • VALUE:参数值
      • DESCRIPTION:参数描述
  6. V$SESSION

    • 描述:提供了有关当前会话的信息,如会话 ID、用户名、状态等。
    • 常用字段
      • SID:会话 ID
      • USERNAME:会话用户名
      • STATUS:会话状态(ACTIVE、INACTIVE)
  7. V$SGA

    • 描述:提供了有关系统全局区域(SGA)的信息,包括 SGA 的大小、组件、使用情况等。
    • 常用字段
      • NAME:SGA 组件名称
      • BYTES:SGA 组件大小
      • USED:SGA 组件已使用大小
  8. V$TABLESPACE

    • 描述:提供了有关表空间的信息,包括表空间名称、大小、使用情况等。
    • 常用字段
      • TABLESPACE_NAME:表空间名称
      • BYTES:表空间大小
      • USED_SPACE:已使用空间大小
  9. V$THREAD

    • 描述:提供了有关数据库线程的信息,如线程 ID、状态、角色等。
    • 常用字段
      • THREAD#:线程编号
      • STATUS:线程状态
      • ROLE:线程角色(PRIMARY、STANDBY)
  10. V$VERSION

    • 描述:提供了有关数据库版本的信息,包括数据库版本号、发布日期等。
    • 常用字段
      • BANNER:数据库版本横幅
      • VERSION:数据库版本号
      • RELEASE:数据库发布日期
  11. $SPPARAMETER

    • 描述:提供了有关数据库的服务器参数的信息,包括服务器参数的名称、值、描述等。
    • 常用字段
      • NAME:参数名称
      • VALUE:参数值
      • DESCRIPTION:参数描述
  12. VSTABLESPACE

    • 描述:提供了有关表空间的信息,包括表空间名称、数据文件、大小等。
    • 常用字段
      • TABLESPACE_NAME:表空间名称
      • FILE_NAME:数据文件名
      • BYTES:表空间大小
  13. VSTHREAD

    • 描述:提供了有关数据库线程的信息,如线程 ID、状态、角色等。
    • 常用字段
      • THREAD#:线程编号
      • STATUS:线程状态
      • ROLE:线程角色(PRIMARY、STANDBY)
  14. VSVERSION

    • 描述:提供了有关数据库版本的信息,包括数据库版本号、发布日期等。
    • 常用字段
      • BANNER:数据库版本横幅
      • VERSION:数据库版本号
      • RELEASE:数据库发布日期

管理脚本命名

  1. cat*.sql:用于提取目录和数据字典信息的脚本,以 “cat” 开头,后跟描述性名称,以 “.sql” 结尾。

  2. dbms*.sql:包含数据库包规范说明的脚本,以 “dbms” 开头,后跟描述性名称,以 “.sql” 结尾。

  3. prvt*.plb:包含封装数据库包代码的脚本,以 “prvt” 开头,后跟描述性名称,以 “.plb” 结尾。

  4. utl*.sql:包含数据库实用程序视图和表的脚本,以 “utl” 开头,后跟描述性名称,以 “.sql” 结尾。

相关文章