【问题标题】:Is Oracle DBA Privilege include "CREATE ANY TABLE" role?Oracle DBA 权限是否包括“CREATE ANY TABLE”角色?
【发布时间】: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


    【解决方案1】:

    DBA 角色在典型安装中应具有此权限 - 您可以通过以下方式查看具有此权限的其他角色/用户:

    从 dba_sys_privs 中选择被授予者,其中 privilege = 'CREATE ANY TABLE'

    【讨论】:

      【解决方案2】:

      正如@dpbradly 所说,Oracle 对 DBA 角色的“开箱即用”权限包括“CREATE ANY TABLE”权限。您可以使用以下查询检查这一点(并查看授予此角色的所有系统权限):

      SELECT * FROM role_sys_privs WHERE role = 'DBA' ORDER BY PRIVILEGE;
      

      Oracle 数据字典是您的朋友。

      【讨论】:

        【解决方案3】:

        好的,让我们把一些事情说清楚

        1. CREATE ANY TABLE是系统权限而不是角色
        2. 您可以通过简单地编写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。希望对您有所帮助。

        【讨论】:

          猜你喜欢
          • 2019-06-26
          • 2011-08-10
          • 1970-01-01
          • 2012-11-18
          • 1970-01-01
          • 2010-11-13
          • 2021-08-26
          • 2012-04-17
          • 2019-04-27
          相关资源
          最近更新 更多