日期:2014-05-16 浏览次数:20456 次
1. 数据字典是oracle数据库中最重要的组成部分,它提供了数据库的一些系统信息。它是只读表和视图的集合,所有者为sys用户。用户自能在数据字典上执行查询操作,而维护和修改是由系统自动完成的。
?
数据字典包括数据字典基表和数据字典视图,其中基表存储数据库的基表信息,普通用户不能直接访问数据字典的基表;数据字典视图是基于数据字典基表所建立的视图,普通用户可以通过查询数据字典视图取得系统信息。
?
数据字典视图主要包括三种类型:user_xxx, all_xxx, dba_xxx
?
user_tables:显示当前用户下所拥有的所有表。它只返回当前用户所有表。
all_talbes: 显示当前用户可访问的所有表。
dba_talbes: 显示所有用户的所有表。要求查询用户拥有dba角色或者select any table系统权限。
?
user_xxx <?all_xxx?<= dba_xxx
?
SQL> create user tt identified by tt; 用户已创建。 SQL> grant resource,connect to tt; 授权成功。 SQL> conn tt/tt 已连接。 SQL> select count(*) from user_tables; COUNT(*) ---------- 0 SQL> select count(*) from all_tables; COUNT(*) ---------- 91 SQL> select count(*) from dba_tables; select count(*) from dba_tables * 第 1 行出现错误: ORA-00942: 表或视图不存在
?? 查询dba_tables的时候,必须有dba角色或者select any talbes 的系统权限。否则会报错。?
?
在建立用户时,oracle会把用户的信息放到数据字典中。
dba_users:可查询用户的一些信息。
dba_roles: 可查询oracle有多少角色。
dba_sys_privs:可查询用户所具有的系统权限
system_privilege_map:可查询用户所具有的系统权限
dba_tab_privs: 可查询用户所具有的对象权限。
dba_role_privs: 可查询用户所拥有的角色。
dba_tablespaces:可查询出oracle表空间信息。
?
查询DBA角色所拥有的系统权限:
select * from dba_sys_privs where grantee='DBA';
select * from role_sys_privs where role = 'DBA';
?
查询DBA角色所拥有的对象权限:
select * from dba_tab_privs where grantee = 'DBA';
当给用户授权或是角色时,oracle也会将权限和角色信息放入数据字典中。
?
查询scott用户拥有那些角色:
select * from dba_role_privs where grantee='SCOTT';
?
查询当前数据库全称:
select * from global_name;
?
2. 动态性能视图记载了例程启动后的相关信息。
?
以 v$ 开头。
?