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. Shell的概念、shebang、bash的概念

    什么是shell shell的作用是 解释执行用户输入的命令或程序等 用户输入一条命令,shell就解释一条 键盘输入命令,Linux给与响应的方式,称之为交互式 linux的计算机是如何跟用户进行交 ...

  2. Windows手工入侵排查思路

    文章来源公众号:Bypass Windows系统被入侵后,通常会导致系统资源占用过高.异常端口和进程.可疑的账号或文件等,给业务系统带来不稳定等诸多问题.一些病毒木马会随着计算机启动而启动并获取一定的 ...

  3. Netty 组件介绍

    BootStrap Netty 中的 BootStrap 分为两种:一种是客户端的 BootStrap:一种是服务端的 ServerBootStrap. 客户端的 BootStrap 初始化客户端,该 ...

  4. Ubuntu20.04 安装shutter

    1 sudo add-apt-repository ppa:linuxuprising/shutter 2 3 sudo apt install shutter 4 5 卸载 6 sudo apt-g ...

  5. 从5个函数带你理解K8s DeltaFIFO

    摘要:DeltaFIFO是K8s中用来存储处理数据的Queue,相较于传统的FIFO,它不仅仅存储了数据保证了先进先出,而且存储有K8s资源对象的类型.是连接Reflector(生产者)和indexe ...

  6. PPT 没有电脑如何制作PPT

    没有电脑如何制作PPT

  7. Jmeter软件测试

    1.1. 性能测试是什么 基于协议模拟用户发出请求,对服务器形成一定负载,来测试服务器的性能指标是否满足要求 性能指标关注点:时间性能.空间性能 性能测试与页面无关 性能测试定义:指通过自动化的测试工 ...

  8. Android 编译线程爆了, gradle 内存 OOM 解决之路

    本文首发我的微信公众号徐公,收录于 Github·AndroidGuide,这里有 Android 进阶成长知识体系, 希望我们能够一起学习进步,关注公众号徐公,5 年中大厂程序员,一起建立核心竞争力 ...

  9. Android WebView 踩坑日记,字体怎么突然变小了???

    背景 最近,端内在做 webView 统一的时候,个性签名中的 WebView 替换为 CustomWebView 之后,发现字体突然变小. 一开始不知道是什么原因,通过二分法查找最近的提交,排查之后 ...

  10. Vue2--入门学习

    看了慕课网的教学视频,觉得挺不错的,在此做个随堂记录,有兴趣的可以去看视频 vue版本:2.5 文档链接:https://v2.cn.vuejs.org/v2/guide/installation.h ...