视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
Oracle用户、角色权限管理上的几个误区
2020-11-09 11:00:52 责编:小采
文档


Oracle目前没有提供查看某个用户所有角色或所有权限的视图。要查看这类信息,一般通过如下SQL语句:

如果你想查看数据库中哪些用户具有修改SCOTT.DEPT表的权限,你会怎么查?

答:select * from dba_tab_privs where OWNER='SCOTT' and TABLE_NAME='DEPT';

这个语句结果是错误的.......如果角色A,有修改此表的权限,所有具有角色A的用户都被漏掉了。

如果你想查看哪些用户具有DBA权限,你会怎么查?你确定查询结果是正确的?

答:select grantee,granted_role from dba_role_privs where granted_role='DBA';

这个语句结果是错误的......,具体在第三部分测试。

如果你将CONNECT、RESOURCE角色授予某个用户,同时授予SELECT ON SCOTT.DEPT的权限,该如何查看这个用户拥有的权限明细?

答:不好查。

如何对比两个用户的表级权限有无差异?

答:select * from dba_tab_privs where grantee='A' ; select * from dba_tab_privs where grantee='B' ;一看就出来了。

这个语句结果是错误的,如果将角色C授予A,角色D授予B。dba_tab_privs中都不会有记录。如果角色C、D权限不一致,问题就出来了。

看完本文,你就明白为什么了。呵,相信本文可以让您对Oracle的权限管理更加得心应手。

一、通用查询

Oracle目前没有提供查看某个用户所有角色或所有权限的视图。要查看这类信息,,一般通过如下SQL语句:

SQL> select count(*) from session_privs;

COUNT(*)
----------
202

SQL> select count(*) from session_roles;

COUNT(*)
----------
20

SQL>

这两个视图,只能查看当前连接用户拥有的权限和角色。

DBA如果需要查看其它用户的权限、角色,必须切换用户登入,再执行上述SQL。

下载本文
显示全文
专题