Oracle 12c授予特权失败

时间:2018-08-16 17:22:23

标签: oracle database-administration

我目前正在尝试向Oracle数据库用户授予几个简单的特权。

我尝试了以下查询:

{Regression results
  Method   Intercept    Slope Angle (degrees) P-perm (1-tailed)
1    OLS  14.9923058 1.965779        63.03736              0.01
2     MA -20.2206577 4.621907        77.79161              0.01
3    SMA  -0.1518283 3.108107        72.16498                NA}

第二个特权是我实际需要的特权,但是我决定简单地尝试给用户所有特权,以查看是否可行。当我使用

检查用户的权限时
grant all privileges to <username>

grant alter session to <username>

一切似乎都说不。

我什至尝试授予用户dba特权,但仍然失败。我的最终目标是运行需要打开这些权限的脚本。

非常感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

  

一切似乎都拒绝了

您正在寻找错误的内容。如果user_sys_privs视图列出了ALTER SESSION

select * from user_sys_privs where privilege = 'ALTER SESSION';

USERNAME             PRIVILEGE     ADM COM
-------------------- ------------- --- ---
MY_USER              ALTER SESSION NO  NO

然后用户具有特权。

NO条目并不意味着未授予特权。显示您的列是

desc user_sys_privs

 Name                                                              Null?    Type
 ----------------------------------------------------------------- -------- --------------------------------------------
 USERNAME                                                                   VARCHAR2(128)
 PRIVILEGE                                                                  VARCHAR2(40)
 ADMIN_OPTION                                                               VARCHAR2(3)
 COMMON                                                                     VARCHAR2(3)

they are described in the documentation

  

ADMIN_OPTION-指示授予是否带有ADMIN选项(YES)(NO

     

COMMON-指示授予方式。可能的值:

     
      
  • YES(如果特权通常被授予(使用了CONTAINER=ALL

  •   
  • NO(如果特权是在本地授予的(未使用CONTAINER=ALL

  •   

由于您没有指定admin选项或任何其他修饰符,所以将这两个标志都设置为NO是正确的。


您可能会感到困惑的是,当您查询用户时,所有权限都会列出,因为 是您grant all privileges to <username>所做的。您可能想撤销所有这些特权,而只授予用户实际需要的特定特权。当您查询user_sys_privs时,您会看到一个简短得多的列表-可能只有该单个条目,具体取决于您需要为用户保留的其他内容。

您可能还想考虑使用角色,尽管有时有时需要直接授予特权-如果存储过程依赖于角色。