8-1 Oracle 系統架構

8-2 資料字典

8-3 使用者(User)

8-4 資料庫安全性

8-5 權限與角色

 
   

Oracle 提供大量的防護功能以保護資料,以避免有人未經授權使用資料以及有意或無心的破壞資料。在以前,Oracle 的 DBA (資料庫管理者)必須將系統權限或物件權限一一授與每一個使用者,或者將系統權限或物件權限一一從每一個使用者中回收。如此在管理方面並不是很方便,因此 Oracle 就創造了「角色」(Role) 這資料庫物件來方便 DBA 在權限上的管理。
 

在 ORACLE 系統中的權限有兩種:系統權限(System Privilege) 和物件權限(Object Privilege)。

 1. 系統權限(System Privilege)

 系統權限是指對於系統中執行特殊的資料庫操作的權利。系統權限可授權給使用者(User) 或角色(Role)。

   

2. 物件權限(Object Privilege)

物件權限允許授與者對資料庫物件執行某種操作。每種資料庫物件型態可授的物件權限如表二所示:

表二 物件權限

物件權限

視觀表格

序列

副程式、函數、套裝程式

快照

ALTER

ü   ü    

DELETE

ü ü      

EXECUTE

      ü  

INDEX

ü        

INSERT

ü ü      

REFERENCES

ü        

SELECT

ü ü ü   ü

UPDATE

ü ü      

 

ALTER 權限

允許被授與者進行修改。

DELETE 權限

允許被授與者進行刪除操作。

INDEX 權限

允許被授與者建立索引。

INSERT 權限

允許被授與者進行新增操作。

REFERENCES 權限

允許被授與者建立參考整合限制參考該表格。注意:這種物件權限是不能授給角色。

SELECT 權限

允許被授與者進行查詢操作。

UPDATE 權限

允許被授與者進行修改操作。

   

一個角色(role) 是一組已選擇的權限,它可授權給其他使用者或其他角色。ORACLE 系統利用角色來方便資料庫的權限管理。ORACLE 使用角色管理資料庫有以下的主要優點:

減少權限管理

動態權限管理

在 ORACLE 中,有些角色由 ORACLE 自動建立。ORACLE 預先定義的角色及其所具有權限如表三所示。ORACLE 8 以上的版本之預先定義的角色與授予系統權限將會比較多,此處作者只列出部分常見的預定角色與系統權限。


表三 ORACLE 常見預定的角色

角 色 名

授 給 的 系 統 權 限 和 角 色

CONNECT

ALTER SESSION,
CREATE CLUSTER,
CREATE DATABASE LINK,
CREATE SEQUENCE,
CREATE SESSION,
CREATE SYNONYM,
CREATE TABLE,
CREATE VIEW

RESOURCE

CREATE CLUSTER,
CREATE INDEXTYPE,
CREATE OPERATOR,
CREATE PROCEDURE,
CREATE SEQUENCE,
CREATE TABLE,
CREATE TRIGGER,
CREATE TYPE

DBA

全部系統權限並具 WITH ADMIN OPTION,
DELETE_CATALOG_ROLE 角色,
EXECUTE_CATALOG_ROLE 角色,
EXP_FULL_DATABASE 角色,
IMP_FULL_DATABASE 角色,
JAVA_ADMIN 角色,
SELECT_CATALOG_ROLE 角色,

EXP_FULL_DATABASE 

包含資料庫的輸出所需的權限:
SELECT ANY TABLE,
BACKUP ANY TABLE,
EXECUTE ANY PROCEDURE,
EXECUTE ANY TYPE,
ADMINISTER RESOURCE MANAGER,
表格 SYS.INCVID, SYS.INCFIL與SYS.INCEXP的新增、刪除與修改的物件權限,
EXECUTE_CATALOG_ROLE 角色, SELECT_CATALOG_ROLE 角色

IMP_FULL_DATABASE 

包含資料庫的輸入所需的權限:
EXECUTE_CATALOG_ROLE 角色, SELECT_CATALOG_ROLE 角色
詳細的系統權限可利用
SELECT * FROM DBA_SYS_PRIVS
WHERE GRANTEE =’ IMP_FULL_DATABASE’
來列出


以下我們對於常見的預定角色做說明: 

具有 CONNECT 角色的使用者

具有 RESOURCE 角色的使用者

擁有 DBA 角色的使用者

 
 
1. 建立角色─CREATE ROLE
 

