本文档风哥主要介绍Oracle数据库升级相关知识,包括数据库升级的概念、方法、工具、执行等内容,由风哥教程参考Oracle官方文档数据库升级内容编写,适合DBA人员在学习和测试中使用,如果要应用于生产环境则需要自行确认。更多视频教程www.fgedu.net.cn
Part01-基础概念与理论知识
1.1 数据库升级概念
Oracle数据库升级是指将Oracle数据库从一个版本升级到更高版本的过程。升级可以获得新功能、性能改进、安全增强等好处。学习交流加群风哥微信: itpux-com
- 直接升级:从旧版本直接升级到新版本
- 间接升级:通过中间版本升级
- 迁移升级:使用迁移方式升级
- 原地升级:在原服务器上升级
- 新服务器升级:在新服务器上升级
1.2 数据库升级组件
数据库升级的主要组件:
- 升级前检查:检查升级兼容性
- 升级工具:执行升级的工具
- 升级脚本:升级执行的脚本
- 升级后任务:升级后的任务
- 回滚方案:升级失败的回滚
1.3 数据库升级功能
数据库升级的主要功能:
- 版本升级:升级数据库版本
- 数据字典升级:升级数据字典
- 组件升级:升级数据库组件
- 参数调整:调整数据库参数
- 功能启用:启用新功能
Part02-生产环境规划与建议
2.1 数据库升级规划
数据库升级规划要点:
– 版本评估:确定升级目标版本
– 兼容性评估:评估兼容性问题
– 功能评估:评估新功能
– 风险评估:评估升级风险
# 升级方法规划
– 直接升级:使用DBUA或手动升级
– 迁移升级:使用Data Pump迁移
– 新服务器升级:在新服务器上升级
# 升级时间规划
– 升级窗口:确定升级时间窗口
– 升级步骤:制定升级步骤
– 回滚方案:制定回滚方案
2.2 数据库升级设计原则
数据库升级设计原则:
- 安全第一:确保数据安全
- 充分测试:充分测试升级
- 最小停机:最小化停机时间
- 可回滚:可回滚升级
- 文档化:完善文档记录
2.3 数据库升级策略
数据库升级策略:
- 原地升级策略:在原服务器上升级
- 新服务器升级策略:在新服务器上升级
- 滚动升级策略:滚动升级RAC
- 蓝绿升级策略:蓝绿部署升级
Part03-生产环境项目实施方案
3.1 数据库升级方法
3.1.1 使用DBUA升级
# 1. 安装新版本Oracle软件
# 在新目录安装Oracle 19c
# 2. 启动DBUA
$ cd /oracle/app/oracle/product/19.0.0/dbhome_1/bin
$ ./dbua
# 3. 选择要升级的数据库
# – 选择数据库:fgedudb
# 4. 升级前检查
# – 检查兼容性问题
# – 检查空间要求
# – 检查参数设置
# 5. 配置升级选项
# – 升级时区:是
# – 升级空间:是
# – 并行度:4
# 6. 配置恢复选项
# – 创建恢复点:是
# – 恢复点名称:PRE_UPGRADE
# 7. 执行升级
# – 点击”完成”
# – 等待升级完成
# 8. 升级后验证
# – 检查数据库状态
# – 检查组件状态
# – 检查无效对象
3.1.2 手动升级
# 1. 安装新版本Oracle软件
$ unzip LINUX.X64_193000_db_home.zip -d /oracle/app/oracle/product/19.0.0/dbhome_1
# 2. 执行升级前检查
SQL> @/oracle/app/oracle/product/19.0.0/dbhome_1/rdbms/admin/preupgrade.jar
# 3. 执行升级前建议
SQL> @/oracle/app/oracle/cfgtoollogs/fgedudb/preupgrade/preupgrade_fixups.sql
# 4. 关闭数据库
SQL> SHUTDOWN IMMEDIATE;
# 5. 备份数据库
$ rman target /
RMAN> BACKUP DATABASE PLUS ARCHIVELOG;
# 6. 修改环境变量
$ export ORACLE_HOME=/oracle/app/oracle/product/19.0.0/dbhome_1
$ export PATH=$ORACLE_HOME/bin:$PATH
# 7. 启动数据库到升级模式
$ sqlplus / as sysdba
SQL> STARTUP UPGRADE;
# 8. 执行升级脚本
SQL> @?/rdbms/admin/catupgrd.sql
# 9. 执行升级后脚本
SQL> @?/rdbms/admin/utlu122s.sql
SQL> @?/rdbms/admin/catuppst.sql
SQL> @?/rdbms/admin/utlrp.sql
# 10. 验证升级
SQL> SELECT * FROM dba_registry;
SQL> SELECT * FROM v$version;
3.2 数据库升级工具
3.2.1 升级前检查工具
# 1. 生成升级前检查报告
$ java -jar $ORACLE_HOME/rdbms/admin/preupgrade.jar FILE TEXT
# 2. 查看检查报告
$ cat /oracle/app/oracle/cfgtoollogs/fgedudb/preupgrade/preupgrade.log
# 3. 执行升级前修复
SQL> @/oracle/app/oracle/cfgtoollogs/fgedudb/preupgrade/preupgrade_fixups.sql
# 示例输出:
======================================================================
DATABASE NAME: fgedudb
DATABASE VERSION: 11.2.0.4.0
NEW VERSION: 19.0.0.0.0
WARNING: –> Database contains schemas with objects that have
outstanding direct privileges.
WARNING: –> Enterprise Manager is contained in the database.
WARNING: –> Timezone version is not the most recent version.
INFORMATION: –> There are existing Oracle components that will NOT be
upgraded by the upgrade script.
RECOMMENDATIONS:
1. Update statistics before upgrade.
2. Purge DBA_RECYCLEBIN before upgrade.
3. Back up the database before upgrade.
3.2.2 升级后验证工具
# 1. 检查数据库版本
SQL> SELECT * FROM v$version;
BANNER
———————————————————————-
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0
# 2. 检查组件状态
SQL> SELECT comp_name, version, status FROM dba_registry;
COMP_NAME VERSION STATUS
———————————– ———– ———
Oracle Database Catalog Views 19.0.0.0.0 VALID
Oracle Database Packages and Types 19.0.0.0.0 VALID
JServer JAVA Virtual Machine 19.0.0.0.0 VALID
Oracle XDK 19.0.0.0.0 VALID
# 3. 检查无效对象
SQL> SELECT count(*) FROM dba_objects WHERE status = ‘INVALID’;
COUNT(*)
———-
0
# 4. 编译无效对象
SQL> @?/rdbms/admin/utlrp.sql
# 5. 检查时区版本
SQL> SELECT * FROM v$timezone_file;
FILENAME VERSION
——————– ———-
timezlrg_32.dat 32
# 6. 检查兼容性参数
SQL> SHOW PARAMETER compatible
NAME TYPE VALUE
———————————— ———– ———-
compatible string 19.0.0
3.3 数据库升级执行
3.3.1 升级执行步骤
# 1. 升级前准备
– 备份数据库
– 执行升级前检查
– 执行升级前修复
– 通知相关人员
# 2. 执行升级
– 停止应用访问
– 关闭数据库
– 执行升级
– 启动数据库
# 3. 升级后验证
– 检查数据库状态
– 检查组件状态
– 检查无效对象
– 检查应用功能
# 4. 应用切换
– 更新应用连接
– 启动应用访问
– 监控应用运行
# 5. 升级后清理
– 清理临时文件
– 更新文档
– 总结经验
Part04-生产案例与实战讲解
4.1 数据库升级常见问题
4.1.1 升级失败
# 分析步骤:
# 1. 检查升级日志
$ cat $ORACLE_BASE/cfgtoollogs/fgedudb/upgrade/upg_summary.log
# 2. 检查数据库状态
SQL> SELECT status FROM v$instance;
STATUS
————
OPEN MIGRATE
# 3. 检查升级错误
SQL> SELECT * FROM registry$error;
# 4. 解决方案
# 修复升级错误
SQL> @?/rdbms/admin/catupgrd.sql
# 或回滚升级
SQL> SHUTDOWN IMMEDIATE;
$ rman target /
RMAN> RESTORE DATABASE FROM TAG ‘PRE_UPGRADE’;
RMAN> RECOVER DATABASE;
SQL> ALTER DATABASE OPEN;
4.2 数据库升级故障排除
# 分析步骤:
# 1. 检查组件状态
SQL> SELECT comp_name, status FROM dba_registry WHERE status != ‘VALID’;
COMP_NAME STATUS
———————————– ———
Oracle Database Catalog Views INVALID
# 2. 检查组件错误
SQL> SELECT * FROM registry$error;
# 3. 重新编译组件
SQL> EXEC DBMS_REGISTRY_SYS.VALIDATE_CATPROC;
# 4. 重新编译无效对象
SQL> @?/rdbms/admin/utlrp.sql
# 5. 验证组件状态
SQL> SELECT comp_name, status FROM dba_registry;
4.3 数据库升级优化方案
数据库升级优化方案:
- 并行升级:使用并行加速升级
- 预编译:预编译PL/SQL
- 空间优化:优化空间使用
- 时区升级:升级时区数据
- 统计信息:更新统计信息
Part05-风哥经验总结与分享
5.1 数据库升级最佳实践
数据库升级最佳实践:
- 充分规划:升级前充分规划
- 充分测试:升级前充分测试
- 备份数据:升级前备份数据
- 验证数据:升级后验证数据
- 文档记录:完善文档记录
- 回滚方案:准备回滚方案
5.2 数据库升级检查清单
– [ ] 升级计划已制定
– [ ] 数据库已备份
– [ ] 升级前检查已完成
– [ ] 升级前修复已执行
– [ ] 升级已执行
– [ ] 升级后验证已完成
– [ ] 无效对象已编译
– [ ] 应用已测试
– [ ] 文档已更新
# 数据库升级问题处理流程
1. 发现升级问题
2. 收集升级相关信息
3. 分析升级问题原因
4. 制定处理方案
5. 执行处理方案
6. 验证问题解决
7. 总结经验,优化预防措施
5.3 数据库升级工具推荐
数据库升级常用工具:
- DBUA:数据库升级助手
- Pre-Upgrade Tool:升级前检查工具
- catupgrd.sql:手动升级脚本
- utlrp.sql:编译无效对象
- Data Pump:迁移升级
本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html
