Oracle的数据字典由四部分组成:
- 内部表(X$): Oracle的核心,官网不做说明, Oracle通过大量X$建立起大量视图,仅供用户select。
- 数据字典表: 用以存储表、索引、约束以及其他数据库结构信息,通常以$结尾,如tab$,obj$,ts$,aud$等。
- 动态性能表(V$): 实时更新反应当前的数据库状态,官网对V$视图有详尽的说明。
- 数据字典视图: 在X$表和数据字典表上创建,通常分为三类dba_, all_, user_.
-
- user_:包含了当前数据库用户所拥有的所有的模式对象的信息
- user_tables: 用于显示当前用户所拥有的所有表,它只返回用户所对应方案的所有表
- all_ :包含了当前数据库用户可以访问的所有的模式对象的信息
- all_tables: 用于显示当前用户可以访问的所有表,它不仅会返回当前用户方案的所有表,还会返回当前用户可以访问的其它方案的表
- dba_ :包含了所有数据库对象信息,只有具有DBA角色的用户才嫩而过访问的这些视图
- dba_tables: 它会显示所有方案拥有的数据库表。但是查询这种数据库字典视图,要求用户必须是dba角色或是有select any table 系统权限
- dba_users:可以显示所有数据库用户的详细信息
- dba_sys_privs:可以显示用户所具有的系统权限
- dba_tab_privs:可以显示用户具有的对象权限
- dba_col_privs:可以显示用户具有的列权限
- dba_role_privs:可以显示用户所具有的角色
- user_:包含了当前数据库用户所拥有的所有的模式对象的信息
注: dba_ 开头的 必须是sys 用户所有 ,非 sys 用户 需要在前面加 sys 前缀
# 查询所有的数据字典 SELECT * FROM dictionary
下面都是一些常用的视图家族,都有一个DBA_ ALL_ USER_ 的视图 :
- col_privs 包含了表的列权限信息,包含授予者,被授予者和权限名称等信息
- extents 存储分配信息,包括数据段名 表空间名和分区编号,分区大小
- indexes 索引信息 包含索引类型, 唯一性, 索引作用等表的信息
- ind_columns 索引列信息 包括索引上的列的排序方式等信息
- object 对象信息, 包括对象名称 类型 创建时间 等信息
- segments 表和索引的数据段信息,包括表空间,存储设置等信息
- sequences 序列信息 包含序列名称 ,循环性,最大值等信息
- source 除触发器之外的所有存储过程,函数,包的源代码信息
- synonyms 同义词信息 包括引用的对象等信息
- sys_privs 系统权限信息 包括系统权限名称 授予者
- tab_columns 表和视图的列信息 ,包括列的数据类型等信息
- tab_privs 表权限信息
- tables 表信息 包括表所属的表空间 ,存储参数 ,数据行数量等信息。
- triggers 触发器信息 包括触发器的类型,事件。触发器体等信息
- users 用户信息 。包括用户临时和默认的表空间的类型
- views 视图 信息
SQLPLUS命令:
SHOW USER:显示当前链接用户
SET LINESIZE 300:设置行宽300,默认100
COL 列名 FORMAT A20:设置某行显示的字数长度
SEL PAGESIZE 30:
DESC 表名:显示表结构
CONN 用户名/密码:链接登陆