操作必須擁有 CREATE ROLE 系統權限,不然會出現權限不足的錯誤。語法如下:
CREATE ROLE <角色名> [IDENTIFIED BY <密碼>]
IDENTIFIED BY 密碼: 指定授予該角色的使用者,在使用 SET ROLE 指令時必須檢驗密碼。
 

當使用者 NEWDBA 沒有 CREATE ROLE 系統權限時,建立新的角色會出現的錯誤。

 

因為使用者 NEWDBA 沒有 CREATE ROLE 系統權限,所以我們可以要求 DBA 給予使用者 CREATE ROLE 系統權限或 DBA 角色。我們以 SYSTEM 身份登錄系統,並授權使用者 NEWDBA 予角色 DBA:

 



 

建立新的角色 TESTROLE 並加上密碼確認。

 


 

建立新的角色 STUDENTS 不需加上密碼確認。

 

 

2. 更改角色─ALTER ROLE
 

操作必須擁有 ALTER ROLE 系統權限,或在該角色上具有 ADMIN OPTION 的授權。語法如下:
ALTER ROLE <角色名> [ IDENTIFIED BY <密碼>]

 

更改角色 STUDENTS 的密碼。(本來角色 STUDENTS 是沒有密碼)

 

由以上的介紹,我們了解到 ORACLE 系統預先定義的角色與如何自定新的角色。我們可以利用資料字典 DBA_ROLES 來知道目前 ORACLE 系統中已被定義的角色,其中包含 ORACLE 系統預先定義的角色。因為資料字典 DBA_ROLES 的擁有者為 SYS,所以操作者必須具備有 DBA 角色或系統管理者 SYS 有授予查詢 DBA_ROLES 的權限,亦即系統管理者 SYS 執行“GRANT SELECT ON DBA_ROLES TO <使用者>”,才能作查詢的動作。
 

3. 刪除角色─DROP ROLE
 

操作必須擁有 DROP ROLE 系統權限或在該角色上具有 ADMIN OPTION 的授權,語法如下:
DROP ROLE <角色名>
 

刪除角色 TESTROLE。

 


 

查詢目前 ORACLE 系統中已被定義的角色。

 

其中 PASSWORD 表示當該角色建立時,是否有設定密碼。NO 表示建立時沒有設定密碼,YES 表示建立時有設定密碼。因為我們在上面例 4 中,設定了角色 STUDENTS 的密碼,所以它的 PASSWORD 則為 YES。
 

4. 暫時讓使用者所擁有的角色有效(Enable) 或失效(Disable)─SET ROLE

有時候使用者在連線會談期間(Session),希望將自己所擁有的某些角色暫時使之失效(Disable) 或有效(Enable),以便使自己以某些特定的角色身份執行某些工作,語法如下:
SET ROLE {<角色名>|ALL [ EXCEPT <角色名>]|NONE}
[IDENTIFIED BY <密碼>]

 

暫時讓使用者 NEWDBA 所有的角色全部失效。(假設使用者 NEWDBA 擁有 CONNECT、RESOURCE、DBA 與 STUDENTS 角色)

 

此時若欲建立新的表格,則會出現以下權限不足的錯誤。

 


因為我們暫時讓使用者所有的角色全部失效,當然其中包括 RESOURCE 角色中的 CREATE TABLE 系統權限。所以我們可以利用例 8,例 9 或例 10 來更正錯誤。
 

恢復除了 STUDENTS 角色以外之使用者所有的角色。

 


 

恢復使用者的 RESOURCE 角色。

 


 

恢復使用者所有的角色。

 

為何會出現錯誤呢?問題出現在我們建立 STUDENTS 角色時,有加上密碼要求確認所致,所以只要我們使用到 STUDENTS 角色時,一定要加上密碼確認才行。所以只好將全部的角色一個一個列出設定。假設使用者 NEWDBA 擁有 CONNECT、RESOURCE、DBA 與 STUDENTS 角色。
 

 

 


我們可以利用資料字典來查詢目前使用者 NEWDBA 所擁有的角色。
 

 

資料字典 USER_ROLE_PRIVS 中有使用者所擁有的角色資料。因為使用者 NEWDBA 是角色 STUDENTS 的建立者,自然就擁有 ADMIN OPTION 的權限。所以角色 STUDENTS 對應的 ADM 部份就為 YES。

 
 
 1. 系統權限或角色之授予 ─ GRANT
 

