数据字典概念
数据字典概念:
- 数据字典是oracle数据库用来存贮数据库结构信息的地方
- 数据字典是用来描述数据库数据的组织方式的,由表和视图组成
- 数据字典由脚本$oracle_home/rdbms/admin/catalog.sql创建
数据字典内容
数据字典包含的内容大致分为以下几种:
- 模式对象(tables,views,indexes,clusters,synonyms,sequences,procedures,functions,packages,triggers等)的定义信息
- 模式对象的空间使用及分配信息(例如:表空间,数据文件等)
- 完整性约束信息(参照完整性,实体完整性,用户定义完整性)
- 用户及权限等信息
- 审计信息(数据库审计)
- 数据库其他信息
数据字典类别
数据字典包含下面四种类别的表或者视图:
- 内部表
- 数据字典表
- 静态数据字典视图
- 动态性能视图
内部表
内部表适用于跟踪数据库内部信息,维护数据库正常运行。内部表在启动时候建立在内存中,往往用来记录一些动态信息,许多动态性能视图就来源于它.由于内部表的重要性,oracle未提供相关文档,只能留给dba们去探索。
内部表仅仅sysdba用户才能看,无法对内部表进行授权。
SYS >grant select on x$kcccp to huangxing;
grant select on x$kcccp to huangxing
ERROR at line 1:
ORA-02030: can only select from fixed tables/views
数据字典表
数据库字典表以‘$’结尾,通常用于存放模式对象(例如:表、索引、存储过程、完整性约束等)的一些结构信息。
数据字典表在数据库创建时候(create database隐含触发)由文件sql.bsp包含的初始化脚本文件完成。
实际上,一个ddl语句在后台实质是转化为一系列dml语句操作数据字典表。
静态数据字典视图
因为内部表和数据字典表一般不提供直接访问,这就需要一些命名更为容易理解的视图用于访问数据字典表和内部表。
静态数据字典视图是在基表的基础上创建的一系列视图,它以一种更友好的方式展示了基表中的内容。
这些视图分为三类,格式分别为user_*、all_*和dba_*,他们之间的包含关系如下图所示:
数据字典视图非常多,我们无法一一记住,但是有个视图,我们必须知道,那就是dictionary视图,该视图里记录了所有的数据字典视图的名称。所以当我们需要查找某个数据字典而又不知道这个信息在哪个视图里的时候,就可以在dictionary视图里找。该视图还有个同义词dict
动态性能视图
动态性能视图是一组反映数据库当前活动信息的虚拟表,所有者为sys,以V$或者GV$开头,是管理员监控和调优数据库的重要工具。
动态性能视图可以看到下列信息:
System and session parameters
Memory usage and allocation
File states (including RMAN backup files)
Progress of jobs and tasks
SQL execution
Statistics and metrics
注意:在创建数据库是会运行两个脚本。先运行catalog.sql,该脚本用来创建数据库的内部字典表。然后再运行catrpoc.sql,该脚本用来创建数据库内建的存储过程、包等pl\sql对象。如果我们是使用dbca来创建数据库,则dbca会自动调用这两个脚本。否则在执行create database命令来创建时,则需要手工运行这两个脚本。