oracle11g迁移到19c可能出现的问题

oracle11g迁移到19c可能出现的问题
最新回答
盯着作业唱征服丶

2021-10-11 21:12:03

Oracle 11g迁移到19c可能出现的问题主要集中在兼容性、功能变化、性能优化及迁移操作四个方面,需针对性处理以避免业务中断。

兼容性问题
  1. SQL/PL-SQL语法差异:19c新增JSON支持、多租户增强等特性,但弃用了部分11g语法(如ALTER TABLE ... MOVE ONLINE行为变化)。若应用代码依赖旧语法,需提前重构并测试。
  2. 数据类型与存储:TIMESTAMP WITH TIME ZONE的存储方式可能不同,需验证时区相关逻辑是否准确。
  3. 客户端工具限制:旧版Oracle客户端(如11g的OCI驱动)可能无法连接19c数据库,需升级至12c或更高版本驱动。
  4. 字符集转换风险:使用expdp导入时,若源端与目标端字符集(如NLS_CHARACTERSET)或操作系统NLS_LANG设置不一致,可能导致注释乱码或数据丢失(报错ORA-39346)。
功能变化问题
  1. 新增特性适配:19c引入自动索引管理、原生JSON支持等,需调整应用以利用新功能。
  2. 弃用功能迁移:Oracle Multimedia被移除,需将多媒体数据迁移至外部存储;DBMS_LOCK和DBMS_ALERT部分功能需替换为AQ(高级队列)。
  3. 权限冲突:12c引入的INHERIT PRIVILEGES功能可能导致导入indextype时权限不兼容,需调整系统设置或重新授权。
性能问题
  1. 优化器行为变化:19c优化器版本可能改变执行计划,导致SQL性能波动。建议通过SQL Plan Management(SPM)固定关键SQL的执行计划。
  2. 内存管理调整:19c默认启用内存自动调优(需配置MEMORY_TARGET),与11g的静态SGA/PGA参数不同,需重新规划内存分配。
迁移操作问题
  1. Grid升级失败:如profile4downgrade.xml文件权限错误(报错CLSRSC-186),需修改文件权限为oracle:oinstall。
  2. 数据泵导入异常:物化视图刷新组创建失败、权限丢失,或dba_jobs的log_user字段显示为SYS(命中Bug 32249704)。
验证与回退问题
  1. 无效对象检查:升级后可能因兼容性问题导致对象失效,需执行SELECT object_name, object_type, status FROM dba_objects WHERE status = 'INVALID'排查。
  2. 回退方案准备:提前备份数据文件、控制文件和参数文件(spfile),并启用闪回日志以便通过FLASHBACK DATABASE TO BEFORE UPGRADE回退。

建议:使用Pre-Upgrade Information Tool生成兼容性报告,在测试环境验证升级流程;分阶段升级(如先升级到12c/18c),并使用Data Pump或GoldenGate进行数据迁移。