操作者若欲將某系統權限授予某角色或使用者時,必須具備有 GRANT ANY PRIVILEGE 的系統權限或者對於該系統權限上具有 ADMIN OPTION 的授權;操作者若欲將某角色授予另一角色或使用者時,必須具備有 GRANT ANY ROLE 的系統權限或對於該角色具有 ADMIN OPTION 的授權。其語法為:

GRANT {<系統權限>| <角色>} TO {<使用者> | <角色> | PUBLIC}
[ WITH ADMIN OPTION]

WITH ADMIN OPTION:允許被授予者將系統權限或角色授予其他使用者或角色。
PUBLIC:表示將系統權限和角色授予系統中全部使用者。
若將系統權限或角色授予某使用者,ORACLE 系統會將該系統權限或角色加入使用者的權限中,使用者立即可以使用該系統權限或角色;若將系統權限或角色授予 PUBLIC,ORACLE 系統會將該系統權限或角色加入到 ORACLE 系統中的每一個使用者。

 

以 SYSTEM 身份登錄系統並授權 ALTER ANY TABLE 系統權限給角色 STUDENTS,並允許角色 STUDENTS 再將該權限授予他人。(授予系統權限給予某角色的例子)

 
 

因為資料字典 ROLE_SYS_PRIVS 中有角色所擁有的系統權限資料。我們可以查詢資料字典 ROLE_SYS_PRIVS 來獲得角色 STUDENTS 的系統權限:
 

查詢角色 STUDENTS 所擁有的系統權限。

 
 

其中因為授權角色 STUDENTS 的 ALTER ANY TABLE 系統權限時,有授予 ADMIN OPTION 的權限。所以系統權限 ALTER ANY TABLE 所對應的 ADM 部份則為 YES。
 

以 NEWDBA 身份登錄系統並將角色 STUDENTS 授予使用者 SCOTT,並允許 SCOTT 將該角色授予他人。(將角色授予使用者的例子)

 
 


 

以 SCOTT 身份登錄系統並查詢使用者本身的角色。

 

我們可以先以 SCOTT 身份登錄系統,再利用資料字典 USER_ROLE_PRIVS 來查詢 SCOTT 所擁有的角色:
 

 


 

其中因為授權 SCOTT 角色 STUDENTS 時,有授予 ADMIN OPTION 的權限。所以角色 STUDENTS 所對應的 ADM 部份則為 YES。
 

以 SYSTEM 身份登錄系統並將 ALTER SESSION 系統權限授予使用者 SCOTT,並允許 SCOTT 將該系統權限授予他人。(將系統權限授予使用者的例子)

 
 



 

因為資料字典 USER_SYS_PRIVS 中有使用者所擁有的系統權限資料。我們可以先以 SCOTT 登錄,再利用資料字典 USER_SYS_PRIVS 來查詢 SCOTT 所擁有的系統權限。
 

以 SCOTT 身份登錄系統並查詢使用者本身的系統權限。

 
 



 

其中因為授權 SCOTT 系統權限 ALTER SESSION 時,有授予 ADMIN OPTION 的權限。所以系統權限 ALTER SESSION 所對應的 ADM 部份則為 YES。而系統權限 UNLIMITED TABLESPACE 是由於內定角色 RESOURCE 所產生的。
 

以 NEWDBA 身份登錄系統,先建立新的角色 NEWROLE,再授權 STUDNETS 角色給新的角色 NEWROLE,並且允許新的角色 NEWROLE 將該權限授予他人。(將角色授予某角色的例子)

 
 

因為資料字典 ROLE_ROLE_PRIVS 中有角色所擁有的角色資料。我們可以查詢資料字典 ROLE_ROLE_PRIVS 來獲得角色 STUDENTS 的角色。
 

查詢角色 NEWROLE 所擁有的角色。

 
 

   
2. 回收系統權限或角色 ─ REVOKE

操作者欲對某使用者或角色回收系統權限,則必須具備有 GRANT ANY PRIVILEGE 的系統權限或者對於該系統權限上具備有 ADMIN OPTION 的授權;操作者欲對某使用者或角色回收角色,必須具備有 GRANT ANY ROLE 的系統權限或對於該角色上具備有 ADMIN OPTION 的授權。其語法為:

REVOKE {<系統權限> | <角色>} FROM{<使用者>|<角色>|PUBLIC}

回收權限指令可從角色、使用者或 PUBLIC (ORACLE 系統中的全部使用者) 中回收系統權限或角色。當從使用者中回收某系統權限時,ORACLE 系統就會將權限從使用者的權限中移除,而且立即生效;當從使用者中回收某角色時,ORACLE 系統就會將角色從使用者的角色中移除,而且立即生效,回收角色的方式也雷同。我們可利用 REVOKE 指令刪除系統權限:

 

