Oracle 12.2 新特性 | PDB不同字符集变更深入解析
从12c版本12.1开始,就有了新特性——Pluggable Database,相比较之前通过schema的管理方式实现多用户管理,Pluggable Database实现了进一步的隔离,其中包含如下特点:
但在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目标端。 使用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: 直接修改字符集报错,说明新设字符集必须是老字符集的超集 注:oracle并不建议使用INTERNAL_USE来变更数据库的字符集。 作者介绍 谭龙? ?云和恩墨技术顾问 擅长Oracle数据库的安装配置、故障诊断、升级迁移解决方案的设计与实施。
关注本公众号,回复:prelection,你可以找到本文的相关视频文档。 相关阅读: 面向开发和DBA的Oracle 12c新特性 让每个PDB都拥有自己的 local undo表空间 Oracle 12c详解:PDB 的出与入 InAndOut Oracle 12c详解:PDB 的备份与恢复 Oracle 12c详解:从Schema到PDB的变化与隔离 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |