免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 878 | 回复: 0
打印 上一主题 下一主题

数据字典和动态性能视图 浅解 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-12-20 09:48 |只看该作者 |倒序浏览
数据字典动态性能视图 
数据字典是oracle数据库中最重要的组成部分,它提供了数据库的一些系统信息。 
动态性能视图记载了例程启动后的相关信息。 

数据字典 
数据字典记录了数据库的系统信息,它是只读表和视图的集合,数据字典的所有者为sys用户。 
用户只能在数据字典上执行查询操作(select语句),而其维护和修改是由系统自动完成的。 
数据字典的组成:数据字典包括数据字典基表和数据字典视图,其中基表存储数据库的基本信息,普通用户不能直接访问数据字典的基表。数据字典视图是基于数据字典基表所建立的视图,普通用户可以通过查询数据字典视图取得系统信息。数据字典视图主要包括:user_xxx,all_xxx,dba_xxx三种类型。 
user_tables: 
用于显示当前用户所拥有的所有表,它只返回用户所对应方案的所有表。 
比如:select table_name from user_tables; 
all_tables 
用于显示当前用户可以访问的所有表,它不仅会返回当前用户方案的所有表,还会返回当前用户可以访问的其它方案的表 
select table_name from all_tables; 
dba_tables: 
它会显示所有方案拥有的数据库表,但是要查询这种数据字典视图,要求用户必须是dba角色,或是拥有select any table系统权限, 
例如:当system用户查询数据字典视图dba_tables时,会返回system,sys,Scott,……方案所对应的数据库表。 
用户名、权限、角色 
在建立用户时,oracle会把用户的信息存放到数据字典中,当给用户授予权限或是角色时,oracle会将权限和角色的信息存放到数据字典中。 
通过查询dba_users可以显示所有数据库用户的详细信息 
通过查询数据字典视图dba_sys_privs,可以显示用户所具有的系统权限 
通过查询数据字典视图dba_tab_privs可以显示用户所具有的对象权限 
通过查询数据字典视图dba_col_privs可以显示用户具有的列权限 
通过查询数据库字典视图dba_role_privs可以显示用户所具有的角色 
查询oracle中所有的系统权限,一般是DBA: 
select * from system_privilege_map order by name; 
查询oracle中的所有角色,一般是DBA: 
select * from dba_roles; 
查询oracle中所有的对象权限,一般是DBA 
select distinct privilege from dba_tab_privs; 
查询数据库的表空间 
select tablespace_name from dba_tablespaces; 

那么,一个角色具有哪些权限呢? 
我们知道权限分为系统权限和对象权限,我们先看看系统权限: 
SQL> select * from dba_sys_privs where grantee='CONNECT'; 

GRANTEE                        PRIVILEGE                                ADMIN_OPTION 
------------------------------ ---------------------------------------- ------------ 
CONNECT                        CREATE SESSION                           NO 

SQL>  select * from dba_sys_privs where grantee='RESOURCE'; 

GRANTEE                        PRIVILEGE                                ADMIN_OPTION 
------------------------------ ---------------------------------------- ------------ 
RESOURCE                       CREATE TRIGGER                           NO 
RESOURCE                       CREATE SEQUENCE                          NO 
RESOURCE                       CREATE TYPE                              NO 
RESOURCE                       CREATE PROCEDURE                         NO 
RESOURCE                       CREATE CLUSTER                           NO 
RESOURCE                       CREATE OPERATOR                          NO 
RESOURCE                       CREATE INDEXTYPE                         NO 
RESOURCE                       CREATE TABLE                             NO 
从以上结果可以看出,在oracle 10g中,CONNECT 角色只有CREATE SESSION一个系统权限(oracle 9i中是8个),而RESOURCE角色有8个系统权限 
另外,查看系统权限还可以这样操作: 
select * from role_sys_privs where role=’角色名’ 
其实这些信息完全可以通过PL/SQL Developer方便查看。 
再看看对象权限: 
select * from dba_tab_privs where grantee='角色名'; 
利用上面这句话可以得到一个角色所具有的对象权限 

查询某个用户具有怎样的角色 
select * from dba_role_privs where grantee=’用户名’ 
显示当前用户可以访问的所有数据字典视图 
select * from dict where comments like ‘%grant%’; 
显示当前数据库全称 
select * from global_name; 
动态性能视图 
动态性能视图用于记录当前例程的活动信息,当启动oracle server时,系统会建立动态性能视图,当停止oracle server时,系统会删除动态性能视图。oracle的所有动态性能视图都是以V_$开头的, 并且oracle的每个动态性能视图都提供了相应的同义词,并且其同义词都是以V$开头的,例如v_$datafile的同义词为V$datafile;动态性能视图的所有者为sys,一般情况下由dba或特权用户查询动态性能视图。不过这些在实际中用的并不多…… 
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP