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 _;
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 _da;
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
找到,并打开,在其中加入:
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世界的小白,欢迎大神留言交流,你的互动,是我成长的动力;
如果觉得分享内容还不错,就推荐到你的朋友圈吧,让更多人一起交流和分享;