Oracle 12.2 新特性 | PDB不同字符集变更深入解析

本文涉及的产品
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
云解析 DNS,旗舰版 1个月
全局流量管理 GTM,标准版 1个月
简介: 从12c版本12.1开始,就有了新特性——Pluggable Database,相比较之前通过schema的管理方式实现多用户管理,Pluggable Database实现了进一步的隔离,其中包含如下特点: 将业务用户元数据和数据库本身的元数据进行分离,减少核心数据字典的性能衰减,增加管理便捷性。

从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:

6f1dc40fc552dd4f01c12b4a20ddce9c2b9f574f

PDB字符集:

836052eeb6e581b69320a58044641cbcccbc928d

源端数据库使用dbca创建容器数据库,默认CDB默认字符集是ZHS16GBK,同时自带ZHS16GBK的PDB,测试通过HOTCLONE PDB 和RELOCATE PDB插入到原字符集为AL32UTF8的CDB。

5137b60e07494e69a2ad4cad5b2f8d691c322223

测试条件确认

1.源环境与目标环境平台有相同的字节序(endianness)

12f47e9b65f1b383e4bbc9b936845168173573c8

2.目标库是AL32UTF8,源库能为任意字符集(见环境准备)

3.对于options可选组件,源库安装的必须是目标库的子集或相同

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

b2fab72fd6e8c28f70239dbdb0e0abf1bb3a260c

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

3807e5598165dc192b7ea4e1304775b47b35bd9f

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

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

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

0afed82e06332fbe2c51afcb9cb1667b9ed297a4

热克隆验证

1.源库CDB$ROOT创建common user

64be0cc0e89f43e154be6ea8714b95bdd3ebd0f6

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

 

3.目标库测试dblink

22a290a3569067f43a4a50afa8a17e644dfedf45

4.修改FILE_NAME_CONVERT

32fa0e05ca8a251e0c1fb34d9bb76a4ae4b64f0b

5.通过dblink克隆PDB

 

6.检查克隆PDB

ec88030d04f4809868097b8dc8b7f7c51d36941a

此时仍然是mount状态,open打开PDB

9b8ce32380f7b4357bc9987b1541c43ed6ce56e8

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

bdf67748f1df2fc4cd24a53ef85f943ddc234fe8

#在relocate过程中,理论上连接原库PDBGBK的dml事务并不中断。

3.relocate操作完成

179fd1ea84e22ab28b1b5026f7ed2a90a864b6e8

4.此时源库库状态(仍然承载连接和应用):

17adb5446dfe7bdc08a5d05b7413c483db6419ae

通过v$diag_info视图获取12c alert日志的位置:

7c500202046fb0e35f42dcdb5b86091c3d65e453

其中从Diag Trace的位置中能够找到alert里记录关于relocate的操作内容:

cbf3481406a74fdcbbf87cb9d1dc16ff709d1b0d

5.目标CDB中打开PDB,切换PDB

SQL> alter pluggable database PDBGBK open;
Pluggable database altered.

当目标库PDBGBK打开,如应用连接配置没有到目标库,则直接连接原来源库的连接会断开且dml事务直接中断。如有条件配置应用连接可以尝试配置并验证源库和目标端的记录条数和目标端。

另外注意监听里已经注册上了pdbgbk的服务(instance属于目标库)

open过程中记录操作:

ac98cd719fe4350f7cda78f9fe3b80158847eed9

目标库中,relocate过来的库状态正常:

cb1fb187e15d6e2b5cbbfa0b58802631bfa57a53

在目标库的PDB open时候,源库的alert记录relocate结束,源PDB删除操作:

3fbb36adf9058657dec0574f5bcbd465cc835a17

内部转换字符集

使用internal_use:

1824c9e2a18e7f99747ef15da874bd7c3578254f

直接修改字符集报错,说明新设字符集必须是老字符集的超集

0646d535185551af3e53c4712bde65eae7335edb

使用INTERNAL_USE:

df586141bbfc2191f5de2797844a981778320368

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

b73a3567573e130d84a52e4d58b0886d758e3eb0


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

本文作者:谭龙

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

