外观
DM 升级流程
升级类型
1. 小版本升级
定义:在同一主版本内进行的升级,如从 DM 8.1.1.100 升级到 DM 8.1.1.200。
特点:
- 升级风险相对较低
- 通常只需要应用补丁或执行小版本升级脚本
- 升级时间较短,对业务影响小
适用场景:
- 获取最新的 bug 修复和性能改进
- 满足安全合规要求
- 无需重大功能变更的场景
2. 大版本升级
定义:跨主版本的升级,如从 DM 7 升级到 DM 8。
特点:
- 升级风险相对较高
- 需要执行完整的升级流程
- 可能涉及数据结构变化和兼容性问题
- 升级时间较长,对业务影响较大
适用场景:
- 获取新功能和重大性能改进
- 原版本不再支持或维护
- 业务需求需要新功能支持
升级准备
1. 升级规划
操作说明:
- 制定详细的升级计划,包括升级目标、范围、时间、人员、风险评估等
- 确定升级方式和路径
- 制定回滚计划,确保在升级失败时能够快速恢复
升级计划内容:
- 升级目标版本和升级路径
- 升级时间窗口,避开业务高峰期
- 升级人员分工和职责
- 升级步骤和操作流程
- 风险评估和应对措施
- 回滚计划和操作步骤
- 测试和验证计划
2. 环境准备
操作说明:
- 准备升级所需的硬件和软件环境
- 下载并验证升级包的完整性
- 配置升级环境,确保满足升级要求
硬件要求:
- 服务器配置应满足目标版本的最低要求
- 足够的磁盘空间用于备份和升级操作
- 稳定的网络连接
软件要求:
- 目标版本的 DM 数据库安装包
- 升级工具和脚本
- 操作系统和依赖库满足目标版本要求
- 备份工具和存储空间
升级包验证:
bash
# 验证升级包的完整性
md5sum dm8_20230101_x86_rh7_64.iso
# 比较输出的 MD5 值与官方发布的 MD5 值是否一致3. 数据备份
操作说明:
- 在升级前,对数据库进行完整备份
- 备份内容包括数据文件、日志文件、配置文件等
- 备份数据应存储在安全可靠的位置
备份方法:
- 使用 DM 提供的备份工具(如 DMRMAN)进行备份
- 执行全量备份和日志备份
- 验证备份数据的完整性和可用性
备份命令示例:
bash
# 使用 DMRMAN 执行全量备份
./dmrman CTLSTMT="BACKUP DATABASE '/dm/data/DAMENG/dm.ini' FULL TO 'upgrade_backup' BACKUPSET '/dm/backup/upgrade_backup'"
# 执行日志备份
./dmrman CTLSTMT="BACKUP LOG FROM DATABASE '/dm/data/DAMENG/dm.ini' TO 'upgrade_log_backup' BACKUPSET '/dm/backup/upgrade_log_backup'"
# 备份配置文件
cp /dm/data/DAMENG/dm.ini /dm/backup/
dcp /dm/data/DAMENG/dmmal.ini /dm/backup/
dcp /dm/data/DAMENG/dmarch.ini /dm/backup/4. 升级前检查
操作说明:
- 在升级前,执行升级前检查,确保数据库环境满足升级要求
- 检查内容包括数据库状态、数据完整性、配置参数等
- 解决检查中发现的问题,确保升级顺利进行
检查内容:
- 数据库实例状态是否正常
- 数据是否完整,有无损坏
- 配置参数是否符合升级要求
- 系统资源是否充足
- 依赖组件是否满足要求
检查命令示例:
sql
-- 检查数据库实例状态
SELECT INSTANCE_NAME, STATUS$ FROM V$INSTANCE;
-- 检查数据完整性
DBMS_DATABASE_CHECKSUM();
-- 检查数据库版本
SELECT * FROM V$VERSION;
-- 检查无效对象
SELECT OWNER, OBJECT_NAME, OBJECT_TYPE FROM DBA_OBJECTS WHERE STATUS = 'INVALID';升级实施步骤
1. 停止数据库服务
操作说明:
- 在升级前,停止数据库服务和相关进程
- 确保所有用户连接已断开
- 停止所有依赖于数据库的应用程序
停止命令示例:
bash
# 停止数据库服务
./DmServiceDMSERVER stop
# 停止监听服务
./DmAPService stop
# 停止其他相关服务(如 DMASM、DMDataWatch 等)
./DmServiceDMASM stop2. 执行升级操作
操作说明:
- 根据升级类型和版本,选择合适的升级方式
- 严格按照升级脚本和操作手册执行升级
- 记录升级过程中的日志和输出
升级方式:
小版本升级
补丁升级:
bash
# 使用 dmrpm 工具应用补丁
./dmrpm -i dm8_20230101_patch.iso脚本升级:
bash
# 执行小版本升级脚本
./dmupgradectl update db /dm/data/DAMENG大版本升级
1. 安装目标版本:
bash
# 安装目标版本的 DM 数据库
./DMInstall.bin -i2. 执行升级工具:
bash
# 使用 dmu 工具执行大版本升级
./dmu -type db -db-type dm7 -src-path /dm7/data/DAMENG -dst-path /dm8/data/DAMENG -src-log /dm7/data/DAMENG/arch -dst-log /dm8/data/DAMENG/arch3. 执行升级脚本:
bash
# 执行大版本升级脚本
./dmupgradectl update db /dm8/data/DAMENG3. 启动数据库服务
操作说明:
- 升级完成后,启动数据库服务和相关进程
- 检查数据库实例状态,确保启动正常
启动命令示例:
bash
# 启动数据库服务
./DmServiceDMSERVER start
# 启动监听服务
./DmAPService start
# 启动其他相关服务
./DmServiceDMASM start4. 升级后检查
操作说明:
- 升级完成后,执行升级后检查,确保数据库升级成功
- 检查内容包括数据库状态、版本信息、数据完整性等
- 解决检查中发现的问题
检查内容:
- 数据库实例状态是否正常
- 数据库版本是否已升级到目标版本
- 数据是否完整,有无损坏
- 无效对象是否已重新编译
- 配置参数是否需要调整
检查命令示例:
sql
-- 检查数据库实例状态
SELECT INSTANCE_NAME, STATUS$ FROM V$INSTANCE;
-- 检查数据库版本
SELECT * FROM V$VERSION;
-- 检查数据完整性
DBMS_DATABASE_CHECKSUM();
-- 重新编译无效对象
EXEC DBMS_UTILITY.COMPILE_SCHEMA('SYSDBA');
-- 检查无效对象
SELECT OWNER, OBJECT_NAME, OBJECT_TYPE FROM DBA_OBJECTS WHERE STATUS = 'INVALID';升级验证
1. 功能验证
操作说明:
- 验证数据库的基本功能是否正常
- 验证业务功能是否正常运行
- 验证新功能是否可用
验证内容:
- 数据库连接和基本操作
- SQL 语句执行
- 存储过程和函数执行
- 触发器和约束
- 业务应用功能
- 新功能验证
验证方法:
- 使用 DM 管理工具执行基本操作
- 运行业务应用程序,验证功能正确性
- 执行新功能相关的测试用例
2. 性能验证
操作说明:
- 验证数据库性能是否符合预期
- 比较升级前后的性能指标
- 识别和解决性能问题
验证内容:
- 响应时间
- 吞吐量
- CPU 和内存使用率
- IO 性能
- 并发处理能力
验证方法:
- 执行性能测试脚本
- 监控系统性能指标
- 比较升级前后的 AWR 报告
- 使用性能诊断工具进行分析
3. 兼容性验证
操作说明:
- 验证数据库与应用程序的兼容性
- 验证数据库与第三方工具的兼容性
- 识别和解决兼容性问题
验证内容:
- 应用程序连接和操作
- SQL 语法兼容性
- 存储过程和函数兼容性
- 第三方工具连接和操作
验证方法:
- 运行应用程序,验证兼容性
- 执行应用程序相关的 SQL 语句
- 测试第三方工具的连接和操作
升级回滚
操作说明:
- 当升级过程中出现严重问题时,执行回滚操作
- 按照回滚计划逐步恢复系统状态
- 回滚后,验证系统是否恢复正常
- 记录回滚原因和过程,编写回滚报告
回滚触发条件:
- 升级过程中出现无法解决的错误
- 升级后数据库无法正常启动
- 升级后数据损坏或丢失
- 升级后业务功能异常
- 升级后性能严重下降
回滚步骤:
1. 停止数据库服务
bash
# 停止数据库服务和相关进程
./DmServiceDMSERVER stop
./DmAPService stop2. 恢复数据备份
bash
# 恢复数据文件和配置文件
cp -r /dm/backup/upgrade_backup/* /dm/data/DAMENG/
# 恢复日志文件
cp -r /dm/backup/upgrade_log_backup/* /dm/data/DAMENG/arch/3. 恢复数据库服务
bash
# 启动数据库服务和相关进程
./DmServiceDMSERVER start
./DmAPService start4. 验证回滚结果
sql
-- 检查数据库实例状态
SELECT INSTANCE_NAME, STATUS$ FROM V$INSTANCE;
-- 检查数据库版本
SELECT * FROM V$VERSION;
-- 验证业务功能
-- 执行业务应用程序,验证功能正确性升级后优化
1. 统计信息更新
操作说明:
- 升级后,更新数据库统计信息,确保查询优化器能够生成高效的执行计划
- 对所有表和索引收集统计信息
更新命令示例:
sql
-- 更新所有表的统计信息
EXEC DBMS_STATS.GATHER_DATABASE_STATS();
-- 更新特定表的统计信息
EXEC DBMS_STATS.GATHER_TABLE_STATS('SYSDBA', 'TABLE_NAME');
-- 更新特定索引的统计信息
EXEC DBMS_STATS.GATHER_INDEX_STATS('SYSDBA', 'INDEX_NAME');2. 配置参数调整
操作说明:
- 根据目标版本的要求和最佳实践,调整数据库配置参数
- 优化内存、CPU、IO 等资源的使用
- 启用新功能相关的参数
关键参数调整:
- 内存参数(如 MEMORY_POOL、BUFFER)
- 并发参数(如 MAX_SESSIONS、THREAD_POOL_SIZE)
- IO 参数(如 IO_THR_GRP_SIZE、IO_THR_NUM)
- 新功能相关参数
3. 无效对象处理
操作说明:
- 重新编译升级过程中产生的无效对象
- 确保所有对象状态正常
处理命令示例:
sql
-- 重新编译所有无效对象
EXEC DBMS_UTILITY.COMPILE_SCHEMA('SYSDBA');
-- 检查无效对象
SELECT OWNER, OBJECT_NAME, OBJECT_TYPE FROM DBA_OBJECTS WHERE STATUS = 'INVALID';4. 应用程序适配
操作说明:
- 根据目标版本的变化,调整应用程序
- 解决兼容性问题
- 优化应用程序,充分利用新功能
适配内容:
- SQL 语法调整
- 存储过程和函数修改
- 连接配置调整
- 新功能集成
升级最佳实践
1. 充分测试
- 在测试环境中模拟升级过程,验证升级方案的可行性
- 测试升级过程中的各种场景,包括正常升级、异常处理和回滚
- 测试升级后的功能、性能和兼容性
2. 制定详细计划
- 制定详细的升级计划,包括升级步骤、时间、人员、风险评估等
- 确保所有升级人员了解自己的职责和操作流程
- 制定回滚计划,确保在升级失败时能够快速恢复
3. 备份数据
- 在升级前,对数据库进行完整备份
- 备份所有重要的数据和配置文件
- 验证备份数据的完整性和可用性
- 将备份存储在安全可靠的位置
4. 选择合适的升级时间
- 选择业务低峰期进行升级,减少对业务的影响
- 确保升级时间窗口足够,能够完成升级和验证
- 提前通知相关业务部门和用户
5. 监控升级过程
- 在升级过程中,密切监控系统状态和资源使用情况
- 记录升级过程中的日志和输出
- 及时处理升级过程中出现的问题
6. 验证升级结果
- 升级完成后,进行全面的测试和验证
- 验证数据库的功能、性能和兼容性
- 确保业务应用程序能够正常运行
7. 文档记录
- 详细记录升级过程中的所有操作和事件
- 记录升级前后的配置和版本信息
- 编写升级总结报告,包括升级结果、问题和经验教训
升级的版本差异
| 升级类型 | 升级特点 | 注意事项 |
|---|---|---|
| DM 7 到 DM 8 | 大版本升级,涉及数据结构和功能变化 | 需要使用 dmu 工具进行升级,注意兼容性问题 |
| DM 8 小版本升级 | 同一主版本内升级,风险较低 | 注意补丁的适用版本和顺序 |
| DM 8.1 升级 | 增强了并行处理和分布式功能 | 注意新功能的配置和使用 |
常见问题(FAQ)
Q1: 升级需要多长时间?
A1: 升级时间取决于数据库大小、升级类型、硬件配置等因素。小版本升级通常需要几分钟到几小时,大版本升级可能需要几小时到几天。在升级前,应根据实际情况进行评估,预留足够的升级时间窗口。
Q2: 升级过程中数据库无法启动怎么办?
A2: 如果升级过程中数据库无法启动,应采取以下措施:
- 查看数据库日志,分析无法启动的原因
- 尝试使用救援模式启动数据库
- 如果无法解决,执行回滚操作,恢复到升级前的状态
- 联系达梦技术支持,寻求帮助
Q3: 升级后性能下降怎么办?
A3: 升级后性能下降,应采取以下措施:
- 更新统计信息,确保查询优化器能够生成高效的执行计划
- 调整数据库配置参数,优化资源使用
- 分析 SQL 执行计划,优化低效查询
- 检查系统资源使用情况,确保资源充足
- 联系达梦技术支持,寻求性能优化建议
Q4: 如何处理升级过程中的兼容性问题?
A4: 处理升级过程中的兼容性问题,应采取以下措施:
- 在升级前,使用兼容性检查工具检查潜在的兼容性问题
- 针对发现的问题,修改应用程序或 SQL 语句
- 升级后,测试应用程序的兼容性,及时解决发现的问题
- 利用数据库提供的兼容性模式,暂时兼容旧版本的语法和行为
Q5: 升级后需要做哪些后续工作?
A5: 升级后需要做以下后续工作:
- 更新统计信息
- 调整配置参数
- 重新编译无效对象
- 测试和验证功能、性能和兼容性
- 更新应用程序,适配新功能
- 编写升级总结报告
- 对相关人员进行培训,了解新功能和变化
在升级过程中,应密切关注系统状态,及时处理出现的问题,并做好回滚准备,确保在升级失败时能够快速恢复。升级完成后,还需要进行后续的优化和维护工作,确保数据库系统的稳定运行和性能优化。
