【发布时间】:2016-11-12 08:24:54
【问题描述】:
我只需要创建从用户到同一数据库下的任何用户的表。 让我们考虑 3 种模式。
Schema_1、Schema_2 和 Schema_3。
模式 1 具有 DBA 特权。
是否可以从 Schema_1 在 Schema_2 或 Schema_3 中建表????
或者我们也需要给这个角色“创建任何表”??
【问题讨论】:
标签: database oracle permissions database-permissions
我只需要创建从用户到同一数据库下的任何用户的表。 让我们考虑 3 种模式。
Schema_1、Schema_2 和 Schema_3。
模式 1 具有 DBA 特权。
是否可以从 Schema_1 在 Schema_2 或 Schema_3 中建表????
或者我们也需要给这个角色“创建任何表”??
【问题讨论】:
标签: database oracle permissions database-permissions
DBA 角色在典型安装中应具有此权限 - 您可以通过以下方式查看具有此权限的其他角色/用户:
从 dba_sys_privs 中选择被授予者,其中 privilege = 'CREATE ANY TABLE'
【讨论】:
正如@dpbradly 所说,Oracle 对 DBA 角色的“开箱即用”权限包括“CREATE ANY TABLE”权限。您可以使用以下查询检查这一点(并查看授予此角色的所有系统权限):
SELECT * FROM role_sys_privs WHERE role = 'DBA' ORDER BY PRIVILEGE;
Oracle 数据字典是您的朋友。
【讨论】:
好的,让我们把一些事情说清楚
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。希望对您有所帮助。
【讨论】: