本文档风哥主要介绍Oracle升级路径规划相关知识,包括升级路径规划的概念、升级路径类型、升级路径规划使用、升级路径配置、升级路径监控、升级路径故障处理等内容,由风哥教程参考Oracle官方文档Install and Upgrade内容编写,适合DBA人员在学习和测试中使用,如果要应用于生产环境则需要自行确认。
Part01-基础概念与理论知识
1.1 升级路径规划的概念
Oracle升级路径规划是指确定从当前数据库版本升级到目标版本的路径。升级路径规划需要考虑版本兼容性、升级方式、升级时间、升级风险等因素。合理的升级路径规划可以确保升级过程顺利进行。更多视频教程www.fgedu.net.cn
- 版本兼容:确保版本兼容性
- 路径明确:明确升级路径
- 风险可控:控制升级风险
- 时间合理:合理安排升级时间
- 资源充足:确保资源充足
1.2 升级路径类型
Oracle升级路径类型:
- 直接升级:直接从当前版本升级到目标版本
- 中间升级:先升级到中间版本,再升级到目标版本
- 迁移升级:使用迁移方式升级到目标版本
- 滚动升级:在RAC环境中逐节点升级
- 跨平台升级:在不同平台之间升级
1. 直接升级
– 直接从当前版本升级到目标版本
– 适用于支持的升级路径
– 升级时间较短
– 风险较低
– 推荐使用
2. 中间升级
– 先升级到中间版本
– 再升级到目标版本
– 适用于不支持的直接升级路径
– 升级时间较长
– 风险较高
3. 迁移升级
– 使用迁移方式升级
– 如Data Pump、GoldenGate
– 适用于跨平台升级
– 升级时间较长
– 风险适中
4. 滚动升级
– 在RAC环境中逐节点升级
– 最小化停机时间
– 适用于高可用环境
– 升级时间较长
– 风险较低
5. 跨平台升级
– 在不同平台之间升级
– 如Linux到Windows
– 使用迁移方式
– 升级时间较长
– 风险较高
1.3 升级路径规划使用
Oracle升级路径规划使用:
- 版本评估:评估当前版本和目标版本
- 路径选择:选择合适的升级路径
- 时间规划:规划升级时间
- 资源准备:准备升级所需资源
- 风险控制:控制升级风险
Part02-生产环境规划与建议
2.1 升级路径规划
Oracle升级路径规划要点:
– 版本评估:评估当前版本和目标版本
– 路径选择:选择合适的升级路径
– 时间规划:规划升级时间
– 资源准备:准备升级所需资源
# 版本评估规划
– 当前版本:确定当前数据库版本
– 目标版本:确定目标数据库版本
– 支持路径:确定支持的升级路径
– 兼容性:检查版本兼容性
# 路径选择规划
– 直接升级:优先选择直接升级
– 中间升级:必要时选择中间升级
– 迁移升级:跨平台时选择迁移升级
– 滚动升级:RAC环境选择滚动升级
# 时间规划
– 维护窗口:选择合适的维护窗口
– 升级时间:预估升级所需时间
– 测试时间:预留测试时间
– 回滚时间:预留回滚时间
# 资源准备规划
– 硬件资源:准备硬件资源
– 软件资源:准备软件资源
– 人力资源:准备人力资源
– 时间资源:准备时间资源
2.2 升级路径场景
Oracle升级路径场景:
- 11g到19c:需要中间升级路径
- 12.1到19c:可以直接升级
- 12.2到19c:可以直接升级
- 18c到19c:可以直接升级
- RAC滚动升级:逐节点升级
1. 11g到19c
– 需要中间升级路径
– 11.2.0.4 -> 12.2 -> 19c
– 或使用迁移方式
– 升级时间较长
– 风险较高
2. 12.1到19c
– 可以直接升级
– 12.1.0.2 -> 19c
– 升级时间适中
– 风险适中
– 推荐使用
3. 12.2到19c
– 可以直接升级
– 12.2.0.1 -> 19c
– 升级时间较短
– 风险较低
– 推荐使用
4. 18c到19c
– 可以直接升级
– 18.x -> 19c
– 升级时间最短
– 风险最低
– 推荐使用
5. RAC滚动升级
– 逐节点升级
– 最小化停机时间
– 适用于高可用环境
– 升级时间较长
– 风险较低
2.3 升级路径最佳实践
Oracle升级路径最佳实践:
- 优先直接升级:优先选择直接升级路径
- 充分测试:在测试环境中充分测试
- 备份数据:升级前备份数据
- 文档记录:记录升级过程
- 回滚方案:制定回滚方案
Part03-生产环境项目实施方案
3.1 升级路径配置
3.1.1 确定升级路径
SQL> select * from v$version;
BANNER
——————————————————————————–
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 – 64bit Production
PL/SQL Release 12.2.0.1.0 – Production
CORE 12.2.0.1.0 Production
TNS for Linux: Version 12.2.0.1.0 – Production
NLSRTL Version 12.2.0.1.0 – Production
# 2. 检查数据库组件
SQL> select comp_name, version, status from dba_registry;
COMP_NAME VERSION STATUS
—————————————- —————————— ————
Oracle Database Catalog Views 12.2.0.1.0 VALID
Oracle Database Packages and Types 12.2.0.1.0 VALID
JServer JAVA Virtual Machine 12.2.0.1.0 VALID
Oracle XDK 12.2.0.1.0 VALID
Oracle Database Java Packages 12.2.0.1.0 VALID
# 3. 检查支持的升级路径
# Oracle支持的直接升级路径:
# – 11.2.0.4 -> 12.2.0.1 -> 19c
# – 12.1.0.2 -> 19c
# – 12.2.0.1 -> 19c
# – 18.x -> 19c
# 4. 确定升级路径
# 当前版本:12.2.0.1
# 目标版本:19.3.0.0
# 升级路径:直接升级(12.2.0.1 -> 19.3.0.0)
# 5. 检查升级前提条件
SQL> select name, value from v$parameter
where name in (‘compatible’, ‘cpu_count’, ‘sga_target’, ‘pga_aggregate_target’);
NAME VALUE
—————————— ——————————
compatible 12.2.0
cpu_count 8
sga_target 4G
pga_aggregate_target 1G
# 6. 检查数据库大小
SQL> select sum(bytes)/1024/1024/1024 as “Size(GB)” from dba_data_files;
Size(GB)
———-
100
# 7. 预估升级时间
# 数据库大小:100GB
# 预估升级时间:约1-2小时
# 预留时间:4小时
# 8. 检查磁盘空间
$ df -h /oracle/app/oracle
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 500G 200G 300G 40% /oracle
# 9. 检查内存
$ free -g
total used free shared buff/cache available
Mem: 16 8 4 0 4 7
Swap: 8 0 8
# 10. 检查操作系统版本
$ cat /etc/redhat-release
Red Hat Enterprise Linux Server release 7.9 (Maipo)
3.1.2 执行升级路径规划
$ vi /home/oracle/upgrade/upgrade_path_plan.md
# Oracle数据库升级路径规划文档
## 1. 升级概述
– 当前版本:Oracle 12.2.0.1
– 目标版本:Oracle 19.3.0.0
– 升级路径:直接升级
– 升级方式:DBUA或手动升级
## 2. 升级前提条件
– 硬件资源充足
– 软件资源准备
– 备份数据
– 测试环境验证
## 3. 升级步骤
1. 运行预升级检查
2. 执行预升级修复
3. 备份数据库
4. 安装新版本软件
5. 执行升级
6. 执行升级后检查
7. 执行升级后修复
## 4. 升级时间规划
– 预升级检查:30分钟
– 预升级修复:30分钟
– 数据库备份:1小时
– 软件安装:30分钟
– 数据库升级:2小时
– 升级后检查:30分钟
– 升级后修复:30分钟
– 总计:5小时
## 5. 回滚方案
– 恢复数据库备份
– 恢复参数文件
– 恢复监听配置
– 验证数据库功能
## 6. 验证方案
– 验证数据库版本
– 验证组件状态
– 验证对象状态
– 验证应用功能
– 验证性能
# 2. 创建升级路径检查脚本
$ vi /home/oracle/scripts/check_upgrade_path.sh
#!/bin/bash
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: http://www.fgedu.net.cn
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: http://www.fgedu.net.cn
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: http://www.fgedu.net.cn
# 升级路径检查脚本
export ORACLE_HOME=/oracle/app/oracle/product/12.2.0/dbhome_1
export ORACLE_SID=FGEDUDB
export PATH=$ORACLE_HOME/bin:$PATH
LOG_DIR=”/home/oracle/upgrade”
mkdir -p $LOG_DIR
DATE=$(date +%Y%m%d_%H%M%S)
LOG_FILE=”$LOG_DIR/upgrade_path_check_$DATE.log”
echo “========================================” > $LOG_FILE
echo “Upgrade Path Check Report” >> $LOG_FILE
echo “Date: $(date)” >> $LOG_FILE
echo “========================================” >> $LOG_FILE
# 检查当前版本
echo “” >> $LOG_FILE
echo “Current Database Version:” >> $LOG_FILE
sqlplus -s / as sysdba <
set linesize 200
set pagesize 100
select * from v\$version;
EOF
# 检查组件状态
echo “” >> $LOG_FILE
echo “Component Status:” >> $LOG_FILE
sqlplus -s / as sysdba <
set linesize 200
set pagesize 100
select comp_name, version, status from dba_registry;
EOF
# 检查数据库大小
echo “” >> $LOG_FILE
echo “Database Size:” >> $LOG_FILE
sqlplus -s / as sysdba <
set linesize 200
set pagesize 100
select sum(bytes)/1024/1024/1024 as “Size(GB)” from dba_data_files;
EOF
# 检查磁盘空间
echo “” >> $LOG_FILE
echo “Disk Space:” >> $LOG_FILE
df -h /oracle/app/oracle >> $LOG_FILE
# 检查内存
echo “” >> $LOG_FILE
echo “Memory:” >> $LOG_FILE
free -g >> $LOG_FILE
# 检查操作系统版本
echo “” >> $LOG_FILE
echo “OS Version:” >> $LOG_FILE
cat /etc/redhat-release >> $LOG_FILE
echo “” >> $LOG_FILE
echo “Upgrade path check completed at $(date)” >> $LOG_FILE
# 发送报告
mail -s “Upgrade Path Check Report – $DATE” admin@fgedu.net.cn < $LOG_FILE
# 3. 设置脚本权限
$ chmod +x /home/oracle/scripts/check_upgrade_path.sh
# 4. 测试脚本
$ /home/oracle/scripts/check_upgrade_path.sh
3.2 升级路径监控
3.2.1 配置升级路径监控脚本
$ vi /home/oracle/scripts/monitor_upgrade_path.sh
#!/bin/bash
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: http://www.fgedu.net.cn
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: http://www.fgedu.net.cn
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: http://www.fgedu.net.cn
# 升级路径监控脚本
export ORACLE_HOME=/oracle/app/oracle/product/19c/dbhome_1
export ORACLE_SID=FGEDUDB
export PATH=$ORACLE_HOME/bin:$PATH
LOG_DIR=”/home/oracle/upgrade_path_monitor”
mkdir -p $LOG_DIR
DATE=$(date +%Y%m%d)
LOG_FILE=”$LOG_DIR/upgrade_path_monitor_$DATE.log”
echo “$(date): Starting upgrade path monitor…” > $LOG_FILE
# 检查升级路径状态
sqlplus -s / as sysdba <
set linesize 200
set pagesize 100
— 检查数据库版本
select * from v\$version;
— 检查组件状态
select comp_name, version, status from dba_registry;
— 检查无效对象
select count(*) from dba_objects where status = ‘INVALID’;
— 检查参数
select name, value from v\$parameter where name in (‘compatible’, ‘cpu_count’, ‘sga_target’, ‘pga_aggregate_target’);
exit
EOF
echo “$(date): Upgrade path monitor completed.” >> $LOG_FILE
# 发送报告
mail -s “Upgrade Path Monitor Report – $DATE” admin@fgedu.net.cn < $LOG_FILE
# 2. 设置脚本权限
$ chmod +x /home/oracle/scripts/monitor_upgrade_path.sh
# 3. 测试脚本
$ /home/oracle/scripts/monitor_upgrade_path.sh
# 4. 设置定期监控
$ crontab -e
# 每小时监控升级路径状态
0 * * * * /home/oracle/scripts/monitor_upgrade_path.sh >> /home/oracle/upgrade_path_monitor/cron.log 2>&1
3.3 升级路径故障处理
3.3.1 升级路径常见问题
# 错误信息
ERROR: Direct upgrade from 11.2.0.3 to 19c is not supported
# 解决方案
# 1. 检查支持的升级路径
# 11.2.0.3 -> 11.2.0.4 -> 12.2 -> 19c
# 或使用迁移方式
# 2. 选择中间升级路径
# 先升级到11.2.0.4
# 再升级到12.2
# 最后升级到19c
# 问题2:版本不兼容
# 错误信息
ERROR: COMPATIBLE parameter must be 12.2.0 or higher
# 解决方案
# 1. 检查当前COMPATIBLE参数
SQL> show parameter compatible
NAME TYPE VALUE
—————————— ———– ——————————
compatible string 12.1.0
# 2. 更新COMPATIBLE参数
SQL> alter system set compatible = ‘12.2.0’ scope=spfile;
System altered.
SQL> shutdown immediate;
SQL> startup;
# 问题3:资源不足
# 错误信息
ERROR: Insufficient disk space for upgrade
# 解决方案
# 1. 检查磁盘空间
$ df -h /oracle/app/oracle
# 2. 清理空间
$ rm -rf /oracle/app/oracle/diag/rdbms/*/trace/*.trc
$ rm -rf /oracle/app/oracle/diag/rdbms/*/trace/*.trm
# 3. 或增加磁盘空间
Part04-生产案例与实战讲解
4.1 升级路径案例
在生产环境中执行升级路径规划的完整案例:
4.1.1 场景描述
某企业需要将Oracle数据库从11.2.0.3升级到19c。
4.1.2 分析步骤
$ vi /home/oracle/scripts/auto_upgrade_path.sh
#!/bin/bash
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: http://www.fgedu.net.cn
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: http://www.fgedu.net.cn
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: http://www.fgedu.net.cn
# 升级路径规划自动化脚本
export ORACLE_HOME=/oracle/app/oracle/product/11.2.0/dbhome_1
export ORACLE_SID=FGEDUDB
export PATH=$ORACLE_HOME/bin:$PATH
LOG_DIR=”/home/oracle/upgrade_path”
mkdir -p $LOG_DIR
DATE=$(date +%Y%m%d_%H%M%S)
LOG_FILE=”$LOG_DIR/upgrade_path_$DATE.log”
echo “========================================” > $LOG_FILE
echo “Upgrade Path Planning Report” >> $LOG_FILE
echo “Date: $(date)” >> $LOG_FILE
echo “========================================” >> $LOG_FILE
# 检查当前版本
echo “” >> $LOG_FILE
echo “Current Version:” >> $LOG_FILE
sqlplus -s / as sysdba <
set linesize 200
set pagesize 100
select * from v\$version;
EOF
# 确定升级路径
echo “” >> $LOG_FILE
echo “Upgrade Path:” >> $LOG_FILE
echo “11.2.0.3 -> 11.2.0.4 -> 12.2.0.1 -> 19.3.0.0” >> $LOG_FILE
# 检查升级前提条件
echo “” >> $LOG_FILE
echo “Upgrade Prerequisites:” >> $LOG_FILE
sqlplus -s / as sysdba <
set linesize 200
set pagesize 100
select name, value from v\$parameter where name = ‘compatible’;
select sum(bytes)/1024/1024/1024 as “Size(GB)” from dba_data_files;
EOF
# 预估升级时间
echo “” >> $LOG_FILE
echo “Estimated Upgrade Time:” >> $LOG_FILE
echo “Phase 1: 11.2.0.3 -> 11.2.0.4: 2 hours” >> $LOG_FILE
echo “Phase 2: 11.2.0.4 -> 12.2.0.1: 2 hours” >> $LOG_FILE
echo “Phase 3: 12.2.0.1 -> 19.3.0.0: 2 hours” >> $LOG_FILE
echo “Total: 6 hours (plus backup and verification time)” >> $LOG_FILE
echo “” >> $LOG_FILE
echo “Upgrade path planning completed at $(date)” >> $LOG_FILE
# 发送报告
mail -s “Upgrade Path Planning Report – $DATE” admin@fgedu.net.cn < $LOG_FILE
# 2. 设置脚本权限
$ chmod +x /home/oracle/scripts/auto_upgrade_path.sh
# 3. 测试脚本
$ /home/oracle/scripts/auto_upgrade_path.sh
4.2 升级路径故障处理
在升级路径故障处理过程中的方法和技巧:
4.2.1 故障处理流程
# 1. 识别问题
# – 查看升级日志
# – 查看错误信息
# – 检查数据库状态
# 2. 收集信息
# – 收集错误信息
# – 收集诊断数据
# – 收集系统信息
# 3. 分析原因
# – 分析错误原因
# – 分析升级路径
# – 分析配置问题
# 4. 制定方案
# – 制定修复方案
# – 制定替代方案
# – 制定预防措施
# 5. 执行修复
# – 执行修复操作
# – 验证修复结果
# – 记录修复过程
# 示例:处理升级路径不支持
# 1. 识别问题
$ cat /oracle/app/oracle/cfgtoollogs/FGEDUDB/upgrade/upgrade.log
# 2. 收集信息
SQL> select * from v$version;
# 3. 分析原因
— 当前版本不支持直接升级
# 4. 制定方案
— 选择中间升级路径
# 5. 执行修复
— 先升级到中间版本
— 再升级到目标版本
4.3 升级路径优化
优化升级路径配置的最佳实践:
4.3.1 优化升级路径管理
SQL> create or replace procedure manage_upgrade_path_results(
p_current_version in varchar2,
p_target_version in varchar2,
p_upgrade_path in varchar2,
p_estimated_time in number
) as
begin
dbms_output.put_line(‘— Upgrade Path Results Management —‘);
dbms_output.put_line(‘Current Version: ‘ || p_current_version);
dbms_output.put_line(‘Target Version: ‘ || p_target_version);
dbms_output.put_line(‘Upgrade Path: ‘ || p_upgrade_path);
dbms_output.put_line(‘Estimated Time: ‘ || p_estimated_time || ‘ hours’);
— 可以扩展为记录到表中
end manage_upgrade_path_results;
/
Procedure created.
# 2. 执行管理存储过程
SQL> set serveroutput on
SQL> exec manage_upgrade_path_results(‘12.2.0.1’, ‘19.3.0.0’, ‘Direct’, 2);
— Upgrade Path Results Management —
Current Version: 12.2.0.1
Target Version: 19.3.0.0
Upgrade Path: Direct
Estimated Time: 2 hours
PL/SQL procedure successfully completed.
# 3. 创建升级路径历史表
SQL> create table upgrade_path_history (
id number primary key,
plan_date date,
current_version varchar2(50),
target_version varchar2(50),
upgrade_path varchar2(100),
estimated_time number,
actual_time number,
status varchar2(50),
notes varchar2(4000)
);
Table created.
SQL> create sequence upgrade_path_history_seq;
Sequence created.
# 4. 记录升级路径历史
SQL> insert into upgrade_path_history values (
upgrade_path_history_seq.nextval,
sysdate,
‘12.2.0.1’,
‘19.3.0.0’,
‘Direct’,
2,
2.5,
‘SUCCESS’,
‘Upgrade from 12.2 to 19c’
);
1 row created.
SQL> commit;
Commit complete.
# 5. 查看升级路径历史趋势
SQL> column plan_date format a20
SQL> select plan_date, current_version, target_version, upgrade_path, status
from upgrade_path_history
order by plan_date desc
fetch first 12 rows only;
PLAN_DATE CURRENT_VERSION TARGET_VERSION UPGRADE_PATH STATUS
——————– ————— ————– ———— —————
2026-03-31 10:00:00 12.2.0.1 19.3.0.0 Direct SUCCESS
2026-03-30 10:00:00 12.1.0.2 19.3.0.0 Direct SUCCESS
2026-03-29 10:00:00 11.2.0.4 19.3.0.0 Intermediate SUCCESS
Part05-风哥经验总结与分享
5.1 升级路径总结
Oracle升级路径规划是升级成功的关键,具有以下特点:
- 版本兼容:确保版本兼容性
- 路径明确:明确升级路径
- 风险可控:控制升级风险
- 时间合理:合理安排升级时间
- 资源充足:确保资源充足
5.2 升级路径检查清单
Oracle升级路径检查清单:
- 版本评估:评估当前版本和目标版本
- 路径选择:选择合适的升级路径
- 时间规划:规划升级时间
- 资源准备:准备升级所需资源
- 风险控制:控制升级风险
- 定期检查:定期检查升级路径
5.3 升级路径工具推荐
Oracle升级路径工具推荐:
- preupgrd.sql:预升级检查工具
- DBUA:数据库升级助手
- catupgrd.sql:手动升级脚本
- Data Pump:迁移升级工具
- Shell脚本:自动化升级过程
本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html
