https://www.cnblogs.com/cqdba/p/8bef7c432b87807c0680d6791f427b09.html

在oracle12.1版本中,同一CDB中的所有PDB使用的都是相同的字符集,并且Plug-in时PDB也要和目标CDB相同字符集或者是子集,否则plug-in时会失败在PDB_PLUG_IN_VIOLATIONS视图提示,这样影响了PDB的迁移灵活性,在MOS Note 1968706.1摘录
从 12.2 开始,同一个 cdb 中的各个 PDB 字符集可以不相同。

Per-PDB Character Set的有几个前提条件
1) CDB must be AL32UTF8
2) Application Container requires single character set
3) National character set also supported per PDB
4) Truncation of data can occur in cross-container queries if data conversion to UNICODE causes expansion

对于最新版本 12.2.0.1 ,在新创建 PDB 时并没有办法指定 PDB 的字符集,因此只能和 root 容器字符集相同。目前没有提供创建PDB指定字符集的选项。

可以通过以下方式实现:

a. 而不同 PDB 可以使用 hot clone,
b. Relocate PDB online 方式直接 plug-in
c. 可使用内部转换字符集( internal_use) 进行转换
d. 使用12 DMU 工具

下面将对前面种方式进行演示:

A. 热克隆
a. 目标端数据库使用dbca创建容器数据库,默认cdb默认字符集是AL32UTF8,源库能为任意字符集
b.源环境与目标环境平台有相同的字节序(endianness)
c.源库和目标库都为归档模式 ; archive log list ;
d.源库和目标库都使用LOCAL UNDO ; select * from database_properties where property_name='LOCAL_UNDO_ENABLED';

alter session set container=cdb$root;
shu immediate ;
startup mount ;
alter database archivelog ; #改归档
startup upgrade ;
alter database local undo on ; #改本地UNDO
shu immediate ;
startup ;

1.源库,给SYSTEM 授创建PDB的权限

grant create pluggable database to system ; 

2. 目标库 创建public dblink,连接到源库,并测试

create public database link cdbgbk_link connect to c##adm identified by cloneadmin using 'cdbgbk';

select sysdate from dual@cdbgbk_link ; 

3. 目标库 修改file_name_convert

alter session set pdb_file_name_convert = '/oracle/app/oradata/cdbgbk/pdbgbk','/oracle/app/oradata/cdbgbk/pdb_gbk' ;

4. 目标库 通过dblink 克隆PDB,并检查PDB状态

CREATE PLUGGABLE DATABASE PDB_GBK FROM PDBGBK@cdbgbk_link;
select name ,con_id , open_mode from v$pdbs ;

5 .打开PDB

alter session set container=pdb_gbk ;
alter database open ;
show con_name ;
select value from nls_database_parameters where parameter ='NLS_CHARACTERSET';

B .relocate原理
热克隆+redo应用

准备条件同热克隆

克隆时源库可处于read write状态

目标库Create PDB完成,源库dml事务仍可继续

目标PDB open时源库中止会话并同步redo(或归档数据)

源端应用undo数据回滚

源库PDB会话自动切换到目标端

克隆语句使用AVALIABLITY选项nomal|high|max

1.目标库 修改file_name_convert

alter session set pdb_file_name_convert = '/oracle/app/oradata/cdbgbk/pdbgbk','/oracle/app/oradata/cdbgbk/pdb_gbk' ;

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

CREATE PLUGGABLE DATABASE PDB_GBK FROM PDBGBK@cdbgbk_link relocate availability max;
select pdb_name , status from cdb_pdbs;
select con_id,name ,open_mode from v$pdbs ;

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

1
alter pluggable database PDBGBK open;

  

C. 使用internal_use:
注:oracle并不建议使用INTERNAL_USE来变更数据库的字符集
1.切换到要更改的字符集

select name ,con_id ,open_mode from v$pdbs;
alter session set contailner=pdbutf ;
select value from nls_database_parameters where parameter='NLS_CHARACTERSET' ;

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

alter system enable restricted session ; 

3.更秘诀字符集

alter database character set INTERNAL_USE ZHS16GBK ;
select value from nls_database_parameters where parameter='NLS_CHARACTERSET' ; alter system disable restricted session ;

C2 .RAC 环境:

alter pluggable databse pdbanbob close instances=all;

alter pluggable database pdbanbob open read write restricted;
-- in container pdbanbob
alter database character set internal_use zhs16gbk;
alter pluggable databse pdbanbob close; alter pluggable database pdbanbob open instances=all;

参考:
https://mp.weixin.qq.com/s/XnS6TymaA9Q2XyFBgAfMCg
如何选择或更改数据库字符集 (NLS_CHARACTERSET) (文档 ID 1525394.1)
12c多租户容器数据库(CDB)和可插拔数据库(PDB)字符集限制/ ORA-65116/65119:不兼容的数据库/国家字符集(字符集不匹配:PDB字符集CDB字符集)(文档ID 1968706.1)