以 NEWDBA 身份登錄系統,並從角色 STUDENTS 中刪除 CREATE SESSION 與 CREATE TABLE 系統權限。(從角色中回收系統權限的例子)

 
 

 


以 NEWDBA 身份登錄系統,並從角色 NEWROLE 中刪除角色STUDENTS。(從角色中回收角色的例子)
 

假設我們利用查詢資料表格 ROLE_ROLE_PRIVS 得知角色 NEWROLE 所擁有的角色:

 


 


再從角色 NEWROLE 中刪除角色 STUDENTS:
 

 

 


我們可以再利用查詢資料表格 ROLE_ROLE_PRIVS 得知角色 NEWROLE 所擁有的角色:
 

 

 

我們發現結果為“沒有任何資料列被選取”,表示角色 NEWROLE 沒有任何角色。
 

以 NEWDBA 身份登錄系統,並從使用者 SCOTT 的角色中刪除角色 STUDENTS。(從使用者的角色中回收角色的例子)

 

我們可以先以 SCOTT 身份登錄系統,再利用以下方式查詢 SCOTT 擁有的角色:

 


 

 

再以 NEWDBA 身份登錄系統並從使用者 SCOTT 的角色中刪除角色 STUDENTS:
 

 


 

 

我們可以以 SCOTT 身份登錄系統,再利用以下方式查詢 SCOTT 所擁有的角色:
 

 


 

 

我們可以先以 SCOTT 登錄系統,再利用以下方式查詢 SCOTT 擁有的系統權限:
 

 


 

以 SYSTEM 身份登錄系統,並從使用者 SCOTT 刪除系統權限 CREATE ANY TABLE。(從使用者的系統權限中回收系統權限的例子)

 
 

 

我們可以用 SCOTT 身份登錄系統,再利用以下方式查詢 SCOTT 所擁有的系統權限:

 



 

 

我們也可利用同樣的方法從使用者 SCOTT 刪除系統權限 ALTER SESSION:
 

 

 


我再們可以用 SCOTT 身份登錄系統,再利用以下方式查詢 SCOTT 所擁有的系統權限:
 

 

   

 1. 授予物件權限指令-GRANT

操作者本身必須擁有該物件的權限並具備有 GRANT OPTION 權限。其語法為:

GRANT {<物件權限> | ALL} ON <物件名> 
TO { <使用者> | <角色> | PUBLIC}
[ WITH GRANT OPTION]

ALL:表示操作者被授予在該物件權限上具有包括 GRANT OPTION 的全部物件權限的授權。
WITH GRANT OPTION:允許被授權者可將該物件權限授權給其他的使用者或角色。
若將物件權限授予某使用者,則 ORACLE 系統會將該物件權限加到該使用者的權限中,而且立即生效;若將物件權限授予某角色,則 ORACLE 系統會將該物件權限加到該角色的權限中,而且立即生效。
 

以 SCOTT 身份登錄系統,再授權使用者 STUDENT 對於 SCOTT 的 EMP 表格之查詢(SELECT) 權限,並允許使用者 STUDENT 將此權限授予他人。(將物件權限授予使用者的例子)

 
 

   

以 SCOTT 身份登錄系統,再查詢使用者本身所授予其他使用者表格的物件權限。

 
 

SIDURAIC 項目的意義如下:

S:查詢資料的物件權限,N 表示沒有查詢資料的物件權限,Y 表示有查詢資料的物件權限,G 表示可授予他人此查詢資料的物件權限(GRANT OPTION)。

I:新增資料的物件權限,N 表示沒有新增資料的物件權限,A 表示有新增資料的物件權限,G 表示可授予他人此新增資料的物件權限(GRANT OPTION)。

D:刪除資料的物件權限,N 表示沒有刪除資料的物件權限,Y 表示有刪除資料的物件權限,G 表示可授予他人此刪除資料的物件權限(GRANT OPTION)。

U:更新資料的物件權限,N 表示沒有更新資料的物件權限,A 表示有更新資料的物件權限,G 表示可授予他人此更新資料的物件權限(GRANT OPTION)。

R:參考資料的物件權限,N 表示沒有參考資料的物件權限,A 表示有參考資料的物件權限,G 表示可授予他人此參考資料的物件權限(GRANT OPTION)。

