Oracle 12.2 新特性 | PDB不同字符集变更深入解析
从12c版本12.1开始,就有了新特性——Pluggable Database,相比较之前通过schema的管理方式实现多用户管理,Pluggable Database实现了进一步的隔离,其中包含如下特点:
1.将业务用户元数据和数据库本身的元数据进行分离,减少核心数据字典的性能衰减,增加管理便捷性。
2.sga统一分配,各PDB通过各自的标识进行空间管理。
但在12.1中,PDB的字符集与root容器必须保持一致,这样无形中造成了PDB迁移或者克隆的限制性。从12.2开始,同一个cdb中的各个PDB字符集可以不相同。
对于最新版本12.2.0.1,在新创建PDB时并没有办法指定PDB 的字符集,因此只能和root容器字符集相同,而不同PDB可以使用hot clone,或Relocate PDB online 方式直接plug-in,还可使用internal_use进行转换。
测试环境
环境:Oracle 12.2.0.1 (REL 6.9 x86-64)
目标端数据库使用dbca创建容器数据库,默认cdb默认字符集是AL32UTF8:
PDB字符集:
源端数据库使用dbca创建容器数据库,默认CDB默认字符集是ZHS16GBK,同时自带ZHS16GBK的PDB,测试通过HOTCLONE PDB 和RELOCATE PDB插入到原字符集为AL32UTF8的CDB。
测试条件确认
1.源环境与目标环境平台有相同的字节序(endianness)
2.目标库是AL32UTF8,源库能为任意字符集(见环境准备)
3.对于options可选组件,源库安装的必须是目标库的子集或相同
select * from v$option where value='TRUE';
4.源库和目标库都为归档模式
5.源库和目标库都使用LOCAL UNDO
6、步骤5满足源端PDB在read write 状态下进行克隆或relocate
注:如一开始并未使用LOCAL UNDO和归档模式,则通过如下方式开启
确认当前操作会话为cdb,或者进行切换
热克隆验证
1.源库CDB$ROOT创建common user
2.创建public dblink,连接到源库
SQL>create public database link cdbgbk_link connect to c##adm identified by cloneadmin using 'cdbgbk';
3.目标库测试dblink
4.修改FILE_NAME_CONVERT
5.通过dblink克隆PDB
SQL>CREATE PLUGGABLE DATABASE PDB_GBK FROM PDBGBK@cdbgbk_link;
Pluggable database created.
6.检查克隆PDB
此时仍然是mount状态,open打开PDB
relocate原理
热克隆+redo应用
准备条件同热克隆
克隆时源库可处于read write状态
目标库Create PDB完成,源库dml事务仍可继续
目标PDB open时源库中止会话并同步redo(或归档数据)
源端应用undo数据回滚
源库PDB会话自动切换到目标端
克隆语句使用AVALIABLITY选项nomal|high|max(见测试过程)
如有条件,还可以验证应用连接自动切换到relocate目标端。
relocate测试
使用PDB relocate(PDB hot move),条件、步骤基本与hot clone相同,且都可沿用Hot Clone的保留配置。
1.目标库参数转换
alter session set pdb_file_name_convert='/oracle/app/oradata/cdbgbk/pdbgbk','/oracle/app/oradata/holicdb/pdbgbk';
2.relocate
#在relocate过程中,理论上连接原库PDBGBK的dml事务并不中断。
3.relocate操作完成
4.此时源库库状态(仍然承载连接和应用):
通过v$diag_info视图获取12c alert日志的位置:
其中从Diag Trace的位置中能够找到alert里记录关于relocate的操作内容:
5.目标CDB中打开PDB,切换PDB
SQL> alter pluggable database PDBGBK open;
Pluggable database altered.
当目标库PDBGBK打开,如应用连接配置没有到目标库,则直接连接原来源库的连接会断开且dml事务直接中断。如有条件配置应用连接可以尝试配置并验证源库和目标端的记录条数和目标端。
另外注意监听里已经注册上了pdbgbk的服务(instance属于目标库)
open过程中记录操作:
目标库中,relocate过来的库状态正常:
在目标库的PDB open时候,源库的alert记录relocate结束,源PDB删除操作:
内部转换字符集
使用internal_use:
直接修改字符集报错,说明新设字符集必须是老字符集的超集
使用INTERNAL_USE:
需要变更为限制会话模式再进行修改:
注:oracle并不建议使用INTERNAL_USE来变更数据库的字符集。
作者介绍
谭龙 云和恩墨技术顾问
擅长Oracle数据库的安装配置、故障诊断、升级迁移解决方案的设计与实施。
关注本公众号,回复:prelection,你可以找到本文的相关视频文档。
相关阅读:
面向开发和DBA的Oracle 12c新特性
让每个PDB都拥有自己的 local undo表空间
Oracle 12c详解:PDB 的出与入 InAndOut
Oracle 12c详解:PDB 的备份与恢复
Oracle 12c详解:从Schema到PDB的变化与隔离
资源下载
关注公众号:数据和云(OraNews)回复关键字获取
‘2017DTC’,2017DTC大会PPT
‘DBALIFE’,“DBA的一天”海报
‘DBA04’,DBA手记4经典篇章电子书
‘RACV1’, RAC系列课程视频及ppt
‘122ARCH’,Oracle 12.2体系结构图
‘2017OOW’,Oracle OpenWorld资料
‘PRELECTION’,大讲堂讲师课程资料
戳原文,阅读官方文档!
Oracle 12.2 新特性 | PDB不同字符集变更深入解析相关推荐
- Oracle 12.2 新特性--PDB和CDB的字符集可以不一样
Oracle 12.2 新特性--PDB和CDB的字符集可以不一样 在 12.1 中, PDB 的字符集与 root 容器必须保持一致,这样无形中造成了 PDB 迁移或者克隆的限制性.从 12.2 开 ...
- Oracle 12.2新特性 | 基于权重的节点驱逐
前言 在Oracle Clusterware需要从集群中逐出特定节点或一组节点的情况时,基于服务器权重的节点驱逐可充当断裂机制,通过服务器上的负载附加信息来识别要驱逐的节点或节点组.其中所有节点被驱逐 ...
- Oracle 12.2 新特性: Online PDB relocate (PDB hot move)
Oracle 12 . 2 新特性 : Online PDB relocate (PDB hot move) Relocating a PDB 是 Oracle 在 12C 中推出的一种新的数据迁移方 ...
- Oracle 12.2 新特性:在线PDB数据库克隆(Pluggable Hot Clone)
Oracle 12.2 新特性:在线PDB数据库克隆(Pluggable Hot Clone) 在Oracle 12c的多租户(Multitenant)特性中,可以通过灵活的克隆复制来创建PDB(Pl ...
- oracle exp 00006,Oracle 12.1新特性----使用RMAN从备份中实现recover table
Oracle 12.1新特性----使用RMAN从备份中实现recover table 发布时间:2020-06-26 19:41:44 来源:51CTO 阅读:4750 作者:hbxztc 在Ora ...
- Oracle 12.2新特性掌上手册 - 第一卷 Availability
编辑手记:12.2的发布,让很多技术爱好者迫不及待要尝尝鲜了,然而众多的新特性却可能让我们无所适从,为此我们节选12.2中一些重要的新特性,将在接下来的几期晨读中分享给大家,希望大家能够在12.2的应 ...
- oracle定义转储目录,Oracle 12.1新特性:在线rename或relocate数据文件
在Oracle12.1之前的版本中要重命名数据文件或移动数据文件需要关闭数据库或把表空间/数据文件置为offline状态才可以,参考之前总结的 要实现这一功能需要使用ALTERDATABASEMOVE ...
- 解读Tom介绍的Oracle Database 12c的12个新特性
在OOW 2012上Tom kyte介绍了Oracle新一代重量级数据库产品12c 的12个新特性, 目前Open World 2012的主要PDF都可以下载了,传送门在此:Search Conten ...
- oracle oem 13c新特性,Oracle Database 12c - 新特性实现的历程与13c的预测
Oracle Database 12c - 新特性实现的历程与13c的预测 虽然Oracle Database 12c的新特性文档已经随处可见,但是Oracle仍然没有关于12c正式发布的准确日期,这 ...
最新文章
- 苹果测试软件testflight游戏,苹果内测工具TestFlight的使用
- 【Android 插件化】“ 插桩式 “ 插件化框架 ( 类加载器创建 | 资源加载 )
- 理解 Linux 网络栈(2):非虚拟化Linux 环境中的 Segmentation Offloading 技术
- 『设计模式』大话西游的移魂大法竟移出来了桥接模式
- 发送邮件 的类 C# .net
- 钻井缸套排量_中国石化顺北特深层及川渝页岩气钻完井关键技术集成:碳酸盐岩酸压技术、优快钻井技术、页岩气强化体积改造技术、高温高压窄间隙固井技术...
- goim 中的 data flow 数据流转及思考
- 多线程TCP的socket通信
- python怎么做软件程序_Revit二次开发python怎么做?人工智能python语言在BIM软件高效建模的运用尝试...
- mysql 不允许保存修改_解决SQL SERVER 2014 不允许保存更改。您所做的更改要求删除并重新创建以下表。您对无法重新创建的表进行了更改或者启用了阻止保存要求重新创建表的更改选项...
- 大数据时代下的个人知识管理
- 关于QT 报错Error: Class declaration lacks Q_OBJECT macro.
- java-net-php-python-jsp刺绣作品展示网站计算机毕业设计程序
- java超链接大全_JavaFX超链接
- 解决通过无线路由上网,但有些网站打不开的问题
- 如何做IT项目PoC测试
- 用Vue实现一个简单的图片轮播
- js 判断3D空间中 三点共线
- my eclipse 连接数据库(详细步骤)
- html实现ipad投屏到显示器,iPad投屏的两种方式
热门文章
- LeetCode 123. 买卖股票的最佳时机 III(Best Time to Buy and Sell Stock III)
- 视觉SLAM笔记(13) 空间变换
- java 五个数字_关于java:五个任意整数找出其中第二大的数字
- ddos攻击发送端 接收端_什么是DDOS攻击?
- 按需要生成你的网站导航栏
- [Swift通天遁地]一、超级工具-(13)使用PKHUD制作各种动态提示窗口
- 目标检测之Faster-RCNN的pytorch代码详解(模型准备篇)
- Python 项目实践二(生成数据)第二篇
- python-day76--django-中间件
- Linux系统目录结构以及简单说明