zjyhll 2020-04-26
oracle 提供了大量的内部表,他们记录了数据库对象信息,可以将这些内部表划分为两种主要类型,静态的数据字典表,和动态的性能表。这些内部表是由oracle 为主的。他们都是只读表。用户包括sys 都不能修改只能查看。数据库字典是在创建和安装数据库是被创建的
2.数据库字典内容
)1.数据库中所有模式对象的信息,如表,视图,簇,以及索引等
)2.分配了多少空间,当前使用了多少空间等
)3.列的缺省值
)4 约束信息的完整性
)5 oralce用户的名字
)6 用户及角色被授予的权限
)7 用户访问或使用的审计信息
)8其他产生的数据库信息
3 数据字典组成
)1数据字典表:是oarcle 存储系统数据的表,这些表属于sys用户。用以存储表,索引,约束以及其他数据库结构信息,通常以$ 结尾,如tab$,obj$,ts$ayd$等。
)2内部表x$ : oracle的核心,官网不做说明,oracle通过大量x$建立起大量视图,仅供用户select
)3数据字典视图:数据字典表上创建,通常分为三类,dba,all,user_
)4动态性能视图v$ :实施更新反应当前实例的状态,官网对v$视图有详尽的说明.
实际工作中最常用的数据库字典视图,和性能表
4 查询静态和动态视图的名称
dict 表记录了所有静态视图和动态视图的名称
select * from dict where table_name=‘DBA_OBJECTS‘;
select count(*) from dict
)1数据字典视图(静态视图)
在数据库open状态下访问,可以通过静态视图了解 database的架构
dba 存储所有用户对象的信息,默认只能有个sys system 用户访问
all 存储当前用户能够访问的对象(包括用户所拥有的对象和别的用户授权访问的对象)的信息)
user_ 存储当前用户所拥有的对象的相关信息
)数据字典视图动态视图(v$)
是维护当前实例信息的,由于不断的更新,所以也叫动态视图。其地城是一组虚拟的动态表,成为x$表,oracle 不允许直接访问,而是在这些表上创建视图,在创建同义词。
可以通过v$fixed table 视图 查到所有的动态视图的名称。用于调优和数据库监控
)2 如何普通用户有访问dba_xxx 的三种授权方法
第一种grant select on dba_objects to scott \将对象权限赋予 scott
第二种grant select any dictionary to scott \ 将系统权限赋予给scott
第三种
grant select any table to scott ;
alter system set O7_DICTIONARY_ACCESSIBILITY=true scope=spfile;
)3 如何让普通用户访问v$xxx
grant select on v$_log to scott