日期:2014-05-16  浏览次数:20456 次

oracle基表和动态性能视图

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$ 开头。

?