在 oracle 中使用具有 dba 权限的系统视图授予创建视图

grant create view using system view with dba privilage in oracle

当我尝试创建像

这样的视图时
create view viewname as select * from table1;

正在运行。但是当我尝试创建像

这样的视图时
Create view view1 as Select * from dba_users;

我无法创建它,但显示权限不足。但是,我能够对给定视图执行 select 操作并获得结果。

select * from dba_users;

我是否需要添加任何其他角色才能创建包含 dba_users(或任何其他带有 dba 的表)作为其定义的一部分的视图

最有可能的问题是您对 dba_users 的访问是通过角色获得的。如果你想创建一个引用 dba_users 的视图(或者如果你想创建一个引用 dba_users 的定义者权限存储过程),你需要直接而不是通过角色向你的用户授予权限.假设您希望能够引用视图和存储过程中的所有数据字典表,您可能希望让您的 DBA 直接授予您 SELECT ANY DICTIONARY 权限,而不是通过角色。