ORACLE 12C新特性——CDB與pdb
Oracle 12C引入了CDB與PDB的新特性,在ORACLE 12C數據庫引入的多租用戶環境(Multitenant Environment)中,允許一個數據庫容器(CDB)承載多個可插拔數據庫(PDB)。CDB全稱為Container Database,中文翻譯為數據庫容器,PDB全稱為Pluggable Database,即可插拔數據庫。在ORACLE 12C之前,實例與數據庫是一對一或多對一關系(RAC):即一個實例隻能與一個數據庫相關聯,數據庫可以被多個實例所加載。而實例與數據庫不可能是一對多的關系。當進入ORACLE 12C後,實例與數據庫可以是一對多的關系。下面是官方文檔關于CDB與PDB的關系圖。
CDB組件(Components of a CDB)
一個CDB數據庫容器包含了下面一些組件:
ROOT組件
ROOT又叫CDB$ROOT, 存儲着ORACLE提供的元數據和Common User,元數據的一個例子是ORACLE提供的PL/SQL包的源代碼,Common User 是指在每個容器中都存在的用戶。
SEED組件
Seed又叫PDB$SEED,這個是你創建PDBS數據庫的模闆,你不能在Seed中添加或修改一個對象。一個CDB中有且隻能有一個Seed. 這個感念,個人感覺非常類似SQL SERVER中的model數據庫。
PDBS
CDB中可以有一個或多個PDBS,PDBS向後兼容,可以像以前在數據庫中那樣操作PDBS,這裡指大多數常規操作。
這些組件中的每一個都可以被稱為一個容器。因此,ROOT(根)是一個容器,Seed(種子)是一個容器,每個PDB是一個容器。每個容器在CDB中都有一個獨一無二的的ID和名稱。
特别說明:Oracle數據庫的結構是一個數據庫實例下有許多用戶,每一個用戶有自己的表空間,即每一個用戶相當于MySQL中的一個數據庫。Oracle 12c的數據庫,安裝之後建user時才知道oracle12c 有一個很大的變動就是引入了pdb可插入數據庫,而且在cdb中隻能創建c##或者C##開頭的用戶,隻有在pdb數據庫中才能創建我們習慣性命名的用戶,Oracle稱之為Local User,前者稱之為Common User;
先來熟悉Oracle 12c CDB與PDB之間的切換:
Oracle 12c 開始支持 PLUGGABLE DATABASE,并且提供了一個方法在CDB和PDB之間切換。
首先,使用 show pdbs 可以确認當前有哪些PDB?
上圖中 PDB$SEED 并不是一個 PDB 而是一個 PDB的模闆,狀态始終是 READ ONLY。ORCLMIX是一個PDB。
其次,切換到ORCLMIX:
最後,從PDB切回CDB:
接着下來,打開ORCLMIX 插接式數據庫:
切換回 ORCLMIX 并創建用戶授權DBA;
這裡你也可以登錄sql developer工具來創建用戶:
進去創建連接:
創建新用戶:
先把之前建立的用戶删掉;
創建用戶之前 先創建表空間和臨時表空間
-- admin temp
create temporary tablespace admin _temp
tempfile 'F:\oracle12c\orcl\oradata\orcl\ admin _temp.dbf'
size 50m
autoextend on
next 50m maxsize 20480m
extent management local;
--admin data
create tablespace admin _data
logging
datafile 'F:\oracle12c\orcl\oradata\orcl\ admin _data.dbf'
size 50m
autoextend on
next 50m maxsize 20480m
extent management local;
創建用戶 其他用戶->右鍵創建用戶
到此pdb數據庫用戶創建完成,趕快去sql developer去體驗吧!
至此 新用戶創建完畢 !
趕快用JDBC 體驗下 連接數據庫的成就感吧!
DBCA方式創建數據庫
此處省去兩部 筆者忘記截屏了 ,之後兩步直接下一步就可以了
到此,我們成功的新增加了一個數據庫-CDB名:mixims PDB名:ORCLMIX
使用JDBC連接數據庫先找到oracle的數據庫驅動:
複制到web項目中:
添加到libraries:
創建測試代碼:
出現如下錯誤:
解決辦法如下:
首先,進入到oracle 主目錄下:..\product\12.1.0\dbhome_1\NETWORK\ADMIN
找到tnsnames.ora,并打開,在其中加入:
ORCLMIX =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orclmix) #pdb的db_name
)
)
)
其次,修改jdbc連接代碼:
connection=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521/orclmix","admin","admin");
恭喜你 連接成功!
趕快使用JDBC 去實現數據庫信息的增删改查吧!
本号所有文章都經筆者親自測驗後整理成稿,期間耗費了很多精力,如果有朋友想收錄自己的博客中請聯系筆者「壘碼大叔」;
初入IT世界的小白,歡迎大神留言交流,你的互動,是我成長的動力;
如果覺得分享内容還不錯,就推薦到你的朋友圈吧,讓更多人一起交流和分享;
,
更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!