[转帖]Oracle 12.2 新特性 | PDB不同字符集变更的更多相关文章

  1. Maclean Liu对Oracle Database 12c新特性研究汇总

    Maclean Liu关于DB 12c新特性的研究文章如下: [Oracle Database 12c新特性] In-Database Archiving数据库内归档 [Oracle Database ...

  2. 【译】 Node.js v0.12的新特性 -- Cluster模式采用Round-Robin负载均衡

    原文:https://strongloop.com/strongblog/whats-new-in-node-js-v0-12-cluster-round-robin-load-balancing 本 ...

  3. Oracle Database 12.2新特性详解

    在2015年旧金山的Oracle OpenWorld大会上,Oracle发布了Database 12.2的Beta版本,虽然Beta版本只对部分用户开放,但是大会上已经公布了12.2的很多重要的新特性 ...

  4. oracle 12C的新特性-CDB和PDB

    1.前言 CDB与PDB是Oracle 12C引入的新特性,在ORACLE 12C数据库引入的多租用户环境(Multitenant Environment)中,允许一个数据库容器(CDB)承载多个可插 ...

  5. goldengate 12c 12.2 新特性(updated)

    GoldenGate 12.2已经提供下载,增加了不少新特性 1. 异构配置加强不在需要sourceDefs和AssumeTargetDefs文件,在队列文件中已经包含metadata信息,比如tab ...

  6. Oracle Database 12c 新特性 - Pluggable Database

    在Oracle Database 12c中,可组装式数据库 - Pluggable Database为云计算而生.在12c以前,Oracle数据库是通过Schema来进行用户模式隔离的,现在,可组装式 ...

  7. Oracle 11gR2 RAC 新特性说明

    最近接触了一下Oracle 11g R2 的RAC,发现变化很大. 所以在自己动手做实验之前还是先研究下它的新特性比较好. 一.    官网介绍 先看一下Oracle 的官网文档里对RAC 新特性的一 ...

  8. [转]【Oracle Database 12c新特性】32k varchar2 max_string_size

    本文转自:https://blogs.oracle.com/askmaclean/entry/oracle_database_12c%E6%96%B0%E7%89%B9%E6%80%A7_32k_va ...

  9. 5分钟了解Java 12 八大新特性

    Java 12 终于发布了,我们一起来看一看 Java 12 中的新特性.通过本文可以在5分钟内快速了解 Java 12 新特性. 1 Switch 表达式 使用Java 12,switch不仅可以作 ...

  10. jdk 9 10 11 12 13 新特性

    jdk 9 新特性 1.集合加强 jdk9 为所有集合(List/Set/Map)都增加了 of 和 copyOf 方法,用来创建不可变集合,即一旦创建就无法再执行添加.删除.替换.排序等操作,否则将 ...

随机推荐

  1. 文心一言 VS 讯飞星火 VS chatgpt (170)-- 算法导论13.2 3题

    三.用go语言,设在图 13-2 左边一棵树中,a.b和c 分别为子树a.β和γ中的任意结点.当结点 x 左旋之后,a.b和c 的深度会如何变化? 文心一言: 在二叉树中,左旋操作是改变节点的子节点顺 ...

  2. 谷歌浏览器输入地址后http自动转https解决方法

    谷歌浏览器输入地址后http自动转https解决方法 https://blog.csdn.net/qq_51563725/article/details/133691727

  3. CentOS系统中yum的基本用法

    最小化安装系统时,yum可能会因为网卡配置问题,随机启动配置,导致无法使用, 在shell里面输入:yum --help ,结果显示 yum 已经正常安装了!!到底是哪里出了问题呢?经过网友的提示,我 ...

  4. win10 安装 AutoCAD

    有些人在 win10 系统下 安装 AutoCAD 会有些小问题,不要担心,根据下面这些图片就可以解决你的问题 答案很简单,就是安装.NET Framework3.5,这里提供一种安装方法供大家参考: ...

  5. 文心一言 VS 讯飞星火 VS chatgpt (176)-- 算法导论13.3 5题

    五.用go语言,考虑一棵用 RB-INSERT 插人 n 个结点而成的红黑树.证明:如果 n>1,则该树至少有一个红结点. 文心一言: 要证明这个问题,我们首先需要理解红黑树的性质.红黑树是一种 ...

  6. 作为所有类的顶层父类,没想到Object的魔力如此之大!

    写在开头 在上一篇博文中我们提到了Java面向对象的四大特性,其中谈及"抽象"特性时做了一个引子,引出今天的主人公Object,作为所有类的顶级父类,Object被视为是James ...

  7. CutMix&Mixup详解与代码实战

    摘要:本文将通过实践案例带大家掌握CutMix&Mixup. 本文分享自华为云社区<CutMix&Mixup详解与代码实战>,作者:李长安. 引言 最近在回顾之前学到的知识 ...

  8. 云小课|3种常用Git工作流推荐

    本文分享自华为云社区<[云小课]应用平台第44课 常用Git工作流推荐>,作者: 应用万花筒. . 1. Git工作流-动静有法 简单来说,工作流就是开发团队预置的开发流程和解决问题时使用 ...

  9. 一起玩转LiteOS组件:Pixman

    摘要:本文将以Pixman Demo为例,详细说明Pixman的功能. 本文分享自华为云社区<LiteOS组件尝鲜-玩转Pixman>,作者:Lionlace. 基本介绍 Pixman是由 ...

  10. aPaaS将如何改变软件行业?

    摘要:当SaaS在云计算中的占比越来越高的时候,几乎所有软件厂商言必谈SaaS,各大云厂商.咨询机构也都将目光瞄准了SaaS.如此火爆的现象背后,真实情况如何呢? 本文分享自华为云社区<[开天a ...