oracle 12c 多租戶體系結構概念之資料字典、服務、使用者、角色與許可權
1. CDB 中的資料字典體系結構
從使用者和應用程式的角度來看, CDB 中每個容器中的資料字典是獨立的,就像在非 CDB 中一樣。
Figure 18-3 Data Dictionary Architecture in a CDB
在 CDB 中,資料字典後設資料只在 root 中儲存,不儲存在 pdb 中( non-CDB 中是混合儲存的)。而物件資料是儲存在 pdb 中的。在 pdb 中如何訪問 root 中的後設資料和物件呢?依靠兩個內部機制: metadata links 和 object links ;
如果要訪問類似 dba_objects 效能檢視,其後設資料只儲存在 root 中,此時就需要使用 metadata links 機制實現讀取。另外,還有一些物件也只儲存在 root 中,例如 awr 資料, DBA_HIST_ACTIVE_SESS_HISTORY 、 DBA_HIST_BASELINE 等,如果要查詢其資料則需要使用 object link 機制實現。 Oracle 資料庫自動建立和管理 metadata links 和 object links ,使用者不能新增、修改或刪除這些連結。
1) CDB 中的容器資料物件
在 CDB 中,每個 DBA_ 檢視,都存在一個對應的 CDB_ 檢視。 CDB_ 檢視的 owner 就是對應的 DBA_ 檢視的 owner 。下圖顯示了 dictionary 檢視的不同類別之間的關係。
Figure 18-4 Dictionary View Relationships in a CDB
2. CDB 中的 service
當您建立 PDB 時,資料庫將自動在 CDB 中建立並啟動服務。服務有一個屬性,顯示在 DBA_SERVICES.PDB 列中,該列將 PDB 標識為服務的初始當前容器。服務的名稱與 PDB 相同。 PDB 名稱必須是有效的服務名稱,並且在 CDB 中必須是惟一的。例如,在圖 18-5 中,名為 hrpdb 的 PDB 有一個名為 hrpdb 的預設服務。不能刪除預設服務。
您可以為每個 PDB 建立額外的服務。每個附加服務都將其 PDB 表示為初始當前容器。在圖 18-5 中, erppdb 和 hrpdb 存在非預設服務。使用在非 cdb 中使用的相同技術建立、維護和刪除其他服務。
SQL> SELECT NAME, PDB FROM V$SERVICES ORDER BY PDB, NAME;
NAME PDB
---------------- ------------------------------
SYS$BACKGROUND CDB$ROOT
SYS$USERS CDB$ROOT
db12c CDB$ROOT
db12cXDB CDB$ROOT
db12cbk CDB$ROOT
srvtest1 CDB$ROOT
pdb1 PDB1
srvpdb1 PDB1
pdb2 PDB2
pdb3 PDB3
srvpdb3 PDB3
11 rows selected.
SQL> SELECT SYS_CONTEXT('USERENV', 'CON_NAME') AS CUR_CONTAINER FROM DUAL;
CUR_CONTAINER
------------------------
CDB$ROOT
#切換容器方法
SQL> ALTER SESSION SET CONTAINER = hrpdb;
#RAC環境建立,修改,刪除service
srvctl add service -db db12c -service pdb1 -pdb pdb1
srvctl modify service -db mycdb -service salesrep -pdb hrpdb
srvctl remove service -db mycdb -service salesrep
#單例項環境下建立與刪除service,使用 DBMS_SERVICE不能修改service
BEGIN
DBMS_SERVICE.CREATE_SERVICE(
service_name => 'salesrep',
network_name => 'salesrep.example.com');
END;
/
BEGIN
DBMS_SERVICE.DELETE_SERVICE(
service_name => 'salesrep');
END;
/
3. CDB 中的使用者: common user 、 local user
Common user :
Common user 在 root 和各 PDB 中都有相同的 ID ,能連線(有 create session 許可權) root 和所有 pdb 執行操作。 Common user 要麼由 oracle 提供(如 sys ,system ),要麼由使用者建立(使用者名稱必須以 C## 、 c## 開頭)。
Local User :
Local User 不是共用的資料庫使用者,只能在單個 PDB 中操作。
Local User 具有以下特點 :
l Local User 是特定於某個 PDB 的,可能在這個 PDB 中擁有一個 schema 。
l Local User 可以管理 PDB ,包括開啟和關閉它。具有 SYSDBA 許可權的 Common User 可以將 SYSDBA 許可權授予 Local User 。在這種情況下,許可權使用者仍然是本地的。
l 一個 PDB 中的 Local User 不能登入到另一個 PDB 或 CDB$ROOT 。
l Local User 的名稱不能以字元 c## 或 c## 開頭。
l Local User 的名稱只能在其 PDB 中是唯一的。
4. CDB 中的角色: common role 、 local role
使用者建立的 common role 也必須以 C## or c## 開頭;
每個 oracle 提供的角色都是通用的。在 oracle 提供的指令碼中,授予 oracle 提供的使用者和角色的每個許可權或角色都是通用的,只有一個例外 : 系統許可權在本地授予公共角色 PUBLIC( 參見“在 CDB 中授予 PUBLIC ” ) 。使用者建立的角色要麼是本地的,要麼是通用的。
當符合以下條件時,使用者只能對公共角色執行公共操作,例如,向該角色授予公共許可權 :
•使用者是當前容器為 root 的 Common User 。
•使用者通常擁有 SET CONTAINER 許可權,這意味著該許可權適用於所有容器。
•使用者有許可權控制執行指定操作的能力,該許可權已被普遍授予 ( 參見“ CDB 中普遍授予的角色和許可權” ) 。
例如,要建立公共角色, Common User 必須具有通常授予的 create 角色和 SET 容器許可權。在 CREATE ROLE 語句中, CONTAINER=ALL 子句指定角色是公共的。
5. CDB 中的授予許可權與角色
就像在非 CDB 中一樣, CDB 中的使用者可以授予角色和許可權。 CDB 中的一個關鍵區別是 Local 授予和 Common 授予的角色和許可權之間的區別。 Local 授予的許可權或角色只能在授予它的容器中執行。 Common 授予的許可權或角色可以在每個現有的和未來的容器中執行。
使用者和角色可以是 Common 的,也可以是 Local 的。然而,許可權本身既不是 Common 的,也不是 Local 的。如果使用者使用 CONTAINER=CURRENT 子句在 Local 授予許可權,那麼被授予者具有隻能在當前容器中執行的許可權。如果使用者使用 CONTAINER=ALL 子句授予許可權,那麼被授予者擁有在任何現有和將來的容器中都可以執行的許可權。
The basic principles of granting are as follows:
- Both common and local phenomena may grant and be granted locally.
- Only common phenomena may grant or be granted commonly.
Table 18-5 Local Grants
Phenomenon |
May Grant Locally |
May Be Granted Locally |
May Receive a Role or Privilege Granted Locally |
Common User |
Yes |
N/A |
Yes |
Local User |
Yes |
N/A |
Yes |
Common Role |
N/A |
Yes Foot 1 |
Yes |
Local Role |
N/A |
Yes Foot 2 |
Yes |
Privilege |
N/A |
Yes |
N/A |
Footnote 1
Privileges in this role are available to the grantee only in the container in which the role was granted, regardless of whether the privileges were granted to the role locally or commonly.
Footnote 2
Privileges in this role are available to the grantee only in the container in which the role was granted and created.
Table 18-6 Common Grants
Phenomenon |
May Grant Commonly |
May Be Granted Commonly |
May Receive Roles and Privileges Granted Commonly |
Common User Account |
Yes |
N/A |
Yes |
Local User Account |
No |
N/A |
No |
Common Role |
N/A |
Yes Foot 3 |
Yes |
Local Role |
N/A |
No |
No |
Privilege |
N/A |
Yes |
N/A |
Footnote 3
Privileges that were granted commonly to a common role are available to the grantee across all containers. In addition, any privilege granted locally to a common role is available to the grantee only in the container in which that privilege was granted to the common role.
在 CDB 中, PUBLIC 是一個 common 角色。在 PDB 中, Local 授予 PUBLIC 的許可權只允許所有 Local 和 common user 帳戶在此 PDB 中使用這些許可權。
授予 Oracle-supplied 的使用者和角色的每個許可權和角色都是 Common ,但是授予 PUBLIC 的系統許可權是 Local 授予的。存在此例外是因為您可能希望撤銷 Oracle 資料庫中預設包含的某些許可權,例如 SYS.UTL_FILE 包的 EXECUTE 許可權。
Oracle 建議使用者不要將許可權和角色 Common 的授予 PUBLIC 。
6. CDB 中的通用審計配置( Common Audit Configurations )
對於混合模式和統一審計, Common Audit Configurations 是可見的,並跨所有 PDBs 強制執行。
審計配置要麼是本地的,要麼是通用的。適用於其他本地或常見現象 ( 如使用者和角色 ) 的範圍規則都適用於審計配置
注意 : 審計初始化引數存在於 CDB 級別,而不是每個 PDB 中。
PDB 支援的審計選項:
l Object auditing
l Audit policies : Local audit policies 、 Common audit policies
common audit configuration 儲存在 root 的 sys 使用者下; local audit configuration 儲存在 PDB 的 sys 使用者下;
Audit trails 儲存在相關 PDB 的 sys 或者 audsys 使用者下; PDB 的 OS 和 XML audit trails 儲存在初始化引數 AUDIT_FILE_DEST 指定的目錄下;
Figure 18-8 Architecture of a CDB
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/16976507/viewspace-2638245/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- oracle 12c 多租戶體系結構概念Oracle
- Oracle12c多租戶管理使用者、角色、許可權Oracle
- Oracle 使用者許可權管理與常用許可權資料字典列表Oracle
- 多租戶許可權,組織架構樹架構
- 資料庫安全之許可權與角色資料庫
- Oracle的物件許可權、角色許可權、系統許可權Oracle物件
- 系統、角色、物件相關許可權字典物件
- Oracle使用者角色許可權管理Oracle
- Oracle使用者、許可權、角色管理Oracle
- 2 多租戶體系結構概述
- Oracle角色許可權之Default RoleOracle
- Oracle 20C 多租戶_體系結構介紹Oracle
- 使用者角色許可權管理架構架構
- [學習]ORACLE使用者、角色、許可權Oracle
- Oracle使用者、許可權、角色管理【轉】Oracle
- 系統許可權相關資料字典
- Oracle多租戶管理員指南-體系結構介紹01Oracle
- oracle12之 多租戶容器資料庫架構Oracle資料庫架構
- Oracle 12c系列(一)|多租戶容器資料庫Oracle資料庫
- 1.1. 關於多租戶體系結構
- 【體系結構】Oracle 普通使用者查詢資料字典Oracle
- Oracle許可權(二)許可權相關的動態效能檢視與資料字典檢視Oracle
- 【使用者管理】oracle使用者、角色、許可權管理Oracle
- Oracle 使用者、物件許可權、系統許可權Oracle物件
- 許可權管理之多租戶隔離授權
- MySQL資料庫許可權體系入門(3)---管理使用者許可權MySql資料庫
- Oracle 查詢許可權角色Oracle
- Oracle使用者訪問許可權與PUBLIC角色的關係Oracle訪問許可權
- Oracle 12c 多租戶 CDB 與 PDB 備份Oracle
- 關於oracle 12c多租戶可插拔資料庫的啟停分析(一)Oracle資料庫
- 檢視Oracle使用者的許可權或角色Oracle
- 1.2. 多租戶體系結構的優點
- MaxCompute多租戶資料安全體系
- Oracle使用者與許可權Oracle
- 檢視角色裡包含的系統許可權、物件許可權和角色物件
- Oracle使用者及角色的許可權管理[Oracle基礎]Oracle
- 查詢資料庫使用者角色和許可權檢視資料庫
- MySQL資料庫許可權體系入門(5)---管理資料庫許可權MySql資料庫