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. ubuntu 20.0.4 LTS 配置国内apt-get源

    https://blog.csdn.net/wangyijieonline/article/details/105360138 更换阿里源 要知道当前系统的代号,可以用以下命令: lsb_releas ...

  2. Blazor入门100天 : 身份验证和授权之 OpenID 与 OAuth2

    目录: OpenID 与 OAuth2 基础知识 Blazor wasm Gitee 码云登录 Blazor wasm GitHub 登录 Blazor wasm Google 登录 Blazor w ...

  3. LeetCode1两数之和、15三数之和

    1. 两数之和 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标. 你可以假设每种输入只会对应一个答案.但是,数组中同一个元素 ...

  4. 基于LiteOS Studio零成本学习LiteOS物联网操作系统

    摘要:大家在学习物联网操作系统开发的时候,都不得不准备一套开发板和仿真器,也是一笔不小的投资.LiteOS社区现在对外开放了对Qemu模拟器的适配工程,在不使用开发板的情况下,也可以搭建LiteOS开 ...

  5. 详解NLP和时序预测的相似性【附赠AAAI21最佳论文INFORMER的详细解析】

    摘要:本文主要分析自然语言处理和时序预测的相似性,并介绍Informer的创新点. 前言 时序预测模型无外乎RNN(LSTM, GRU)以及现在非常火的Transformer.这些时序神经网络模型的主 ...

  6. 边缘AI研发落地生态挑战调研报告发布

    摘要:随着边缘设备的广泛使用和性能提升,将机器学习相关的部分任务迁移到边缘,也即边缘AI技术,已成为必然趋势.但仅凭技术是不足够完成落地和产业转化的.近日我们启动了边缘AI研发落地生态挑战调研.我们发 ...

  7. ipa如何安装到iphone

    ​ Sign In - Apple app管理中心: https://appstoreconnect.apple.com/ apple ID管理中心: Manage your Apple ID 工具只 ...

  8. 火山引擎 ByteHouse:双十一即将到来,如何用数据分析提升电商平台销售转化?

    更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 "双十一"电商大促脚步渐近,各大平台的战火又将燃起.直播电商以低成本.高转化率等优势备受商家青 ...

  9. 听说火山引擎推出的 DataLeap,已经可以支持万级表的数据血缘图谱了!

    更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 数据来源广.量级大.场景多,导致数据之间关系变得异常复杂. 经过读取.清洗.存储.计算等一系列流程之后,数据最终汇 ...

  10. 信创就用国产的生态,Solon v2.6.4 发布

    Solon 是什么框架? Java 新的"生态级"应用开发框架.从零开始构建,有自己的标准规范与开放生态(历时六年,具备全球第二级别的生态规模). 相对于 Spring,有什么特点 ...