数据字典
任务目标:
- 识别内置数据库对象
- 识别数据字典的内容和用途
- 描述如何创建数据字典视图
- 识别数据字典视图类别
- 查询数据字典和动态性能视图
- 描述管理脚本命名约定
数据库创建的对象
-
表(Tables):表是数据库中存储数据的基本结构,用于组织和存储数据。表由行和列组成,每列定义了表中存储的数据类型和约束条件。
-
视图(Views):视图是基于一个或多个表的查询结果集,类似于虚拟表。视图可以简化复杂查询、隐藏数据细节,并提供安全性控制。
-
索引(Indexes):索引是对表中的列或列组合进行排序的数据结构,用于加快数据检索速度。通过索引,可以快速定位和访问表中的数据。
-
序列(Sequences):序列是数据库中生成唯一数字序列的对象,通常用于生成主键值或其他需要唯一标识的值。
-
存储过程(Stored Procedures):存储过程是一组预编译的 SQL 语句集合,存储在数据库中并可以被多次调用。存储过程可以实现复杂的业务逻辑和数据处理。
-
触发器(Triggers):触发器是与表相关联的数据库对象,当表上发生特定事件(如插入、更新、删除)时触发执行特定的操作。
-
用户定义类型(User-Defined Types):用户定义类型是用户自定义的数据类型,可以在数据库中创建并用于表的列定义或存储过程参数等。
数据字典
Oracle 数据字典是 Oracle 数据库中的一组特殊表和视图,用于存储有关数据库对象的元数据信息。这些数据字典提供了对数据库结构的详细描述,包括表、视图、索引、约束、列等对象的定义和属性。通过查询数据字典,用户可以了解数据库对象的结构、依赖关系和权限信息,有助于数据库管理、查询优化和安全性控制。
数据字典的两部分
- 基表
存储了对数据库的描述
使用CREATE DATABASE创建 - 数据字典视图
永固简化基表信息
通过公共同义词访问 Accessed through public synonyms
使用catalog.sql脚本创建
catalog.sql 用于创建常用的数据字典视图和同义词
catproc.sql 用于服务器端PL/SQL所需的脚本
- 数据字典提供以下的信息
逻辑和物理数据库结构、对象的定义和空间分配、完整性约束、用户、角色、特权、审计
数据字典的用途
- Oracle服务器使用它来查找有关的信息(用户、模式对象、存储结构)
- Oracle服务器在执行DDL语句的时候修改它
- 用户和dba将其用作有关数据库信息的只读引用
三组静态视图
在 Oracle 数据库中,三组静态视图指的是 DBA
、ALL
和 USER
这三种视图的分类。这些视图是 Oracle 数据字典中的一部分,用于提供关于数据库对象(如表、视图、索引等)的元数据信息。它们的主要区别在于提供的对象范围和访问权限:
-
DBA 视图:以
DBA_
开头的视图,提供了数据库中所有模式(schemas)的对象信息,包括所有用户创建的对象。只有具有 DBA 权限的用户才能访问这些视图,用于管理整个数据库的对象。 -
ALL 视图:以
ALL_
开头的视图,提供了当前用户可以访问的所有对象的信息,包括其他用户的对象。这些视图显示了当前用户有权限访问的对象,但不包括所有对象。通常用于查询当前用户可以查看的对象信息。 -
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)
- 用途:用于监控和管理数据库的物理存储,确保数据文件的可用性。
动态性能表
介绍
SQL> desc v$fixed_table;Name Null? Type----------------------------------------- -------- ----------------------------NAME VARCHAR2(30)OBJECT_ID NUMBERTYPE VARCHAR2(5)TABLE_NUM NUMBER
描述一个表或视图的结构。在您提供的输出中,描述了一个名为 V$FIXED_TABLE
的视图的结构,具体如下:
- NAME:列名,数据类型为 VARCHAR2(30)。
- OBJECT_ID:列名,数据类型为 NUMBER。
- TYPE:列名,数据类型为 VARCHAR2(5)。
- TABLE_NUM:列名,数据类型为 NUMBER。
其他的表
当然,让我更详细地向您介绍您提到的这些 Oracle 数据库中的动态性能视图或系统视图:
-
V$CONTROLFILE:
- 描述:提供了有关数据库控制文件的信息,包括控制文件的路径、大小、状态等。
- 常用字段:
NAME
:控制文件的名称STATUS
:控制文件的状态CREATION_CHANGE#
:控制文件的创建 SCN 号码BYTES
:控制文件的大小
-
V$DATABASE:
-
V$DATAFILE:
- 描述:提供了有关数据文件的信息,包括数据文件的路径、大小、状态等。
- 常用字段:
FILE#
:数据文件编号NAME
:数据文件路径STATUS
:数据文件状态BYTES
:数据文件大小
-
V$INSTANCE:
- 描述:提供了有关数据库实例的信息,如实例名称、启动时间、当前状态等。
- 常用字段:
INSTANCE_NAME
:实例名称STARTUP_TIME
:实例启动时间STATUS
:实例状态(OPEN、MOUNTED、CLOSED)
-
V$PARAMETER:
- 描述:提供了有关数据库参数的信息,包括初始化参数的名称、值、描述等。
- 常用字段:
NAME
:参数名称VALUE
:参数值DESCRIPTION
:参数描述
-
V$SESSION:
- 描述:提供了有关当前会话的信息,如会话 ID、用户名、状态等。
- 常用字段:
SID
:会话 IDUSERNAME
:会话用户名STATUS
:会话状态(ACTIVE、INACTIVE)
-
V$SGA:
- 描述:提供了有关系统全局区域(SGA)的信息,包括 SGA 的大小、组件、使用情况等。
- 常用字段:
NAME
:SGA 组件名称BYTES
:SGA 组件大小USED
:SGA 组件已使用大小
-
V$TABLESPACE:
- 描述:提供了有关表空间的信息,包括表空间名称、大小、使用情况等。
- 常用字段:
TABLESPACE_NAME
:表空间名称BYTES
:表空间大小USED_SPACE
:已使用空间大小
-
V$THREAD:
- 描述:提供了有关数据库线程的信息,如线程 ID、状态、角色等。
- 常用字段:
THREAD#
:线程编号STATUS
:线程状态ROLE
:线程角色(PRIMARY、STANDBY)
-
V$VERSION:
-
$SPPARAMETER:
- 描述:提供了有关数据库的服务器参数的信息,包括服务器参数的名称、值、描述等。
- 常用字段:
NAME
:参数名称VALUE
:参数值DESCRIPTION
:参数描述
-
VSTABLESPACE:
- 描述:提供了有关表空间的信息,包括表空间名称、数据文件、大小等。
- 常用字段:
TABLESPACE_NAME
:表空间名称FILE_NAME
:数据文件名BYTES
:表空间大小
-
VSTHREAD:
- 描述:提供了有关数据库线程的信息,如线程 ID、状态、角色等。
- 常用字段:
THREAD#
:线程编号STATUS
:线程状态ROLE
:线程角色(PRIMARY、STANDBY)
-
VSVERSION: