Oracle12c 中,增加了可插接數據庫的概念,即PDB,允許一個數據庫容器(CDB)承載多個可插拔數據庫(PDB)。CDB全稱為 ContainerDatabase,中文翻譯為數據庫容器,PDB全稱為PluggableDatabase,即可插拔數據庫。下面是官方文檔關於CDB與PDB的關系圖。
在CDB中,只能創建以c##或C##開頭的用戶,如果不加c##,則會提示錯誤“ORA-65096:公用用戶名或角色名無效”,只有在PDB數據庫中才能創建我們習慣性命名的用戶,oracle稱之為Local User,前者稱之為Common User。本文主要解決如何創建DPB用戶並設置默認表空間全過程。
1、創建PDB
在12C安裝時,會提示你是否安裝可插接式數據庫,如下圖所示:
該項為默認安裝,如果當時沒有安裝,可以用以下語句創建:
CREATE pluggable DATABASE pdborcl admin USER pdbadmin identified BY Learning roles=(connect) file_name_convert= ('D:\App\Oracle\oradata\orcl\pdbseed', 'D:\App\Oracle\oradata\orcl\pdborcl');
其中pdborcl是我創建的可插接式數據庫,pdbadmin是創建的用戶,Learning是密碼。file_name_convert換成相應目錄。至此PDB創建成功。
2、啟動PDB數據庫
1)打開SQL Plus, 以system用戶登錄,注意輸入密碼后面加入“as sysdba”;
這是如果創建普通用戶則會提示“ORA-65096:公用用戶名或角色名無效”。
輸入
show con_name
顯示如下圖:
可以看出當前容器為CDB。
2)輸入以下代碼,啟動PDB數據庫:
alter session set container=pdborcl; startup;
如果需要創建個人賬戶,運行以下代碼
--Oracle創建用戶權限 --創建用戶 create user pdbadmin identified by pdbadmin default tablespace test;
3)修改tnsnames.ora:
在"D:\App\Oracle\product\12.1.0\dbhome_1\NETWORK\ADMIN"目錄下,用記事本打開tnsnames.ora,在最后添加
PDBORCL = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = PDBORCL) ) )
保存后退出。
3、pl/sql developer登陸
這里要注意Database的選擇。
4、創建默認表空間
1)用dba賬戶登陸
2)創建表空間,並修改用戶默認表空間
1 -- 創建臨時空間 2 create temporary tablespace pdbadmin_temp 3 tempfile 'D:\App\Oracle\oradata\orcl\pdborcl\pdbadmin_temp01.dbf' 4 size 32m 5 autoextend on 6 next 32m MAXSIZE unlimited 7 extent management local; 8 9 10 -- 創建數據表空間 11 create tablespace pdbadmin_data 12 logging 13 datafile 'D:\App\Oracle\oradata\orcl\pdborcl\pdbadmin_data01.dbf' 14 size 10240m 15 autoextend on 16 next 100m MAXSIZE unlimited 17 extent management local; 18 19 -- 更改用戶默認表空間 20 alter user pdbadmin default tablespace pdbadmin_data temporary tablespace pdbadmin_temp;
參考資料:
1、http://www.cnblogs.com/kerrycode/p/3386917.html
2、http://blog.csdn.net/yuguanquan1990/article/details/17495331