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数据库的安装配置、故障诊断、升级迁移解决方案的设计与实施。

原文发布于微信公众号 - 数据和云(OraNews)

原文发表时间:2017-12-07

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏杨建荣的学习笔记

数据库日志中一条"异常"信息所包含的细节(r6笔记第18天)

今天在梳理服务器的信息的时候,发现有一台服务器没有设置crontab作业,一般的服务器中可能会需要一些定时的任务来触发一些备份,清理等等工作。 因为这是一台备库...

2935
来自专栏散尽浮华

Mysql占用过高CPU时的优化手段

Mysql占用CPU过高的时候,该从哪些方面下手进行优化? 占用CPU过高,可以做如下考虑: 1)一般来讲,排除高并发的因素,还是要找到导致你CPU过高的哪几条...

34811
来自专栏杨建荣的学习笔记

关于Oracle数据恢复的两个临界点(r5笔记第42天)

有的网友对我之前写的一篇技术博文中的描述提出了疑问,http://blog.itpub.net/23718752/viewspace-1436965/ 其中的主...

3454
来自专栏数据和云

【Oracle12.2新特性掌上手册】-第八卷 PDB的快速创建与移除

编辑手记:在Oracle12.2 中提供了多种创建PDB的方式,能够更快速便捷地实现数据库的扩展和变更。今天我们来介绍通过SQL*Plus管理的方式。 注:文档...

3559
来自专栏数据和云

回答了这四个问题,少踩12c 多租户的好多坑

在ACOUG的年终大会上,我分享了一个主题,列举了使用Oracle 12c多租户的过程中可能遇到的各种坑,当你使用一个新产品或者新特性时,如果你不了解,就可能是...

3266
来自专栏吴生的专栏

MySQL 慢日志线上问题分析及功能优化

MySQL 慢日志(slow log)是 MySQL DBA 及其他开发、运维人员需经常关注的一类信息。使用慢日志可找出执行时间较长或未走索引等 SQL 语句,...

3716
来自专栏沃趣科技

Oracle 12c系列(五)|PDB Refresh

作者 杨禹航 出品 沃趣技术 PDB Refresh是12C推出的特性,具有对源端PDB进行增量同步的功能,每次刷新会将源端PDB中的任何更改同步到目标...

4136
来自专栏乐沙弥的世界

Innobackupex 全备数据库

    对于MySQL数据库的热备,xtrabackup是除了MySQL enterprise backup之外的不二之选。该工具提供了基于innodb存储引擎...

722
来自专栏Netkiller

数据库进程间通信解决方案

数据库进程间通信解决方案 数据库与其他第三方应用程序进程间通信解决方案 摘要 你是否想过当数据库中的数据发生变化的时候出发某种操作?但因数据无法与其他进程通信(...

3596
来自专栏沃趣科技

Oracle 12c系列(四)|资源隔离之IO、内存、CPU

作者 姚崇 出品 沃趣技术 服务器主机提供IO、内存、CPU、存储空间等资源为数据库使用,Oracle使用Flex Diskgroup为数据库提供存储空...

3515

扫描关注云+社区