Oracle 12c CDB和PDB的切換


oracle12c 有一個很大的變動就是引入了pdb可插入數據庫,而且在cdb中只能創建c##或者C##開頭的用戶,只有在pdb數據庫中才能創建我們習慣性命名的用戶,oracle稱之為Local User,前者稱之為Common User。Oracle 12c 開始支持 PLUGGABLE DATABASE,並且提供了一個方法在CDB和PDB之間切換。
 
 
1. 使用 show pdbs 可以確認當前有哪些PDB?
 
SQL> show pdbs
 
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 TESTP1 MOUNTED
SQL>
上圖中 PDB$SEED 並不是一個 PDB 而是一個 PDB的模板,狀態始終是 READ ONLY。TESTP1 是一個PDB。
 
 
2. 切換到 TESTP1。
 
SQL> alter session set container=TESTP1;
 
Session altered.
 
SQL> show pdbs;
 
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
3 TESTP1 MOUNTED
SQL>
 
3. 切回到 CDB。
 
SQL> alter session set container=CDB$ROOT;
 
Session altered.
 
SQL> show pdbs
 
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 TESTP1 MOUNTED
 
驗證
su oracle #進入到Oracle用戶下
lsnrctl start #開啟監聽
lsnrctl status #查看監聽
lsnrctl stop #關閉監聽
 
因為CDB和PDB的servicename可能是不一樣,先查詢pdb的service_name
SQL> select name,pdb from v$services;
NAME PDB
-------------------- --------------------
orcl ORCL
 
vi tnsnames.ora 編輯tnsnames文件,添加下面內容
ORCL = #這是連接串
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost )(PORT = 1521))
#localhost是所要連接的數據庫主機名,盡量寫IP,不容易出錯,port是端口,Oracle的默認連接端口就是1521
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl) #把查詢到pdb名稱寫到對應的service_name這里
)
)
 
 必須要加上tnsnames的連接串才可以連接用戶:
SQL> sqlplus 用戶名/密碼@ORCL #連接串
Connected.
SQL> show user
USER is "SCOTT"
連接成功!


免責聲明!

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



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