日期:2014-05-16  浏览次数:20491 次

OracleDBA之路之Data dictionary(一)

Data dictionary
创建数据库时,除了创建数据库文件外,还将创建其它几种结构
数据字典:包含对数据库中对象的说明
动态性能表:包含有DBA用来监视和优化数据库及Instance的信息
PL/SQL
数据库事件触发器database? event triggers

数据字典是Oracle数据库最重要的部分之一,它是一组只读表和视图
只要执行数据定义语言DDL命令,Oracle Server 才会 update Data dictionary。此外,数据操纵语言DML如引起表扩张的命令也可以Update Data dictionary
它是只读的

数据字典包含对数据库中的对象的说明包含两种对象类型 基表 和 数据字典视图
基表:存储有关数据库的信息的底层表,在任何Oracle数据库中首先创建的对象。使用CREATE DATABASE
创建数据库时,,只要Oracle Server 运行 sql.bsq脚本,就会自动创建。只有Oracle Server才能对这些基表执行写入操作
用户很少直接访问基表。切勿使用DML命令更新基表 除AUD$外
数据字典视图:是基表的汇总,可以更有效的显示基表信息。Data dictionary views 是在运行 CREATE DATABASE 命令之后使用catalog.sql脚本来创建

catlog.sql 创建常用的数据字典视图和同义词
catproc.sql运行服务器端PL/SQL所必须的脚本

dbca 创建数据库,会自动创建Data dictionary views 和动态性能表
手工创建时需要运行相关的脚本 只有具有SYSDBA权限的用户SYS才能运行这些脚本

存放位置
UNIX:$ORACLE_HOME/rdbms/admin


Data dictionary 提供以下内容
数据库所有对象的定义,表、视图、索引、同义词、序列、过程、函数、触发器等
列的缺省值
完整性约束
Oracle用户的名称
已授予每个用户的权限和角色
审计信息 如哪些人访问或更新了各种方案对象

数据字典视图的类别
DBA:带有DBA前缀的视图显示整个数据库的全局视图。只有数据库管理员才能查询它们。
如果用户被授予了系统权限SELECT ANY TABLE,则也可以查询数据字典中前缀为DBA的视图。

?若要查询数据库中的所有对象,DBA 可以发出下列语句:

????? SELECT owner, object_name, object_type? FROM dba_objects;

?带有ALL 前缀的视图:

带有ALL前缀的视图指的是从用户角度看到的完整数据库视图。这些视图返回有关方案对
?象的信息,除了用户所拥有的方案对象外,还包括那些通过公开或显式授予权限和角色的
?方式让用户获得访问权限的方案对象。

?例如,以下查询返回用户具有访问权限的全部对象的信息:

????? SELECT owner, object_name, object_type? FROM all_objects;

?带有USER前缀的视图:

? 典型数据库用户最可能感兴趣的视图是带有USER前缀的视图。

? 这些视图:

???? ?? 涉及数据库中用户自己独有的环境

???? ?? 通常涉及当前用户所拥有的对象

???? ?? 除OWNER列暗指当前用户外,具有与其它视图一致的列

???? ?? 返回ALL视图中信息的子集

???? ?? 为方便起见,可具有缩写的公共同义词

? 例如,下列查询返回用户方案中包含的所有对象:

????? SELECT owner, object_name, object_type? FROM users_objects;

? 数据字典视图:

? 数据字典视图是静态视图,从这些视图中用户可以知道:

???? ?? 是否曾经创建了某个对象?

???? ?? 该对象是什么的一部分?

???? ?? 谁拥有该对象?

???? ?? 用户具有哪些权限?

???? ?? 对该对象有哪些限制?????????????????????????