相关文章
|
8月前
|
存储 自然语言处理 Oracle
Oracle数据库字符集概述及修改方式
【8月更文挑战第15天】Oracle 数据库字符集定义了数据的编码方案,决定可存储的字符类型及其表示方式。主要作用包括数据存储、检索及跨系统传输时的正确表示。常见字符集如 AL32UTF8 支持多语言,而 WE8MSWIN1252 主用于西欧语言。修改字符集风险高,可能导致数据问题,需事先备份并评估兼容性。可通过 ALTER DATABASE 语句直接修改或采用导出-导入数据的方式进行。完成后应验证数据完整性。此操作复杂,须谨慎处理。
342 5
|
9月前
|
缓存 编译器 测试技术
PHP 8新特性解析与应用
在软件开发的广阔天地中,PHP始终是一颗耀眼的星辰。随着PHP 8的发布,一系列激动人心的新特性为开发者带来了前所未有的编程体验。本文将深入探讨PHP 8中的JIT编译器、联合类型、命名参数、匹配表达式等关键特性,并通过实例分析它们如何优化代码结构、提升执行效率。我们将一起见证PHP 8如何开启现代化PHP开发的新篇章,并为读者提供实用的技术参考。
64 2
|
5月前
|
负载均衡 Oracle 网络协议
Oracle中TAF与SCANIP全面解析
通过本文的解析,读者可以清晰地理解Oracle中TAF与SCAN IP的概念、工作原理及其在实际应用中的优势和局限性。TAF通过自动故障转移提升了会话的高可用性,而SCAN则通过简化客户端连接和负载均衡提升了集群的可管理性和扩展性。这两种技术在现代企业数据库架构中扮演着重要角色,能够显著提高系统的稳定性和可用性。
233 6
|
7月前
|
存储 Oracle 关系型数据库
Oracle和MySQL有哪些区别?从基本特性、技术选型、字段类型、事务、语句等角度详细对比Oracle和MySQL
从基本特性、技术选型、字段类型、事务提交方式、SQL语句、分页方法等方面对比Oracle和MySQL的区别。
1291 18
|
9月前
|
算法 编译器 数据处理
PHP 8新特性深度解析与应用实践
本文旨在深入探讨PHP 8的新增特性,并指导如何将这些特性应用于实际开发中。文章将重点介绍JIT编译器、联合类型、命名参数、匹配表达式等关键改进,并通过实例展示它们如何提升代码性能和可读性。读者将了解到这些特性背后的设计哲学及其对PHP未来发展方向的影响。
95 28
|
8月前
|
监控 Oracle 关系型数据库
"深度剖析:Oracle SGA大小调整策略——从组件解析到动态优化,打造高效数据库性能"
【8月更文挑战第9天】在Oracle数据库性能优化中,系统全局区(SGA)的大小调整至关重要。SGA作为一组共享内存区域,直接影响数据库处理能力和响应速度。本文通过问答形式介绍SGA调整策略:包括SGA的组成(如数据缓冲区、共享池等),如何根据负载与物理内存确定初始大小,手动调整SGA的方法(如使用`ALTER SYSTEM`命令),以及利用自动内存管理(AMM)特性实现智能调整。调整过程中需注意监控与测试,确保稳定性和性能。
567 2
|
9月前
|
存储 SQL 编译器
PHP 8新特性深度解析与实战应用
本文将深入探讨PHP 8的新增特性,并结合实际案例演示如何有效利用这些特性优化现有项目。通过本文,您将了解到PHP 8带来的性能提升、安全性增强以及代码简化等方面的改进,以及如何将这些新特性融入日常开发工作之中。 【7月更文挑战第29天】
79 8
|
9月前
|
缓存 安全 测试技术
深入PHP 7:新特性与性能提升解析
在PHP 7的发布中,我们见证了一系列令人兴奋的性能改进和新特性的加入。本文将深入探讨这些变化如何影响开发者的日常编程实践,并展示通过实际例子如何最大化利用PHP 7的优势。准备好迎接代码效率和开发体验的全新升级!
|
9月前
|
大数据 编译器 API
PHP 7新特性深度解析与应用实践
【7月更文挑战第28天】本文深入探讨PHP 7带来的革新特性,从性能优化到语法改进,逐一剖析其背后的技术原理和实际影响。通过实例展示如何有效利用这些新特性来提升开发效率和代码质量,为PHP开发者提供切实可行的升级和优化策略。
|
9月前
|
数据挖掘 编译器 PHP
PHP 8新特性解析及其对现代Web开发的影响
随着PHP 8的发布,这一广泛使用的服务器端脚本语言带来了一系列创新特性,旨在提升性能、增强语法的易用性以及支持最新的编程范式。本文将深入探讨PHP 8中的JIT编译器、联合类型、匹配表达式等关键特性,并通过实际案例分析它们如何优化代码结构、提高执行效率,并简化日常开发工作,从而全面评估PHP 8对现代Web开发实践的深远影响。

推荐镜像

更多