A:更新結構的物件權限,N 表示沒有更新結構的物件權限,Y 表示有更新結構的物件權限,G 表示可授予他人此更新結構的物件權限(GRANT OPTION)。

I:建立索引的物件權限,N 表示沒有建立索引的物件權限,Y 表示有建立索引的物件權限,G 表示可授予他人此建立索引的物件權限(GRANT OPTION)。

除了資料字典 TABLE_PRIVILEGES 外,我們亦可查詢資料字典 USER_TAB_PRIVS,因為資料字典 USER_TAB_PRIVS 中有使用者所有的物件權限資料,其中包含使用者為擁有者(OWNER)、使用者為授予者(GRANTOR)、使用者為被授予者(GRANTEE) 與授予之物件權限。我們可以查詢資料字典 USER_TAB_PRIVS 來獲得表格的物件權限資料。USER_TAB_PRIVS 與 TABLE_PRIVILEGES 最大的差異為 USER_TAB_PRIVS 只列出與使用者有關的物件權限資料,不像 TABLE_PRIVILEGES 會列出全部使用者有關的物件權限資料。

   

以 SCOTT 身份登錄系統,再利用資料字典 USER_TAB_PRIVS 查詢使用者本身有關 EMP 表格所授予的表格之物件權限。

 
 


 

其中 GRA 為 GRANTABLE 表示是否有被授予 GRANT OPTION 權限,GRA 為 YES 則為有授予 GRANT OPTION 權限,GRA 為 NO 則為沒有授予 GRANT OPTION 權限。例子中,在表格 EMP 使用者 SCOTT 有授予使用者 STUDENT 查詢資料(SELECT) 的物件權限。
 

 

若是想要知道使用者授予其他使用者物件權限資料,可查詢資料字典 USER_TAB_PRIVS_MADE;若是想要知道使用者被其他使用者授予物件權限資料,可查詢資料字典 USER_TAB_PRIVS_RECD:

 

 

以 SCOTT 身份登錄系統,再利用資料字典 USER_TAB_ PRIVS_MADE 查詢使用者 SCOTT 有關 DEPT 表格所授予其他使用者表格的物件權限。

 
 

   

以 SCOTT 身份登錄系統,再授權使用者 JEHUANG 對於 SCOTT 的 EMP 表格之所有物件權限(ALL),並允許使用者 JEHUANG 將此權限授予他人。然後再以 JEHUANG 身份登錄系統,將 SCOTT 的 EMP 的刪除(DELETE) 權限給使用者 STUDENT。

 

首先以 SCOTT 身份登錄系統,再授權給使用者 JEHUANG:

 



 

 

然後再以 JEHUANG 身份登錄系統,將 SCOTT 的 EMP 的刪除(DELETE) 權限給使用者 STUDENT:
 

 

   

以STUDENT身份登錄系統,並利用資料字典USER_TAB_ PRIVS_RECD 查詢使用者 STUDENT 所被授予的表格之物件權限。

 
 


 

其中,OWNER 表示表格的擁有者,GRANTOR 表示物件權限的授予者,PRIVILEGE 表示被授予的物件權限,GRANTABLE 表示是否有被授予 GRANT OPTION 權限,由上面的結果,我們可以看出使用者 STUDENT 被使用者 JEHUANG 與 SCOTT 授予 SCOTT 的表格 EMP 的 SELECT、INSERT 與 DELETE 物件權限。其中值得我們注意的是,GRANTOR (授予者) 不一定是 OWNER (擁有者),只要 GRANTOR 有被授予該物件權限的 GRANT OPTION 即可授予其他使用者該物件權限,例如:使用者 STUDENT 得到表格 EMP 的 DELETE 物件權限,但是其 GRANTOR 為 JEHUANG 而非表格 EMP 的原擁有者 SCOTT。

   

以 SCOTT 身份登錄系統,並授權角色 STUDENTS 予表格 EMP 的 SELECT (查詢) 權限與表格 DEPT 的 INSERT(新增) 權限。(將物件權限授予角色的例子)

 
 


 

因為資料字典 ROLE_TAB_PRIVS 中有角色所擁有的物件權限資料。我們可以以 SYSTEM 身份登錄系統,並查詢資料字典 ROLE_TAB_PRIVS 來獲得角色 STUDENTS 的物件權限資料:

 



 

   

