Oracle PDB 迁移与重定位
Oracle PDB 迁移与重定位概述PDB 重定位Relocate是将 PDB 从一个 CDB 移动到另一个 CDB 的最快方式源 PDB 在整个过程中保持读写状态业务基本不中断。迁移方式对比方式停机时间说明重定位Relocate最短秒级在线复制自动切换推荐拔出/插入Unplug/Plug分钟级需关闭 PDB适合离线迁移远程克隆无克隆而非移动源库保留方式一在线重定位推荐前置条件-- 1. 源 CDB 必须开启本地撤销模式19c 默认SELECTPROPERTY_NAME,PROPERTY_VALUEFROMDATABASE_PROPERTIESWHEREPROPERTY_NAMELOCAL_UNDO_ENABLED;-- 2. 保存源 PDB 状态迁移完成后目标 PDB 自动恢复此状态ALTERPLUGGABLEDATABASEALLSAVESTATE INSTANCESALL;平台要求源和目标 CDB 字节序endianness相同字符集兼容目标 CDB 为 AL32UTF8 时无限制目标 CDB 安装的选项是源 CDB 的超集操作步骤第一步在目标 CDB 创建数据库链接-- 连接到目标 CDB RootCONNECTsys/passwordtarget_cdbASSYSDBA;CREATEPUBLICDATABASELINK lnk2srcCONNECTTOc##adminIDENTIFIEDBYpasswordUSINGSOURCE_CDB;链接用户需要具有CREATE PLUGGABLE DATABASE或SYSOPER权限。第二步执行重定位-- 基础语法CREATEPLUGGABLEDATABASEpdb1FROMpdb1lnk2srcRELOCATE AVAILABILITY MAX;-- 带路径转换CREATEPLUGGABLEDATABASEpdb1FROMpdb1lnk2srcRELOCATE AVAILABILITY MAX FILE_NAME_CONVERT(/source_path/,/target_path/);AVAILABILITY 选项选项适用场景AVAILABILITY NORMAL共享或交叉注册的监听器环境默认AVAILABILITY MAX独立隔离的监听器网络最短停机时间第三步监控迁移进度-- 查看 PDB 状态迁移中为 RELOCATINGSELECTPDB_NAME,OPEN_MODE,STATUSFROMCDB_PDBSWHEREPDB_NAMEPDB1;-- 查看文件复制进度SELECT*FROMV$SESSION_LONGOPSWHEREOPNAMEIN(kpdbfCopyTaskCbk,kcrfremnoc);第四步打开目标 PDB-- 迁移完成后必须以读写模式打开ALTERPLUGGABLEDATABASEpdb1OPENREADWRITE;-- 验证SELECTNAME,OPEN_MODEFROMV$PDBSWHERENAMEPDB1;第五步立即备份-- 迁移后归档链断裂必须立即备份BACKUPDATABASEPLUS ARCHIVELOG;方式二拔出 / 插入离线迁移适合不需要在线迁移、或跨字节序平台的场景。拔出 PDB-- 在源 CDB 上执行-- 先关闭 PDBALTERPLUGGABLEDATABASEsalespdbCLOSEIMMEDIATE;-- 拔出生成 XML 描述文件ALTERPLUGGABLEDATABASEsalespdb UNPLUGINTO/backup/salespdb.xml;-- 验证 XML 文件包含数据文件路径等信息SELECT*FROMTABLE(DBMS_PDB.DESCRIBE(/backup/salespdb.xml));检查兼容性-- 在目标 CDB 上检查DECLAREv_compatibleBOOLEAN;BEGINv_compatible :DBMS_PDB.CHECK_PLUG_COMPATIBILITY(pdb_descr_file/backup/salespdb.xml);IFv_compatibleTHENDBMS_OUTPUT.PUT_LINE(兼容);ELSEDBMS_OUTPUT.PUT_LINE(不兼容请查看 PDB_PLUG_IN_VIOLATIONS);ENDIF;END;/插入 PDB-- 在目标 CDB Root 执行CREATEPLUGGABLEDATABASEsalespdbUSING/backup/salespdb.xmlCOPY-- COPY/NOCOPY/MOVEFILE_NAME_CONVERT(/source/,/target/)TEMPFILE REUSE;-- 打开并检查ALTERPLUGGABLEDATABASEsalespdbOPENREADWRITE;SELECT*FROMPDB_PLUG_IN_VIOLATIONSWHERENAMESALESPDB;方式三DBCA 命令行迁移无交互方式适合自动化脚本dbca-silent\-relocatePDB\-sourceDBsource_cdb\-remotePDBNamepdb1\-remoteDBConnStringsourcehost:1521/source_cdb\-remoteDBSYSDBAUserNamesys\-remoteDBSYSDBAUserPasswordsrcpwd\-dbLinkUsernamec##admin \-dbLinkUserPasswordadminpwd\-sysDBAUserNamesys\-sysDBAPasswordtgtpwd\-pdbNamepdb1_new错误处理-- 迁移失败时查看 PDB 状态SELECTPDB_NAME,STATUSFROMCDB_PDBS;-- STATUS 可能为 UNUSABLE-- UNUSABLE 的 PDB 只能删除后重建DROPPLUGGABLEDATABASEpdb1 INCLUDING DATAFILES;-- 清理源侧残留的 tombstone PDBSELECTNAME,STATUSFROMV$CONTAINERSWHERESTATUSRELOCATED;DROPPLUGGABLEDATABASEtombstone_pdb;最佳实践✅推荐迁移前在源 CDB 做全库备份使用AVAILABILITY MAX用于跨数据中心迁移配置 Application Continuity FANRAC 环境迁移完成后立即备份目标 PDB验证应用连接正常后再清理源侧资源❌避免在共享 undo 模式下执行重定位跨字节序平台直接重定位需使用 Data Pump 导入导出迁移前未保存 PDB 服务状态忽略字符集兼容性检查
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2425774.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!