2015-09-01 82 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.