Oracle 12c 創建用戶


 
12c推出了可插拔庫,管理用戶也分為兩種:本地用戶和公用用戶。本地用戶是指在插拔數據庫(PDB)中的用戶,和12c之前的版本沒有什么區別。公用用戶只存在於可插拔環境中,在傳統的數據庫環境中不存在這種應用。怎么理解公用用戶呢?可以簡單的把它當做容器(CDB)用戶,可以在各個通用與所有可插拔數據庫(PDB)中使用。這個用戶就像是小區的物業管理員,由小區物業來任命並且可以管理小區所有用戶。
 
如果第一次登錄CDB數據庫,用傳統方式創建用戶會報錯,這就是因為在CDB環境創建的用戶為公共用戶,語法和普通用戶不同。
 
1. 使用sqlplus登錄可插拔數據庫
[oracle@snow ~]$ sqlplus / as sysdba
 
2. 通過con_name能看到當前登錄的環境是CDB根庫,CDB包含一個名為PDB1的可插拔庫。
SYS@cdb > show con_name pdbs;
 
CON_NAME
------------------------------
CDB$ROOT
 
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 PDB1 READ WRITE NO
 
3. 創建公用用戶bighero, 需要使用C##或者c##作為該用戶名的開頭。
SYS@cdb > create user c##bighero identified by bighero;
 
User created.
 
如果使用傳統創建用戶的方法會報錯
SYS@cdb > create user bighero identified by bighero;
create user bighero identified by bighero
*
ERROR at line 1:
ORA-65096: invalid common user or role name
 
4. 創建公用角色, 同公用用戶一樣也需要使用C##或者c##作為角色名的開頭。
SYS@cdb > create role c##myroles container = all;
 
將dba角色授予公用角色c##myroles, 適用范圍為所有PDB
SYS@cdb > grant dba to c##myroles container = all;
 
將公用角色授予公用用戶, 使用范圍為所有PDB
SYS@cdb > grant c##myroles to c##bighero container = all;
 
以上操作也可以使用grant xx to user的方式使用一條語句完成
SYS@cdb > grant dba to c##bighero identified by bighero container = all;
 
5. 下面使用公用用戶分別登錄CDB、PDB看看是否通用。 登錄PDB使用了tnsnames中已經配置好的鏈接字符串@pdb1
[oracle@snow ~]$ sqlplus c##bighero/bighero
C##BIGHERO@cdb > show con_name
 
CON_NAME
------------------------------
CDB$ROOT
 
[oracle@snow ~]$ sqlplus c##bighero/bighero@pdb1
C##BIGHERO@pdb1 > show con_name
 
CON_NAME
------------------------------
PDB1
 
鏈接字符串如下:
[oracle@snow admin]$ cat tnsnames.ora
pdb1=
 (DESCRIPTION =
 (ADDRESS = (PROTOCOL = TCP)(HOST = 172.16.228.12)(PORT = 1521))
 (CONNECT_DATA =
 (SERVER = DEDICATED)
 (SERVICE_NAME = pdb1)
 )
)
 
6. 在PDB中創建用戶和創建普通用戶就沒有什么區別了
create user baymax identified by baymax
default tablespace baymax_comp
temporary tablespace temp
quota unlimited on baymax_comp;
 
7. CDB和PDB之間的切換方式
SYS@cdb > alter session set container = pdb1;
 
SYS@cdb > alter session set container = cdb$root;

全文完


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM