Oracle 数据库升级性能评估

Oracle 数据库升级性能评估

适用版本:Oracle Database 11g / 12c / 19c / 23ai 文档版本:v1.0 / 2026-07


1. 概述

数据库升级可能影响性能[1]:

风险

  • 优化器变化
  • 计划改变
  • 新特性影响
  • 兼容性

2. 升级前评估

2.1 升级路径

11g → 12c → 19c → 23ai

2.2 升级方式

  • DBUA
  • 手动
  • Data Pump
  • GoldenGate

详细见:Oracle 数据库升级

2.3 评估工具

# 预升级
$ORACLE_HOME/rdbms/admin/utlu112i.sql  -- 升级到 11g
$ORACLE_HOME/rdbms/admin/preupgrd.sql  -- 12c+
$ORACLE_HOME/rdbms/admin/utlusts.sql   -- 19c+

3. 性能评估

3.1 升级前基线

-- 1. SQL 性能基线
SELECT sql_id, elapsed_time_total, executions
FROM dba_hist_sqlstat
ORDER BY elapsed_time_total DESC;

-- 2. 计划基线
SELECT sql_id, plan_hash_value FROM dba_hist_sql_plan;

3.2 SQL Plan Baseline

-- 升级前捕获
ALTER SYSTEM SET optimizer_capture_sql_plan_baselines = TRUE;

-- 业务运行
-- 升级时保留

-- 升级后使用
ALTER SYSTEM SET optimizer_use_sql_plan_baselines = TRUE;

详细见:Oracle SQL Plan Baseline


4. 升级后验证

4.1 性能对比

-- AWR 对比
@?/rdbms/admin/awrddrpt.sql

4.2 SQL 性能

-- STA 评估
DECLARE
  v_task VARCHAR2(100);
BEGIN
  v_task := DBMS_SQLTUNE.CREATE_TUNING_TASK(sql_id => '&sql_id');
  DBMS_SQLTUNE.EXECUTE_TUNING_TASK(v_task);
END;
/

4.3 SQL Performance Analyzer (SPA)

-- 1. 创建 SPA 任务
VAR tname VARCHAR2(100);
BEGIN
  :tname := DBMS_SQLPA.CREATE_ANALYSIS_TASK(
    sqlset_name => 'my_sts'
  );
END;
/

-- 2. 升级前执行
EXEC DBMS_SQLPA.EXECUTE_ANALYSIS_TASK(:tname, 'BEFORE CHANGE');

-- 3. 升级后执行
EXEC DBMS_SQLPA.EXECUTE_ANALYSIS_TASK(:tname, 'AFTER CHANGE');

-- 4. 对比
EXEC DBMS_SQLPA.EXECUTE_ANALYSIS_TASK(:tname, 'COMPARE');

-- 5. 报告
SELECT DBMS_SQLPA.REPORT_ANALYSIS_TASK(:tname) FROM dual;

5. 优化器变化

5.1 12c Adaptive Features

-- 12.1
optimizer_adaptive_features = TRUE  -- 问题

-- 12.2+
optimizer_adaptive_plans = TRUE     -- 推荐
optimizer_adaptive_statistics = FALSE  -- 推荐

-- 19c
默认配置合理

详细见:Oracle Adaptive Features

5.2 兼容性参数

ALTER SYSTEM SET compatible = '19.0.0' SCOPE=SPFILE;

6. 新特性影响

6.1 12c

  • Adaptive Plans
  • In-Memory
  • Multi-tenant
  • Information Lifecycle Management

6.2 19c

  • 自动索引
  • Active Data Guard
  • Real Application Security

6.3 23ai

  • AI Vector Search
  • JSON Duality
  • SQL Firewall

详细见:Oracle 23ai 新特性


7. 风险点

7.1 计划退化

-- 1. SQL Plan Baseline 稳定
-- 2. SQL Profile
-- 3. HINT 临时

7.2 性能下降

- 统计信息重新收集
- 新优化器行为
- 参数变更

7.3 兼容性

- 废弃特性
- 新参数
- 行为变化

8. 回滚预案

8.1 Flashback Database

-- 升级前启用
ALTER DATABASE FLASHBACK ON;

-- 回滚
SHUTDOWN IMMEDIATE;
STARTUP MOUNT;
FLASHBACK DATABASE TO TIMESTAMP (SYSTIMESTAMP - INTERVAL '2' HOUR);
ALTER DATABASE OPEN RESETLOGS;

8.2 备份恢复

-- 升级前完整备份
RMAN> BACKUP DATABASE PLUS ARCHIVELOG;

详细见:Oracle 闪回性能优化

8.3 Data Guard

- 升级前建立 DG
- 失败切换

9. 升级步骤

9.1 测试环境

1. 复制生产
2. 升级
3. 测试业务
4. 性能对比
5. 修复问题

9.2 生产升级

1. 备份
2. 启用 SQL Plan Baseline
3. 升级
4. 验证
5. 监控

10. 监控

10.1 升级后 1 周

  • AWR 报告
  • Top SQL 性能
  • 错误日志
  • 业务响应

10.2 异常处理

-- 1. SQL Plan Baseline
-- 2. SQL Profile
-- 3. HINT
-- 4. 回滚

11. 常见坑与排错

11.1 升级后慢

-- 1. 统计信息
EXEC DBMS_STATS.GATHER_DATABASE_STATS;

-- 2. SQL Plan Baseline
-- 3. Adaptive Features

11.2 计划变化

-- 1. Baseline 固定
-- 2. SQL Profile
-- 3. 对比计划

11.3 ORA-00600

-- 1. 查 incident
SELECT * FROM v$diag_incident;

-- 2. 打包
adrci
ips create package ...

-- 3. Oracle Support

12. 最佳实践

  1. 测试环境先行:验证
  2. SQL Plan Baseline:稳定
  3. SPA 评估:对比
  4. Flashback Database:回滚
  5. 完整备份:保护
  6. 分阶段:风险控制
  7. 监控 1 周:及时
  8. 回滚预案:必备
  9. 业务验证:完整
  10. 文档化:流程

13. 参考资料

[1] Oracle Database Upgrade Guide 19c https://docs.oracle.com/en/database/oracle/oracle-database/19/upgrd/