Oracle 数据字典

来源:互联网 发布:个人域名可以做些什么 编辑:程序博客网 时间:2024/06/05 16:44

数据字典包括以下内容:
1.所有数据库Schema对象的定义(表,视图,索引,聚簇,同义词,序列,过程,函数,包,触发器)
2.数据库的空间分配和使用情况
3.字段的缺省值
4.完整性约束信息
5.Oracle用户名称,角色,权限等信息
6.审计信息
7.其他数据库信息

数据字典有4部分组成:内部RDBMS(X$)表,数据字典表,动态性能(V$)视图,数据字典视图。

X$表是Oracle数据库的核心部分,这些表用于跟踪内部数据库信息,维持数据库的正常运行。
select * from x$kvit
数据字典表用以存储表,索引,约束以及其他数据库结构的信息,这些对象通常以$结尾。
sql.bsq是非常重要的一个文件,该文件位于$ORACLE_HOME/rdbms/admin目录下。
虽然Oracle并未提供直接的方法,在原对象存储位置被重新写入数据之前,truncate数据仍然是有办法恢复的。
select value from v$diag_info where name = 'Default Trace File'
DBMS_METADATA
user_ 类视图包含了用户所拥有的相关对象信息,用户可以通过这个视图查询自己拥有的对象信息
all_  类视图包含了用户有权限访问的所有对象的信息
dba_  类视图包含了数据库所有相关对象的信息,用户需要select any table 权限才能访问
1.DBA_XXX    --数据库中的所有对象
2.ALL_XXX    --当前用户可以访问的对象
3.USER_XXX    --当前用户拥有的对象
常用数据字典视图
1.dict/dictionary
2.dict_columns
3.obj$/dba_objects/all_objects/user_objects
4.dba_source/all_source/user_source
动态性能(V$)视图记录了数据库运行时信息和统计数据,大部分动态性能视图被实时更新以反应数据库的当前状态
GV$视图开始被引入,其含义为Global V$.除了一些特例以外,每个V$视图都有一个对应的GV$视图存在
GV$视图的产生是为了满足OPS/RAC环境的需要,在OPS/RAC环境中,查询GV$视图返回所有实例信息,而每个V$视图是基于GV$视图,增加了INST_ID列的where条件限制建立,只包含当前连接实例信息
select view_definition from v$fixed_table
通常大部分用户访问的V$对象,并不是视图,而是指向V_$视图的同义词;而V_$视图是基于真正的V$视图(这个视图是基于X$表建立的)创建的。
在进行数据访问时,Oracle访问VIEW优先,然后是同义词
nomount阶段能够访问的视图
v$parameter,v$spparameter,v$sga,v$sgastat,v$bh,v$instance,v$option,v$version,v$process,v$session
mount阶段能够访问的视图
v$thread,v$controlfile,v$database,v$datafile,v$logfile,v$datafile_header
SQL语句中Oracle对于对象名的解析顺序
1.Oracle首先查看在发出命令的用户模式中是否存在表和视图
2.如果表或视图不存在,Oracle检查私有同义词是否存在
3.如果私有同义词存在,将使用这个同义词所引用的对象
4.如果私有同义词不存在,检查同名的公共同义词是否存在
5.如果公共同义词存在,将使用这个同义词所引用的对象
6.如果公共同义词不存在,则返回错误信息