本文档风哥主要介绍Oracle DBUA升级相关知识,包括DBUA升级的概念、DBUA升级组成、DBUA升级使用、DBUA升级配置、DBUA升级监控、DBUA升级故障处理等内容,由风哥教程参考Oracle官方文档Install and Upgrade内容编写,适合DBA人员在学习和测试中使用,如果要应用于生产环境则需要自行确认。
Part01-基础概念与理论知识
1.1 DBUA升级的概念
Oracle DBUA(Database Upgrade Assistant)是Oracle提供的图形化数据库升级工具。DBUA可以自动完成数据库升级的大部分工作,包括预升级检查、升级执行、升级后验证等。DBUA是推荐的升级方式,特别适合初学者使用。更多视频教程www.fgedu.net.cn
- 图形化界面:提供图形化操作界面
- 自动检查:自动执行预升级检查
- 自动升级:自动执行升级过程
- 自动验证:自动验证升级结果
- 回滚支持:支持升级回滚
1.2 DBUA升级组成
Oracle DBUA升级组成:
- 预升级检查:自动检查升级前提条件
- 升级选项:配置升级选项
- 升级执行:自动执行升级过程
- 升级验证:自动验证升级结果
- 升级报告:生成升级报告
1. 预升级检查
– 自动检查升级前提条件
– 检查数据库配置
– 检查组件状态
– 检查参数设置
– 检查空间使用
2. 升级选项
– 配置升级选项
– 选择升级方式
– 配置并行度
– 配置备份选项
– 配置回滚选项
3. 升级执行
– 自动执行升级过程
– 执行预升级修复
– 执行数据库升级
– 执行升级后修复
– 执行对象编译
4. 升级验证
– 自动验证升级结果
– 验证数据库版本
– 验证组件状态
– 验证对象状态
– 验证功能正常
5. 升级报告
– 生成升级报告
– 记录升级过程
– 记录升级结果
– 记录问题修复
– 记录建议事项
1.3 DBUA升级使用
Oracle DBUA升级使用:
- 图形化升级:使用图形化界面升级
- 静默升级:使用静默模式升级
- 单实例升级:升级单实例数据库
- RAC升级:升级RAC数据库
- 容器数据库升级:升级容器数据库
Part02-生产环境规划与建议
2.1 DBUA升级规划
Oracle DBUA升级规划要点:
– 升级评估:评估升级的必要性和可行性
– 升级准备:准备升级所需资源
– 升级测试:在测试环境中测试
– 升级执行:执行升级过程
# 升级评估规划
– 版本评估:评估当前版本和目标版本
– 功能评估:评估功能需求
– 性能评估:评估性能需求
– 风险评估:评估升级风险
# 升级准备规划
– 硬件准备:准备硬件资源
– 软件准备:准备软件资源
– 备份准备:准备备份策略
– 时间准备:准备升级时间
# 升级测试规划
– 测试环境:在测试环境中测试
– 测试数据:使用测试数据
– 测试用例:制定测试用例
– 测试验证:验证升级结果
# 升级执行规划
– 升级时间:选择合适的升级时间
– 升级方式:选择合适的升级方式
– 升级监控:监控升级过程
– 升级验证:验证升级结果
2.2 DBUA升级场景
Oracle DBUA升级场景:
- 单实例升级:升级单实例数据库
- RAC升级:升级RAC数据库
- 容器数据库升级:升级容器数据库
- 静默升级:使用静默模式升级
- 回滚升级:回滚失败的升级
1. 单实例升级
– 升级单实例数据库
– 最常见的升级场景
– 操作简单
– 时间较短
– 风险较低
2. RAC升级
– 升级RAC数据库
– 支持滚动升级
– 最小化停机时间
– 操作复杂
– 风险适中
3. 容器数据库升级
– 升级容器数据库
– 支持多租户架构
– 同时升级所有PDB
– 操作复杂
– 风险适中
4. 静默升级
– 使用静默模式升级
– 无需图形界面
– 适合自动化
– 操作简单
– 风险较低
5. 回滚升级
– 回滚失败的升级
– 恢复到升级前状态
– 需要提前备份
– 操作复杂
– 风险较高
2.3 DBUA升级最佳实践
Oracle DBUA升级最佳实践:
- 充分测试:在测试环境中充分测试
- 备份数据:升级前备份数据
- 文档记录:记录升级过程
- 回滚方案:制定回滚方案
- 经验总结:总结升级经验
Part03-生产环境项目实施方案
3.1 DBUA升级配置
3.1.1 启动DBUA
$ export ORACLE_HOME=/oracle/app/oracle/product/19c/dbhome_1
$ export PATH=$ORACLE_HOME/bin:$PATH
# 2. 启动DBUA(图形界面)
$ dbua
# 3. DBUA启动界面
+————————————————–+
| Database Upgrade Assistant |
+————————————————–+
| |
| Welcome to the Database Upgrade Assistant |
| |
| This assistant will guide you through the |
| process of upgrading your Oracle database. |
| |
| [Next] [Cancel] |
+————————————————–+
# 4. 选择数据库
+————————————————–+
| Select Database |
+————————————————–+
| |
| Select the database to upgrade: |
| |
| (*) FGEDUDB |
| ( ) ORCL |
| |
| [Back] [Next] [Cancel] |
+————————————————–+
# 5. 预升级检查
+————————————————–+
| Pre-Upgrade Checks |
+————————————————–+
| |
| Running pre-upgrade checks… |
| |
| [=====> ] 50% |
| |
| Checking database components… |
| Checking parameters… |
| Checking space requirements… |
| |
| [Back] [Next] [Cancel] |
+————————————————–+
# 6. 升级选项
+————————————————–+
| Upgrade Options |
+————————————————–+
| |
| Upgrade Options: |
| |
| [X] Recompile invalid objects |
| [X] Upgrade Time Zone data |
| [X] Gather dictionary statistics |
| |
| Parallelism: [4] |
| |
| [Back] [Next] [Cancel] |
+————————————————–+
# 7. 备份选项
+————————————————–+
| Backup Options |
+————————————————–+
| |
| Backup Options: |
| |
| (*) Use RMAN to backup database |
| ( ) Use existing backup |
| ( ) No backup |
| |
| Backup Location: [/backup] |
| |
| [Back] [Next] [Cancel] |
+————————————————–+
# 8. 执行升级
+————————————————–+
| Upgrade Progress |
+————————————————–+
| |
| Upgrading database FGEDUDB… |
| |
| [========> ] 75% |
| |
| Current step: Upgrading data dictionary |
| Elapsed time: 01:30:00 |
| Estimated remaining: 00:30:00 |
| |
| [Cancel] |
+————————————————–+
# 9. 升级完成
+————————————————–+
| Upgrade Complete |
+————————————————–+
| |
| Database upgrade completed successfully. |
| |
| Database: FGEDUDB |
| Previous version: 12.2.0.1.0 |
| New version: 19.3.0.0.0 |
| Upgrade time: 02:00:00 |
| |
| View Report [Close] |
+————————————————–+
3.1.2 使用静默模式升级
$ vi /home/oracle/dbua.rsp
# DBUA响应文件
# 数据库信息
ORACLE_HOME=/oracle/app/oracle/product/19c/dbhome_1
ORACLE_BASE=/oracle/app/oracle
ORACLE_SID=FGEDUDB
# 升级选项
UPGRADE_TIMEZONE=TRUE
RECOMPILE_INVALID_OBJECTS=TRUE
GATHER_DICTIONARY_STATS=TRUE
PARALLELISM=4
# 备份选项
BACKUP_LOCATION=/backup
USE_RMAN_BACKUP=TRUE
# 日志选项
LOG_DIR=/home/oracle/dbua_logs
# 2. 使用静默模式运行DBUA
$ dbua -silent -responseFile /home/oracle/dbua.rsp
Upgrading database FGEDUDB…
Performing pre-upgrade checks…
Pre-upgrade checks completed successfully.
Starting upgrade…
Upgrading data dictionary…
Upgrading database components…
Upgrading time zone data…
Recompiling invalid objects…
Upgrade completed successfully.
Database: FGEDUDB
Previous version: 12.2.0.1.0
New version: 19.3.0.0.0
Upgrade time: 02:00:00
# 3. 查看升级日志
$ cat /home/oracle/dbua_logs/FGEDUDB/upgrade.log
# 4. 验证升级结果
$ sqlplus / as sysdba
SQL> select * from v$version;
BANNER
——————————————————————————–
Oracle Database 19c Enterprise Edition Release 19.3.0.0.0 – Production
SQL> select comp_name, version, status from dba_registry;
COMP_NAME VERSION STATUS
—————————————- —————————— ————
Oracle Server 19.3.0.0.0 VALID
JServer JAVA Virtual Machine 19.3.0.0.0 VALID
Oracle XDK 19.3.0.0.0 VALID
Oracle Database Java Packages 19.3.0.0.0 VALID
3.2 DBUA升级监控
3.2.1 配置DBUA监控脚本
$ vi /home/oracle/scripts/monitor_dbua.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
# DBUA监控脚本
export ORACLE_HOME=/oracle/app/oracle/product/19c/dbhome_1
export ORACLE_SID=FGEDUDB
export PATH=$ORACLE_HOME/bin:$PATH
LOG_DIR=”/home/oracle/dbua_monitor”
mkdir -p $LOG_DIR
DATE=$(date +%Y%m%d)
LOG_FILE=”$LOG_DIR/dbua_monitor_$DATE.log”
echo “$(date): Starting DBUA monitor…” > $LOG_FILE
# 检查DBUA状态
ps -ef | grep dbua >> $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’;
exit
EOF
echo “$(date): DBUA monitor completed.” >> $LOG_FILE
# 发送报告
mail -s “DBUA Monitor Report – $DATE” admin@fgedu.net.cn < $LOG_FILE
# 2. 设置脚本权限
$ chmod +x /home/oracle/scripts/monitor_dbua.sh
# 3. 测试脚本
$ /home/oracle/scripts/monitor_dbua.sh
# 4. 设置定期监控
$ crontab -e
# 每小时监控DBUA状态
0 * * * * /home/oracle/scripts/monitor_dbua.sh >> /home/oracle/dbua_monitor/cron.log 2>&1
3.3 DBUA升级故障处理
3.3.1 DBUA升级常见问题
# 错误信息
ERROR: Cannot start DBUA
# 解决方案
# 1. 检查DISPLAY环境变量
$ echo $DISPLAY
localhost:0.0
# 2. 设置DISPLAY环境变量
$ export DISPLAY=localhost:0.0
# 3. 检查X Window系统
$ xhost +
access control disabled, clients can connect from any host
# 4. 重新启动DBUA
$ dbua
# 问题2:DBUA升级失败
# 错误信息
ERROR: Upgrade failed
# 解决方案
# 1. 查看升级日志
$ cat /oracle/app/oracle/cfgtoollogs/dbua/FGEDUDB/upgrade.log
# 2. 检查数据库状态
SQL> select status from v$instance;
# 3. 恢复备份
RMAN> restore database;
RMAN> recover database;
# 4. 重新运行DBUA
$ dbua
# 问题3:DBUA回滚失败
# 错误信息
ERROR: Rollback failed
# 解决方案
# 1. 查看回滚日志
$ cat /oracle/app/oracle/cfgtoollogs/dbua/FGEDUDB/rollback.log
# 2. 手动恢复数据库
RMAN> startup nomount;
RMAN> restore controlfile from ‘/backup/control_file_backup’;
RMAN> alter database mount;
RMAN> restore database;
RMAN> recover database;
RMAN> alter database open resetlogs;
Part04-生产案例与实战讲解
4.1 DBUA升级案例
在生产环境中使用DBUA升级的完整案例:
4.1.1 场景描述
某企业需要将Oracle数据库从12.2升级到19c,使用DBUA进行升级。
4.1.2 分析步骤
$ vi /home/oracle/scripts/auto_dbua.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
# DBUA自动化脚本
export ORACLE_HOME=/oracle/app/oracle/product/19c/dbhome_1
export PATH=$ORACLE_HOME/bin:$PATH
LOG_DIR=”/home/oracle/dbua”
mkdir -p $LOG_DIR
DATE=$(date +%Y%m%d_%H%M%S)
LOG_FILE=”$LOG_DIR/dbua_$DATE.log”
echo “========================================” > $LOG_FILE
echo “DBUA Upgrade Report” >> $LOG_FILE
echo “Date: $(date)” >> $LOG_FILE
echo “========================================” >> $LOG_FILE
# 运行DBUA
echo “” >> $LOG_FILE
echo “Running DBUA…” >> $LOG_FILE
dbua -silent -responseFile /home/oracle/dbua.rsp >> $LOG_FILE
# 验证升级结果
echo “” >> $LOG_FILE
echo “Verifying upgrade…” >> $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’;
EOF
echo “” >> $LOG_FILE
echo “DBUA upgrade completed at $(date)” >> $LOG_FILE
# 发送报告
mail -s “DBUA Upgrade Report – $DATE” admin@fgedu.net.cn < $LOG_FILE
# 2. 设置脚本权限
$ chmod +x /home/oracle/scripts/auto_dbua.sh
# 3. 测试脚本
$ /home/oracle/scripts/auto_dbua.sh
4.2 DBUA升级故障处理
在DBUA升级故障处理过程中的方法和技巧:
4.2.1 故障处理流程
# 1. 识别问题
# – 查看DBUA日志
# – 查看升级日志
# – 检查数据库状态
# 2. 收集信息
# – 收集错误信息
# – 收集诊断数据
# – 收集系统信息
# 3. 分析原因
# – 分析错误原因
# – 分析升级过程
# – 分析配置问题
# 4. 制定方案
# – 制定修复方案
# – 制定回滚方案
# – 制定预防措施
# 5. 执行修复
# – 执行修复操作
# – 验证修复结果
# – 记录修复过程
# 示例:处理DBUA升级失败
# 1. 识别问题
$ cat /oracle/app/oracle/cfgtoollogs/dbua/FGEDUDB/upgrade.log
# 2. 收集信息
SQL> select * from dba_registry;
# 3. 分析原因
— 组件升级失败
# 4. 制定方案
— 恢复备份,重新升级
# 5. 执行修复
RMAN> restore database;
RMAN> recover database;
$ dbua
4.3 DBUA升级优化
优化DBUA升级配置的最佳实践:
4.3.1 优化DBUA升级管理
SQL> create or replace procedure manage_dbua_results(
p_upgrade_date in date,
p_source_version in varchar2,
p_target_version in varchar2,
p_upgrade_status in varchar2
) as
begin
dbms_output.put_line(‘— DBUA Results Management —‘);
dbms_output.put_line(‘Upgrade Date: ‘ || to_char(p_upgrade_date, ‘YYYY-MM-DD HH24:MI:SS’));
dbms_output.put_line(‘Source Version: ‘ || p_source_version);
dbms_output.put_line(‘Target Version: ‘ || p_target_version);
dbms_output.put_line(‘Upgrade Status: ‘ || p_upgrade_status);
— 可以扩展为记录到表中
end manage_dbua_results;
/
Procedure created.
# 2. 执行管理存储过程
SQL> set serveroutput on
SQL> exec manage_dbua_results(sysdate, ‘12.2.0.1’, ‘19.3.0.0’, ‘SUCCESS’);
— DBUA Results Management —
Upgrade Date: 2026-03-31 10:00:00
Source Version: 12.2.0.1
Target Version: 19.3.0.0
Upgrade Status: SUCCESS
PL/SQL procedure successfully completed.
# 3. 创建DBUA升级历史表
SQL> create table dbua_history (
id number primary key,
upgrade_date date,
source_version varchar2(50),
target_version varchar2(50),
upgrade_status varchar2(50),
upgrade_duration number,
notes varchar2(4000)
);
Table created.
SQL> create sequence dbua_history_seq;
Sequence created.
# 4. 记录升级历史
SQL> insert into dbua_history values (
dbua_history_seq.nextval,
sysdate,
‘12.2.0.1’,
‘19.3.0.0’,
‘SUCCESS’,
120,
‘DBUA upgrade from 12.2 to 19c’
);
1 row created.
SQL> commit;
Commit complete.
# 5. 查看升级历史趋势
SQL> column upgrade_date format a20
SQL> select upgrade_date, source_version, target_version, upgrade_status
from dbua_history
order by upgrade_date desc
fetch first 12 rows only;
UPGRADE_DATE SOURCE_VERSION TARGET_VERSION UPGRADE_STATUS
——————– ————– ————– —————
2026-03-31 10:00:00 12.2.0.1 19.3.0.0 SUCCESS
2026-03-30 10:00:00 12.1.0.2 19.3.0.0 SUCCESS
2026-03-29 10:00:00 11.2.0.4 19.3.0.0 SUCCESS
Part05-风哥经验总结与分享
5.1 DBUA升级总结
Oracle DBUA是推荐的升级方式,具有以下特点:
- 图形化界面:提供图形化操作界面
- 自动检查:自动执行预升级检查
- 自动升级:自动执行升级过程
- 自动验证:自动验证升级结果
- 回滚支持:支持升级回滚
5.2 DBUA升级检查清单
Oracle DBUA升级检查清单:
- 充分测试:在测试环境中充分测试
- 备份数据:升级前备份数据
- 文档记录:记录升级过程
- 回滚方案:制定回滚方案
- 经验总结:总结升级经验
- 定期检查:定期检查升级状态
5.3 DBUA升级工具推荐
Oracle DBUA升级工具推荐:
- DBUA:数据库升级助手
- preupgrd.sql:预升级检查工具
- RMAN:备份恢复工具
- Data Pump:数据迁移工具
- Shell脚本:自动化升级过程
本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html