以 SCOTT 身份登錄系統,並授權使用者 NEWUSER 與 USER1 在表格 EMP 中的部份欄位(EMPNO, ENAME, SAL, DEPTNO) 有 INSERT 權限與部份欄位(ENAME, SAL) 有 UPDATE 權限,並且允許使用者 NEWUSER 與 USER1 將這些物件權限授予別的使用者。

 
 



 

 

我們可以以其中一位使用者 NEWUSER 登錄系統,並利用資料字典中的 USER_COL_PRIVS 來查詢目前使用者 NEWUSER 被授予了那些欄位的物件權限,其中GRANTEE 表示被授權者,OWNER 表示授權表格的擁有者,TABLE_NAME 表示表格名,COLUMN_NAME 表示被授權欄位名,GRANTOR 表示授權者,PRIVILEGE 表示授予的物件權限,GRANTABLE 表示是 ADMIN OPTION:
 

 

 

 2. 回收物件權限指令-REVOKE
操作者必須曾將該物件權限授予某使用者或角色。其語法如下:

REVOKE {<物件權限> | ALL} ON <物件名>
FROM { <使用者> | <角色> | PUBLIC}
[ CASCADE CONSTRAINT]

其中CASCADE CONSTRAINT為刪除任何整合性限制(Integrity Constraint)。
回收權限指令可從角色、使用者或 PUBLIC (ORACLE 系統中的全部使用者) 回收某物件的物件權限。當從使用者中回收某物件的物件權限時,ORACLE 系統就會將該物件權限從該使用者的物件權限中移除,而且立即生效;當從角色中回收某物件的物件權限時,ORACLE 系統就會將該物件的物件權限從該角色的物件權限中移除,而且立即生效。
 

以 SCOTT 身份登錄系統,並回收使用者 STUDENT 所擁有的 SCOTT 的表格物件權限。(從使用者回收物件權限的例子)

 

由上面的例子中,我們可以知道 STUDENT 所擁有的 SCOTT 的表格物件權限為表格 EMP 的 SELECT、INSERT 與 DELETE 物件權限。我們先以 SCOTT 帳號登錄,嘗試利用以下的指令試試:
 

 

 


結果如預期般地順利,我們再試試下面的指令:
 

 

結果出現了錯誤。到底問題出現在那裡呢? 原來是使用者 STUDENT 所被授予 SCOTT 的表格 EMP 之 DELETE 物件權限是由使用者 JEHUANG 所授予的,而非原 EMP 表格的擁有者 SCOTT所授予,雖然 SCOTT 為 EMP 表格的擁有者,它也不能回收它沒有授出的物件權限,因此必須由使用者 JEHUANG 回收 STUDENT 所被授予 SCOTT 的 EMP 表格之 DELETE 物件權限。所以我們必須以 JEHUANG 帳號登錄,再利用以下的指令回收表格物件權限:
 

 

   

以 SCOTT 身份登錄系統,並撤消角色 STUDENTS 所擁有的 SCOTT 的表格物件權限。(從角色回收物件權限的例子)

 
 


   

以 SCOTT 身份登錄系統,並撤消使用者 NEWUSER 與 USER1 在表格 EMP 中的部份欄位(EMPNO, ENAME, SAL, DEPTNO) 的 INSERT 權限與部份欄位(ENAME, SAL) 的 UPDATE 權限。

 
 

 

除此之外,若是想要知道系統管理者 DBA 授予其他使用者或角色那些系統權限資料,可查詢資料字典 DBA_SYS_PRIVS;若是想要知道系統管理者 DBA 授予其他使用者或角色那些角色資料,可查詢資料字典 DBA_ROLE_PRIVS。因為資料字典 DBA_SYS_PRIVS 與 DBA_ROLE_PRIVS 的擁有者為 SYS,所以操作者必須具備有 DBA 的角色或系統管理者 SYS 有授予查詢 DBA_ROLE_PRIVS 或 DBA_SYS_PRIVS 的權限,才能做查詢的動作。
 

以 SYSTEM 身份登錄系統,並查詢系統管理者 DBA 授予使用者 STUDENT 那些系統權限資料。

 
 



 

其中系統權限 UNLIMITED TABLESPACE 是因為系統管理者 DBA 授予使用者 STUDENT 角色 RESOURCE 而產生的。也就是說如果系統管理者 DBA 刪除使用者 STUDENT 角色 RESOURCE,則系統權限 UNLIMITED TABLESPACE 亦不會存在。

   

以 SYSTEM 身份登錄系統,並查詢系統管理者 DBA 授予使用者 STUDENT 那些角色資料。