最近在学习Oracle数据库,Oracle嘛emmmm上手有点难啊哈哈~于是根据老师给的课件整理了一下
数据字典的概述
一、概述
- Oracle数据库的数据字典是在数据库创建的过程中创建的,由一系列表和视图构成,这些表和视图对于所有的用户(包括DBA),都是只读的。
- 只有Oracle系统才可以对数据字典进行管理与维护。
- 在Oracle数据库中,所有数据字典表和视图都属于SYS模式,存储于SYSTEM表空间中。
二、Oracle数据字典保存数据库本身的系统信息及所有数据库对象信息,包括:
- 各种数据库对象的定义信息,包括表、视图、索引、同义词、序列、存储过程、函数、包、触发器及其他各种对象;
- 数据库存储空间分配信息,如为某个数据库对象分配了多少空间,已经使用了多少空间等;
- 数据库安全信息,包括用户、权限、角色、完整性等;
数据库运行时的性能和统计信息; - 其他数据库本身的基本信息。
三、数据字典主要用途
- Oracle通过访问数据字典获取用户、模式对象、数据库对象定义与存储等信息,以判断用户权限的合法性、模式对象的存在性及存储空间的可用性等;
- 使用DDL语句修改数据库对象后,Oracle将在数据字典中记录所做的修改;
- 任何数据库用户都可以从数据字典只读视图中获取各种数据库对象信息;
- DBA可以从数据字典动态性能视图中获取数据库的运行状态,作为进行性能调整的依据。
数据字典的结构
数据字典结构分为:
- 数据字典表
- 数据字典视图
根据数据字典对象的虚实性不同,分为:
- 静态数据字典
- 动态数据字典
以下是它们的具体叙述:
-
静态数据字典表
静态数据字典表是在数据库创建过程中自动运行sql.bsq脚本创建的,由SYS用户所拥有,表中信息都是经过加密处理的。静态数据字典表的命名中通常包含 $ 符号。只有Oracle才能读/写这些静态数据字典表。例如,静态数据字典表tab$。 -
静态数据字典视图
通过对静态数据字典表进行解密和处理,创建了一系列用户可读的静态数据字典视图。在数据库创建过程中,通过自动运行catalog.sql脚本创建静态数据字典视图及其公共同义词,并进行授权,如静态数据字典视图USER_TABLES。 -
动态数据字典表
动态数据字典表是在数据库实例运行过程中由Oracle动态创建和维护的一系列“虚表”,在实例关闭时被释放。动态数据字典表中记录与数据库运行的性能相关的统计信息,因此又称为动态性能表。通常,动态性能表的命名以 X$ 开头。动态性能表由SYS用户所拥有,如动态性能表X$KSPPI。 -
动态数据字典视图
在动态性能表上创建的视图称为动态数据字典视图,又称为动态性能视图。所有动态性能视图命名都以 V$ 开头,Oracle自动为这些视图创建了以 V$ 开头命名的公共同义词,因此动态性能视图又称为“ V$ 视图”,如动态性能视图V$DATAFILE。
查询数据字典信息
- 查询表dictionary,可以获得全部可以访问的数据字典表或数据字典视图的名称和解释;
- 查询表dict_columns,可以获得全部可以访问的数据字典表或数据字典视图中的字段名称和解释。
SELECT * FROM dictionary;
SELECT * FROM dict_columns WHERE TABLE_NAME='USER_TABLES';
数据字典的使用
-
静态数据字典表的使用
静态数据字典表只能由Oracle进行维护,用户不能对这些表进行直接操作。 -
静态数据字典视图的使用
通常,用户通过对静态数据字典视图的查询可以获取所需要的所有数据库信息。
Oracle静态数据字典视图可以分为3类,各类视图具有独特的前缀.
-
动态性能表的使用
动态性能表都属于SYS用户,Oracle使用这些表生成动态性能视图。 -
动态性能视图的使用
动态性能视图是SYS用户所拥有的,在默认情况下,只有SYS用户和拥有DBA角色的用户可以访问。
与静态数据字典表和视图不同,在数据库启动的不同阶段只能访问不同的动态性能视图。 具体看下面:-
当数据库启动到NOMOUNT状态时:
Oracle数据库打开初始化参数文件,分配SGA并启动后台进程,因此只能访问从SGA中获得信息的动态性能视图,如 V$ PARAMETER ,V$ SGA,V$ SESSION,V$ PROCESSE,V$ INSTANCE,V$ VERSION,V$ OPTION 等。 -
当数据库启动到MOUNT状态时:
Oracle打开控制文件,因此不仅能访问从SGA中获得信息的动态性能视图,还可以访问从控制文件中获得信息的动态性能视图,如V$ LOG,V$ LOGFILE,V$ DATAFILE,V$ CONTROLFILE,V$ DATABASE,V$ THREAD,V$DATAFILE_ HEADER等。 -
当数据库完全启动后:
可以访问V_$fixed_table表中所有的动态性能视图。
-