一、創建用戶
創建用戶默認的是container=all,在cdb中只能創建全局用戶(c##開頭),會在cdb和所有的pdb中創建該用戶(但是pdb中的全局用戶需要另外授權才能夠在pdb中訪問)。在pdb中只能創建的用戶為本地用戶
SQL> show con_name; CON_NAME ------------------------------ CDB$ROOT SQL> create user user1 identified by user1; create user user1 identified by user1 * 第 1 行出現錯誤: ORA-65096: 公用用戶名或角色名無效 SQL> create user c##user1 identified by user1; 用戶已創建。 SQL> SELECT USERNAME,CON_ID,USER_ID FROM CDB_USERS WHERE USERNAME='C##USER1'; USERNAME CON_ID USER_ID
------------------------- C##USER1 1 102
C##USER1 3 103 C##USER1 4 103 SQL> alter session set container=pdb1; 會話已更改。 SQL> create user c##user2 identified by user2; create user c##user2 identified by user2 * 第 1 行出現錯誤: ORA-65094: 本地用戶名或角色名無效 SQL> create user user2 identified by user2; 用戶已創建。 SQL> SELECT USERNAME,CON_ID,USER_ID FROM CDB_USERS WHERE USERNAME='USER2'; USERNAME CON_ID USER_ID ------------------------- USER2 3 104
二、角色、用戶授權
用戶授權默認情況下是只會給當前container,在cdb中也可以指定container=all,對所有open的pdb且存在該用戶都進行授權
SQL> show con_name CON_NAME ------------------------------ CDB$ROOT SQL> grant connect to c##user1; 授權成功。 SQL> select GRANTEE,con_id from cdb_ROLE_PRIVS where GRANTED_ROLE='CONNECT' AND GRANTEE='C##USER1'; GRANTEE CON_ID -------------------------------------------------------------------------------------------------------------------------------- ---------- C##USER1 1 SQL> grant resource to c##user1 container=all; 授權成功。 SQL> select GRANTEE,con_id from cdb_ROLE_PRIVS where GRANTED_ROLE='RESOURCE' AND GRANTEE='C##USER1'; GRANTEE CON_ID -------------------------------------------------------------------------------------------------------------------------------- ---------- C##USER1 1 C##USER1 3 C##USER1 4
三、修改參數
這里可以看到在cdb中修改,pdb會繼承進去;如果在pdb中修改會覆蓋pdb從cdb中繼承的參數含義、
SQL> show con_name CON_NAME ------------------------------ CDB$ROOT SQL> alter system set open_cursors=500 container=all; 系統已更改。 SQL> show parameter open_cursors; NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ open_cursors integer 500 SQL> alter session set container=PDB1; 會話已更改。 SQL> show parameter open_cursors; NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ open_cursors integer 500 SQL> alter system set open_cursors=600; 系統已更改。 SQL> show parameter open_cursors; NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ open_cursors integer 600 SQL> alter session set container=CDB$ROOT; 會話已更改。 SQL> show parameter open_cursors; NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ open_cursors integer 500
參考
ORACLE-BASE - Multitenant : Overview of Container Databases (CDB) and Pluggable Databases (PDB)
【ORACLE】ORACLE 12c PDB 基礎 - 臨淵羡魚 - 博客頻道 - CSDN.NET
Oracle 12C 多租戶(Oracle Multitenant)--基本概念-zerocool88888888-ChinaUnix博客
ORACLE 12C PDB 維護基礎介紹 – 提供專業ORACLE技術咨詢和支持@Phone:13429648788 - 惜分飛
Oracle 12c CDB PDB - 丁應思 - 博客園
Oracle 12c入門第三講: Oracle 12c基本體系結構 (3) pdb,cdb元數據關系 ...,數據智能網,Oracle 12C
淺談Oracle數據庫12c PDB技術 - Oracle安裝與升級 - TechTarget數據庫