网站首页 > 技术文章 正文
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世界的小白,欢迎大神留言交流,你的互动,是我成长的动力;
如果觉得分享内容还不错,就推荐到你的朋友圈吧,让更多人一起交流和分享;
猜你喜欢
- 2024-10-19 php7 怎么连接oracle 11g php oracle 连接池
- 2024-10-19 使用JDBC连接ORACLE的三种URL格式
- 2024-10-19 Oracel:ORA-12518:监听程序无法分发客户机连接
- 2024-10-19 Python定义函数来连接Oracle数据库竟如此简单明了
- 2024-10-19 python oracle 连接池方式 python连接oracle的程序驱动包名为
- 2024-10-19 Linux下连接windows下的oracle数据库
- 2024-10-19 本地配置plsql远程连接oracle数据库
- 2024-10-19 centos7 PHP7.2连接oracle linux php oracle
- 2024-10-19 QT5.14.1+Win7 64+Oracle11gR2 Qt连接数据库
- 2024-10-19 【赵强老师】Oracle的PGA与数据库连接建立的过程
你 发表评论:
欢迎- 最近发表
-
- 前端流行框架Vue3教程:13. 组件传递数据_Props
- 前端必看!10 个 Vue3 救命技巧,解决你 90% 的开发难题?
- JAVA和JavaScript到底是什么关系?是亲戚吗?
- Java和js有什么区别?(java和javascript的区别和联系)
- 东方标准|Web和Java的区别,如何选择这两个专业
- 前端面试题-JS 中如何实现大对象深度对比
- 360前端一面~面试题解析(360前端笔试)
- 加班秃头别慌!1 道 Vue 面试题,快速解锁大厂 offer 通关密码
- 焦虑深夜刷题!5 道高频 React 面试题,吃透 offer 稳了
- 2025Web前端面试题大全(整理版)面试题附答案详解,最全面详细
- 标签列表
-
- 前端设计模式 (75)
- 前端性能优化 (51)
- 前端模板 (66)
- 前端跨域 (52)
- 前端md5加密 (49)
- 前端路由 (55)
- 前端数组 (65)
- 前端定时器 (47)
- 前端懒加载 (45)
- 前端接口 (46)
- Oracle RAC (73)
- oracle恢复 (76)
- oracle 删除表 (48)
- oracle 用户名 (74)
- oracle 工具 (55)
- oracle 内存 (50)
- oracle 导出表 (57)
- oracle查询数据库 (45)
- oracle约束 (46)
- oracle 中文 (51)
- oracle链接 (47)
- oracle的函数 (57)
- mac oracle (47)
- 前端调试 (52)
- 前端登录页面 (48)
本文暂时没有评论,来添加一个吧(●'◡'●)