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可选组件,源库安装的必须是目标库的子集或相同

4.源库和目标库都为归档模式 

5.源库和目标库都使用LOCAL UNDO

6、步骤5满足源端PDB在read write 状态下进行克隆或relocate

注:如一开始并未使用LOCAL UNDO和归档模式,则通过如下方式开启

确认当前操作会话为cdb,或者进行切换

热克隆验证

1.源库CDB$ROOT创建common user

2.创建public dblink,连接到源库


3.目标库测试dblink

4.修改FILE_NAME_CONVERT

5.通过dblink克隆PDB


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.目标库参数转换


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:

需要变更为限制会话模式再进行修改:

原文发布时间为:2017-12-7

本文作者:谭龙

本文来自合作伙伴“数据和云”,了解相关信息可以关注“数据和云”微信公众号

时间: 2024-09-20 00:11:07

Oracle 12.2 新特性 | PDB不同字符集变更深入解析的相关文章

Oracle 12.2新特性掌上手册 - 第一卷 Availability

编辑手记:12.2的发布,让很多技术爱好者迫不及待要尝尝鲜了,然而众多的新特性却可能让我们无所适从,为此我们节选12.2中一些重要的新特性,将在接下来的几期晨读中分享给大家,希望大家能够在12.2的应用中游刃有余. 注:文章内容来自官方文档翻译.若需要了解更多,请查阅官方文档. 1.Multi-Instance Redo Apply (多实例redo应用) 在Oracle Database 12.2 之前的版本上,对于物理standby 数据库,将Redo应用于Oracle RAC standb

Oracle 12.2新特性掌上手册 - 第二卷 In-Memory增强

编辑手记: In-Memory 是 Oracle 在 12.1.0.2 中引入的新特性,旨在加速分析型 SQL 的速度.传统的 OLTP 应用通过 buffer cache 修改数据,分析性的 SQL 从 IM 列式存储中扫描数据,避免物理读成为性能瓶颈.那么在12.2最新版本中,In-Memory有哪些增强特性呢?我们一起来学习. 注:文章内容来自官方文档翻译.若需要了解更多,请查阅官方文档.文中配图来自Oracle文档. 1.In-Memory Expressions(列式存储表达式) 内存

【动手实践】Oracle 12.2新特性:多列列表分区和外部表分区

Oracle 12.2版本中,增加了大量的分区新特性,这其中包括: 自动的列表分区创建 在线的普通表转换分区表 支持只读分区和读写分区混合 以下介绍的三个特性同样是12.2新增的: 多列列表分区.外部表分区.维护过滤 而对于多列列表分区的支持,也是大家关注已久的特性,先看一下脚本(在 livesql.oracle.com 测试执行,推荐动手实践): CREATE TABLE dba_by_db_in_yhem  (dbalic           NUMBER,    username    

Oracle 12.2新特性掌上手册 - 第三卷 Core Improvements

编辑手记:Oracle 12.2 在内核上有许多创造性的改进,这些改进让数据库的操作更加高效便捷,同时一些面向智能运维和大数据的改进,则迈出了云和大数据时代的重要一步.在今年的DB-Engines的评选中,Oracle位居榜首,而我们从12.2的这些更新中便知道,Oracle是DBMS当之无愧的领导者. 注:文章内容来自官方文档翻译.若需要了解更多,请查阅官方文档. 1.Partition-Specific Near Real-Time Indexes(近实时索引的配置) 12.2中可以在分区级

【动手实践】Oracle 12.2 新特性:自动的列表分区创建

2017年来了,我们要启动新的学习征程了.在过去我们一直思考,什么样的内容能够更帮助大家了解和学习到有用的知识? 这个『动手实践』栏目就是这样一个改进和尝试吧,一个小小的范例,几分钟的线上实践(感谢Oracle),就能帮助大家熟悉一个知识点,几个重要的命令.如此是否会有不一样的体验?试一试吧. 在Oracle Database 12.2 之前,如果使用列表分区,当插入的数据超过了分区列表值设定,则会抛出异常:而如果存在大量的列表值需要定义,则可能需要一一设置. 在12.2引入的新特性中 - Au

【动手实践】Oracle 12.2 新特性:只读分区的使用和维护

12.2的分区新特性中引入了只读分区的特性,可以帮助我们将某些分区的数据进行静态化保护. 这一特性通过将表或者分区设置为READ ONLY或者READ WRITE来进行控制,以下是一个测试Demo(可以在 https://livesql.oracle.com )网站验证体验. 以下测试首先将数据表置为READ ONLY模式,对部分分区设置为READ WRITE的读写模式: drop table YHEM_ODS; CREATE TABLE YHEM_ODS (oid  number, odate

Oracle 12.2新特性掌上手册 - 第七卷 Big Data and Data Warehousing

编辑手记:也许Oracle 12.2在内核上的智能改进只能让你眼前一亮,那今天基于Big Data和数据仓库的性能优化增强则会让你伸手触Oracle的强大灵魂.细腻中霸气侧漏,这就是Oracle 12.2. 1Partitioning:External Tables(外部表) 外部分区表提供了将分区的Hive表映射到Oracle数据库生态系统以及在基于Hadoop分布式文件系统(HDFS)的数据存储之上提供声明分区的功能. 作用 Oracle数据库基于外部HDFS的数据存储功能,使得数据库分区能

Oracle 12.2新特性掌上手册 - 第三卷 Sharding 的增强

编辑手记:Sharding技术我们谈了好久,想必大家并不陌生,该功能12.2最新版本中,也将变得越来越完善,今天我们一起来学习. 注:文章内容来自官方文档翻译.若需要了解更多,请查阅官方文档. 1.about Sharding 简单来说,Oracle的Sharding技术就是通过分区(Partioning)技术的扩展来实现的.以前一个表的分区可以存在于不同的表空间,现在可以存在于不同的数据库.不同分区存在于不同数据库,这就将数据隔离了开来,Sharding就此实现. Sharding是一种数据层

Oracle 12.2新特性掌上手册 - 第六卷 ADG的性能与诊断

编辑手记:在Oracle 12.2中,ADG有许多惊人的改进,通过ADG standby数据库的性能数据收集和诊断.快照standby数据库的应用,以及实时的数据库操作监控的实现,能够根据用户需求相协调来提高DBA效率,从而为业务应用程序提供更好的服务质量. 1.Oracle Data Guard Support for Oracle Diagnostics Pack(Oracle DG 提供诊断包的支持) Oracle诊断包可以与以read-only的ADG standby数据库一起使用.能够