3

在网上搜索并阅读 Oracle 文档后,我需要一些帮助来获取在 Oracle 数据库中找到的所有自定义角色。由于我找不到一个很好的资源来为我提供系统表或数据字典的逻辑模型(所以我可以看到 dba_role 映射到的位置),我能想到的最好的方法是:

select role from dba_roles 

然后从那里过滤掉我知道的任何 sys 或 sysdba 角色——我知道这可能不正确。

任何有用的关于使用哪个表的指针将不胜感激。

4

1 回答 1

2

您可以找到视图背后的 SQL dba_roles

select * from dba_views where view_name = 'DBA_ROLES';

这是我系统上的代码:

select name, decode(password, null,          'NO',
                              'EXTERNAL',    'EXTERNAL',
                              'GLOBAL',      'GLOBAL',
                              'YES'),
             decode(password, null,          'NONE',
                              'EXTERNAL',    'EXTERNAL',
                              'GLOBAL',      'GLOBAL',
                              'APPLICATION', 'APPLICATION',
                              'PASSWORD')
from  user$
where type# = 0 and name not in ('PUBLIC', '_NEXT_USER');

几年前,当我跑步时,select * from sys.user$ where type# = 0 order by ctime;我几乎同时看到了很多视图。ctime(时间甚至我的数据库创建之前。)假设旧角色是系统生成的可能是安全的。

但这并不一定意味着最新的角色都是自定义角色。ctime升级或重新编译后,或者安装新选项后,可能会发生变化。

安装一个新实例并减去您在其中看到的任何内容可能会有所帮助dba_roles

于 2012-06-20T06:45:15.543 回答