Oracle 11.2.0.4 不能直接升级到 23c,需分两步走:先升至 19c(中间版),再升至 23c;且 23c 仅支持多租户(CDB/PDB)架构,非 CDB 需同步转换。以下为核心路径与实操步骤。
⚠️ 核心约束与路径
表格
| 项目 | 要求 |
|---|---|
| 直接升级 | 不支持,仅 19.3+/21.3+ 可直升 23c |
| 必走路径 | 11.2.0.4 → 19c → 23c |
| 23c 架构 | 仅 CDB/PDB,非 CDB 须转 PDB |
| 兼容参数 | 23c 最低 COMPATIBLE=12.2.0,默认 23.0.0Oracle |
| 推荐工具 | AutoUpgrade(官方首选,支持断点续跑与回退) |
🛠️ 完整升级方案(两步走)
第一步:11.2.0.4 → 19c(中间升级)
环境准备
- 安装 19c 新 ORACLE_HOME,务必应用最新 RU(如 19.21)Oracle。
- 配置资源:内存≥32GB、磁盘≥200GB、临时表空间≥20GB。
- 关闭应用与监听,确保无业务连接。
预检查与修复
- 运行 19c
preupgrade.jar:bash
运行 java -jar $ORACLE_HOME_19/rdbms/admin/preupgrade.jar file /tmp/preupgrade_11to19 - 按报告修复:统计信息收集、无效对象编译、参数调整(如
COMPATIBLE=12.2.0)、废弃组件清理。 - 备份全库(RMAN),创建保证还原点。
- 运行 19c
升级执行(AutoUpgrade)
- 编写配置文件
config_11to19.properties:properties
global.autoupg_log_dir=/u01/app/oracle/autoupg/logs upg1.sid=ORCL11 upg1.source_home=/u01/app/oracle/product/11.2.0.4 upg1.target_home=/u01/app/oracle/product/19.0.0 upg1.upgrade_type=SID - 分析模式(预检查):
bash
运行 java -jar autoupgrade.jar -config config_11to19.properties -mode analyze - 升级模式(执行):
bash
运行 java -jar autoupgrade.jar -config config_11to19.properties -mode deploy - 验证:
sqlplus / as sysdba→SELECT banner FROM v$version;确认 19c 正常,检查组件状态$ORACLE_HOME_19/rdbms/admin/utlrp.sql编译无效对象。
- 编写配置文件
第二步:19c → 23c(最终升级)
环境准备
- 安装 23c 新 ORACLE_HOME,应用最新 RUOracle。
- 19c 数据库需为 CDB 架构(若为非 CDB,AutoUpgrade 可自动转 PDB)。
预检查与修复
- 运行 23c
preupgrade.jar,重点检查:- 字符集(建议 CDB 为 AL32UTF8)
- 兼容参数
COMPATIBLE=23.0.0 - 废弃特性(如传统审计、部分隐含参数)Oracle
- 收集全库统计信息,备份全库。
- 运行 23c
升级执行(AutoUpgrade)
- 编写配置文件
config_19to23.properties:properties
global.autoupg_log_dir=/u01/app/oracle/autoupg/logs_23 upg1.cdb_name=CDB19 upg1.source_home=/u01/app/oracle/product/19.0.0 upg1.target_home=/u01/app/oracle/product/23.0.0 upg1.target_cdb=CDB23 upg1.noncdb_to_pdb=true # 若 19c 为非 CDB,自动转 PDB - 分析模式:
bash
运行 java -jar autoupgrade.jar -config config_19to23.properties -mode analyze - 升级模式:
bash
运行 java -jar autoupgrade.jar -config config_19to23.properties -mode deploy - 验证:
- 查看 CDB/PDB 状态:
show con_name;SELECT name, open_mode FROM v$pdbs; - 运行 post-upgrade 检查:
@$ORACLE_HOME_23/rdbms/admin/utlrp.sql - 检查组件版本:
SELECT comp_name, version FROM dba_registry;Oracle
- 查看 CDB/PDB 状态:
- 编写配置文件
🚀 替代方案(数据迁移)
若跨平台或需更灵活,可采用 全传输导出导入(Full Transportable Export/Import),适合 11.2.0.4 迁 23c:
11.2.0.4 端(源)
- 创建目录:
CREATE DIRECTORY dp_dir AS '/u01/dump'; - 全传输导出(需指定 VERSION=12):
bash
运行 expdp \'/ as sysdba\' DIRECTORY=dp_dir DUMPFILE=full_11to23.dmp FULL=Y TRANSPORTABLE=ALWAYS VERSION=12 LOGFILE=exp_full.log - 复制数据文件与 dump 文件至 23c 服务器。
- 创建目录:
23c 端(目标)
- 创建 CDB 与 PDB:
CREATE PLUGGABLE DATABASE tgt_pdb ADMIN USER pdbadmin IDENTIFIED BY password; - 创建目录:
CREATE DIRECTORY dp_dir AS '/u01/dump'; - 导入:
bash
运行 impdp pdbadmin/password@tgtpdb DIRECTORY=dp_dir DUMPFILE=full_11to23.dmp FULL=Y TRANSPORT_DATAFILES=('/u02/data/file1.dbf', '/u02/data/file2.dbf') LOGFILE=imp_full.log
- 创建 CDB 与 PDB:
⚙️ 关键参数与回退
关键参数
COMPATIBLE:19c 设 12.2.0,23c 设 23.0.0OracleCONTROL_FILES:23c 需至少 2 个控制文件UNDO_TABLESPACE:23c 建议使用大回滚段
回退方案
- 11→19:使用 RMAN 还原备份或保证还原点
- 19→23:AutoUpgrade 支持自动回退(需 Enterprise Edition 与 Flashback)
📋 最佳实践
- 先测后产:在测试环境完整演练两步升级,验证应用兼容性。
- 并行升级:AutoUpgrade 支持多库并行处理,提升效率。
- 监控日志:关注
autoupgrade_*.log,及时处理错误。 - 统计信息:升级后收集全库统计,避免性能问题。
- 字符集统一:23c CDB 推荐使用 AL32UTF8,减少迁移问题。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




