我只需要在同一个DB下为用户创建表。 letz考虑3个架构。
Schema_1,Schema_2和Schema_3。
架构1具有DBA权限。
是否可以在Schema_1 ????
中的SChema_2或Schema_3中进行表格或者我们需要赋予这个角色“CREATE ANY TABLE”吗?
答案 0 :(得分:1)
DBA角色应该在典型安装中具有此权限 - 您可以通过以下方式查看具有此权限的其他角色/用户:
从dba_sys_privs中选择受让人,其中privilege ='CREATE ANY TABLE'
答案 1 :(得分:0)
正如@dpbradly所述,Oracle“开箱即用”的DBA角色权限包括“CREATE ANY TABLE”权限。您可以使用以下查询进行检查(并查看授予此角色的所有系统权限):
SELECT * FROM role_sys_privs WHERE role = 'DBA' ORDER BY PRIVILEGE;
Oracle数据字典是你的朋友。
答案 2 :(得分:0)
好的,让我们清楚一点
CREATE ANY TABLE
是系统特权而非角色您只需撰写GRANT DBA TO <USER_NAME> WITH ADMIN OPTION;
即可授予任何用户DBA权限
话虽这么说,schema_1
将能够为任何用户创建表,因为他有CREATE ANY TABLE
权限
create table hr.dbaMade_tab
(id number,
name varchar2(20)
);
如果schema_1授予CREATE ANY TABLE
,那么schema_2和schema_3将能够为任何表创建表。
不要向任何人授予DBA角色。创建新角色并为其提供必要的权限,并将该角色授予其他用户。在您的情况下schema_2和schema_3。希望有所帮助。