2015-09-01 79 views
1

为什么我获得ORA-01952:系统权限未授予'ROJIB'?ORA-01952:系统权限未授予'ROJIB

创建角色:

SQL> create role security; 

Role created. 

,然后创建津贴为角色 '安全':

SQL> grant create table,create view to security; 

Grant succeeded. 

授予用户:

SQL> grant security to rojib; 

Grant succeeded. 

在撤销,我得到的错误:

SQL> revoke create table from rojib; 
revoke create table from rojib 
* 
ERROR at line 1: 
ORA-01952: system privileges not granted to 'ROJIB' 
+0

当您试图从用户撤销特权而不是从角色中撤销特权时,您已通过角色授予用户特权。 –

回答

3

为什么我得到ORA-01952:系统权限没有授予'ROJIB'?

那是因为你授予权限为ROLESECURITY,所以你需要作用SECURITY,而不是用户 REVOKE的特权。

例如,

创建一个用户:

SQL> CREATE USER TEST IDENTIFIED BY TEST; 

User created. 

创建角色:

SQL> CREATE ROLE SECURITY; 

Role created. 

授予权限给角色:

SQL> GRANT CREATE TABLE,CREATE VIEW TO SECURITY; 

Grant succeeded. 

授予角色的用户:

SQL> GRANT SECURITY TO TEST; 

Grant succeeded. 

从角色撤销特权:

SQL> REVOKE CREATE TABLE FROM SECURITY; 

Revoke succeeded. 

从用户撤销角色:

SQL> REVOKE SECURITY FROM TEST; 

Revoke succeeded.