概述
Oracle数据库的数据字典是在数据库创建的过程中创建的,由一系列表和视图构成,这些表和视图对于所有的用户(包括DBA),都是只读的。只有Oracle系统才可以对数据字典进行管理与维护。在Oracle数据库中,所有数据字典表和视图都属于SYS模式,存储于SYSTEM表空间中(SYSTEM表空间一般不说是系统表空间,系统表空间除了包括SYSTEM表空间外还有其他的)。
数据字典保存的信息
- 各种数据库对象的定义信息(什么人,什么用户,什么时间创建了什么名称的表等等),包括表、视图、索引、同义词、序列、存储过程、函数、包、触发器及其他各种对象;
- 数据库存储空间分配信息,如为某个数据库对象分配了多少空间,已经使用了多少空间等;
- 数据库安全信息,包括用户、权限、角色、完整性等;
- 数据库运行时的性能和统计信息;
- 其他数据库本身的基本信息。
数据字典结构
数据字典结构分为:
数据字典表
数据字典视图
根据数据字典对象的虚实性不同,可分为:
静态数据字典
动态数据字典
数据字典的使用
静态数据字典表的使用:
静态数据字典表只能由Oracle进行维护,用户不能对这些表进行直接操作。
静态数据字典视图的使用
通常,用户通过对静态数据字典视图的查询可以获取所需要的所有数据库信息。Oracle静态数据字典视图可以分为3类,各类视图具有独特的前缀.
动态性能表的使用
动态性能表都属于SYS用户,Oracle使用这些表生成动态性能视图。
动态性能视图的使用
动态性能视图是SYS用户所拥有的,在默认情况下,只有SYS用户和拥有DBA角色的用户可以访问。与静态数据字典表和视图不同,在数据库启动的不同阶段只能访问不同的动态性能视图。
查询数据字典信息
- 查询表dictionary,可以获得全部可以访问的数据字典表或数据字典视图的名称和解释,如,SELECT * FROM dictionary;
- 查询表dict_columns,可以获得全部可以访问的数据字典表或数据字典视图中的字段名称和解释,如,ELECT * FROM dict_columns WHERE TABLE_NAME=‘USER_TABLES’。凡是涉及数据字典名称的都要大写。
示例
利用数据字典查询一些信息
1、查询Scott用户所拥有的数据表
2、查询当前用户数据库实例的序列号,实例名称,所属主机的名称,实例状态