在19C中将NON-CDB迁移到PDB中的方法

在19C中将NON-CDB迁移到PDB中:
1、将源库以read only方式启动


2、在源库中执行:exec dbms_pdb.describe('/tmp/cdbtopdb.xml');


3、在目标库中执行:create pluggable database cdbtopdb using '/tmp/cdbtopdb.xml' create_dest_file='/u01/oracle/product/cdbtopdb/';


4、在目标库中执行:

                 alter session set container=cdbtopdb;     --此时,目标PDB是MOUNT,不要打开
               @/ORACLE_HOME/rdbms/admin/noncdb_to_pdb.sql 


5、alter pluggable database cdbtopdb open;
 

<think>嗯,用户需要将Oracle 19c的非CDB数据库迁移CDB环境中,而且都是本地环境。这个问题涉及Oracle数据库架构的核心概念转换,需要谨慎处理。用户可能是个DBA,正在做数据库升级或整合,考虑到引用中提到了12c/19c的迁移经验,说明用户对Oracle新架构应该有一定了解。 从技术角度看,non-CDBCDB迁移本质是"容器化改造",核心步骤分为准备、克隆、转换三阶段。引用[2]提到的克隆方式和引用[3]的noncdb_to_pdb.sql脚本是关键,必须确保源库处于只读状态保证数据一致性——这点在引用[3]的执行环境中也有体现。用户需要特别注意归档模式,如果源库没开归档,整个流程会失败。 考虑到用户是本地环境,网络传输不是瓶颈,但文件路径可能不同。在创建PDB时要像引用[2]那样显式指定CREATE_FILE_DEST,避免存储冲突。另外引用[4]的GoldenGate信息可能是干扰项,当前场景不需要。 用户可能没说的深层需求:想最小化停机时间。所以我在操作指南里强调了源库恢复读写的时间点,并建议在维护窗口操作。还应该提醒用户提前测试,毕竟noncdb_to_pdb.sql脚本执行时间可能很长(引用[3]提到"很长。。。等等")。 最后补充的注意事项其实比主流程更重要,比如字符集兼容性和PDB数量限制,这些在官方文档里容易忽略但实际会踩坑。特别是用户从19c non-CDB迁移,很可能遇到参数文件兼容问题,所以单独列出"清理遗留参数"的步骤。</think>以下是Oracle 19c非CDB数据库迁移CDB的本地环境操作指南,结合引用内容整理关键步骤: ### 一、前期准备 1. **环境检查** - 确认源库(non-CDB)和CDB目标库均为19c版本 - 源库必须开启归档模式:`ALTER DATABASE ARCHIVELOG;`(若未开启需先转换) - 确保源库处于`READ WRITE`状态 2. **创建必要路径** 在CDB服务器创建PDB文件存储目录: ```sql ALTER SYSTEM SET DB_CREATE_FILE_DEST='/u01/oradata/CDB1/PDB_DATA' SCOPE=BOTH; ``` --- ### 二、迁移操作步骤 #### 步骤1:源库置为只读 ```sql -- 在源库执行 SHUTDOWN IMMEDIATE; STARTUP MOUNT; ALTER DATABASE OPEN READ ONLY; ``` #### 步骤2:克隆PDB(核心步骤) ```sql --CDB的root容器执行 CREATE PLUGGABLE DATABASE newpdb FROM NON$CDB@source_db_link CREATE_FILE_DEST='/u01/oradata/CDB1/PDB_DATA' FILE_NAME_CONVERT=('源库数据路径','新PDB存储路径'); ``` > **关键说明**: > - `NON$CDB@source_db_link` 需提前配置源库的DB Link[^2] > - `FILE_NAME_CONVERT` 转换文件路径(本地环境可省略,由`CREATE_FILE_DEST`接管) #### 步骤3:执行PDB转换脚本 ```sql -- 切换到新PDB容器 ALTER SESSION SET CONTAINER=newpdb; -- 执行字典转换 @$ORACLE_HOME/rdbms/admin/noncdb_to_pdb.sql ``` > **注意**:此脚本执行时间较长(约10-30分钟),需耐心等待[^3] #### 步骤4:开启PDB并验证 ```sql ALTER PLUGGABLE DATABASE newpdb OPEN; -- 检查状态 SELECT name, open_mode FROM v$pdbs; ``` --- ### 三、迁移后操作 1. **源库恢复读写** ```sql -- 源库执行 SHUTDOWN IMMEDIATE; STARTUP; ``` 2. **PDB用户同步** 检查原用户权限是否迁移完整,重点验证: ```sql SELECT username FROM dba_users WHERE common='NO'; ``` --- ### ⚠️ 关键注意事项 1. **字符集兼容性** 源库与CDB的字符集、国家字符集必须一致,可通过以下命令检查: ```sql SELECT parameter, value FROM nls_database_parameters WHERE parameter IN ('NLS_CHARACTERSET', 'NLS_NCHAR_CHARACTERSET'); ``` 2. **PDB数量限制** 确认CDB许可证支持的PDB数量(标准版最多3个PDB) 3. **清理遗留参数** 删除源库参数文件中的`__data_transfer_cache_size`等non-CDB专用参数 --- ### 相关问题 1. 迁移后如何验证PDB数据的完整性? 2. 如果迁移过程中`noncdb_to_pdb.sql`脚本报错如何处理? 3. 如何将PDB回退到迁移前的状态? 4. 迁移后源库的监听配置需要调整吗? > 引用说明: > [^1]: 非CDB数据库CDB架构的本质区别 > [^2]: 克隆命令语法参考 > [^3]: `noncdb_to_pdb.sql`脚本的执行要求与时长预估 > [^4]: 环境检查工具的使用示例
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值