您的位置:首页 > 数据库 > Oracle

[笔记]---oracle数据字典

2013-04-11 16:34 302 查看
8. Oracle数据字典

数据字典是元数据(metadata)的存储地点

Oracle使用数据字典记录和管理对象信息和安全信息

包括如下内容:

1. 所有数据库schema对象的定义(表、视图、索引、聚族、同义词、序列、过程、函数、包、触发器等)

2. 数据库的空间分配和使用情况

3. 字段缺省值、完整性约束信息

4. 用户名、角色、权限

5. 审计信息

6. ...

数据字典是数据库的核心,一般情况下是只读的!oracle不建议修改,因为这样可能会导致数据库紊乱而无法恢复!

oracle对这类操作不负责任!

组成:

内部RDBMS(X$表)

数据字典表

动态性能视图(V$)

数据字典视图

8.1 X$是数据库的核心,加密命名,是oracle公司的技术机密

记录oracle数据库内部信息,是数据库运行的基础,启动时由oracle应用程序动态创建

不允许sysdba之外的用户直接访问

8.2 数据字典表

data dictionary table

用以存储表、索引、约束以及其他数据库结构的信息,通常以$结尾

如:tab$,obj$,ts$,在创建数据库的时候通过运行sql.gsq脚本创建

sql.bsq包含了数据字典表的定义以及注释说明,位于$ORACLE_HOME/dbms/admin目录下,可以多阅读

8.3 动态性能视图

V$开头,在启动时,创建了X$之后,oracle基于x$创建了GV$和V$视图,GV$视图是global v$

基本上每个v$都有一个GV$存在,当然也有例外

GV$是为了满足ops环境,GV$是所有实例信息,而每个v$是基于GV$视图,增加了inst_id列的where条件限制

每个v$都有where inst_id=userenv('Instance');在orc环境下,gv$和V$输出有不同

随后,oracle又创建了gv_$/v_$视图,通过gv$、v$创建了gv_$/v_$视图,然后再创建公用同义词gv$/v$

通过catalog.sql脚本创建

创建gv_$和v_$视图是为了授权,因为授权不能直接在gv$/v$上进行

所以我们看到的gv$/v$都不是真正的gv$/v$

我们常用的v$ 是v_$的同义词,v_$是基于真正的视图v$,而真正的v$视图是在gv$的基础上限制inst_id得到;

我们常用的gv$是gv_$的同义词,gv_$基于真正的视图gv$,而真正的gv$视图基于系统表X$

8.4 数据字典视图

数据字典视图是建立在x$/数据字典表上创建的视图,由catalog.sql负责

根据前缀不同,分为常见的三类:

user_:包含了用户所拥有的相关对象信息

all_:包含了用户有权限访问的所有对象信息

dba_:包含了数据库所有对象的信息
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息