1. 首页 > 国产数据库教程 > 达梦DM教程 > 正文

DM教程FG090-达梦数据库升级与补丁管理

本文档详细介绍DM数据库升级与补丁管理的方法和技巧,包括升级概念、升级类型、升级的重要性、升级规划、补丁管理、升级最佳实践、升级实施、补丁实施、升级维护等内容,风哥教程参考DM官方文档《DM8升级指南》手册,适合DBA人员进行DM数据库的升级和补丁管理工作。

Part01-基础概念与理论知识

1.1 DM数据库升级概念

DM数据库升级是指将数据库从旧版本升级到新版本的过程。升级包括软件升级、数据升级、配置升级等多个方面,是数据库管理中的重要工作。

升级的目标:

  • 功能增强:获得新版本的新功能
  • 性能提升:获得更好的性能
  • 安全加固:获得更好的安全性
  • 问题修复:修复已知问题

1.2 DM数据库升级类型

DM数据库升级类型:

# 升级类型
#
# 1. 小版本升级
– 定义:在同一大版本内的小版本升级
– 示例:DM8.1.1到DM8.1.2
– 优势:升级相对简单,风险较低
– 劣势:功能变化较小
– 适用场景:常规升级
#
# 2. 大版本升级
– 定义:跨大版本的升级
– 示例:DM7到DM8
– 优势:获得新版本的新功能
– 劣势:升级复杂,风险较高
– 适用场景:需要新功能时
#
# 3. 补丁升级
– 定义:应用补丁包的升级
– 示例:DM8.1.1补丁1到补丁2
– 优势:修复特定问题,风险较低
– 劣势:功能变化较小
– 适用场景:修复已知问题
#
# 4. 紧急补丁
– 定义:紧急修复严重问题的补丁
– 示例:安全漏洞修复补丁
– 优势:快速修复严重问题
– 劣势:可能未经充分测试
– 适用场景:紧急情况
#
# 5. 滚动升级
– 定义:在不停止服务的情况下升级
– 示例:集群环境下的滚动升级
– 优势:业务连续性不受影响
– 劣势:升级过程复杂
– 适用场景:高可用环境

1.3 DM数据库升级的重要性

风哥提示:

DM数据库升级的重要性:

  1. 功能增强:获得新版本的新功能,满足业务发展需求
  2. 性能提升:获得更好的性能,提高系统效率
  3. 安全加固:获得更好的安全性,保护数据安全
  4. 问题修复:修复已知问题,提高系统稳定性
  5. 技术支持:获得更好的技术支持
  6. 合规要求:满足行业和法规的合规性要求
  7. 成本优化:通过升级优化成本
  8. 竞争力:保持技术竞争力
风哥提示:数据库升级是数据库管理中的重要工作,通过合理的升级策略,可以获得新版本的新功能和性能提升,提高系统的稳定性和安全性。

Part02-生产环境规划与建议

2.1 DM数据库升级规划

生产环境DM数据库升级规划:

# 升级规划
#
# 1. 升级需求分析
– 业务需求:根据业务特点确定升级需求
– 技术需求:根据技术要求确定升级方案
– 时间要求:确定升级的时间窗口
– 成本预算:确定升级的预算
#
# 2. 升级目标设定
– 功能目标:确定升级后的功能目标
– 性能目标:确定升级后的性能目标
– 安全目标:确定升级后的安全目标
– 稳定性目标:确定升级后的稳定性目标
#
# 3. 升级方案选择 学习交流加群风哥微信: itpux-com
– 小版本升级:在同一大版本内升级
– 大版本升级:跨大版本升级
– 补丁升级:应用补丁包
– 滚动升级:在不停止服务的情况下升级
#
# 4. 升级技术选型
– 原地升级:在原服务器上升级
– 迁移升级:迁移到新服务器上升级
– 集群升级:集群环境下的升级
– 混合升级:结合多种升级方式
#
# 5. 升级资源规划
– 硬件资源:服务器、存储、网络等
– 软件资源:数据库软件、升级工具等
– 人力资源:升级实施和维护人员
– 时间资源:升级实施和测试时间
#
# 6. 升级流程设计
– 升级准备:准备升级环境和数据
– 升级实施:执行升级操作
– 升级测试:测试升级结果
– 升级切换:切换到新版本
– 升级验证:验证升级结果
#
# 7. 升级风险控制
– 风险识别:识别升级过程中的风险
– 风险评估:评估风险的影响和可能性
– 风险应对:制定风险应对措施
– 应急预案:制定应急预案
#
# 8. 升级文档与培训
– 升级文档:升级方案、操作手册等
– 人员培训:对相关人员进行培训
– 演练计划:定期进行升级演练

2.2 DM数据库补丁管理

DM数据库补丁管理:

补丁管理流程:

  • 补丁评估:评估补丁的必要性和风险
  • 补丁测试:在测试环境测试补丁
  • 补丁部署:在生产环境部署补丁
  • 补丁验证:验证补丁的效果

学习交流加群风哥QQ113257174

2.3 DM数据库升级最佳实践

DM数据库升级最佳实践:

# 升级最佳实践
#
# 1. 升级准备
– 详细评估:详细评估源版本和目标版本
– 数据备份:备份源数据库和目标数据库
– 环境准备:准备升级环境和工具
– 文档准备:准备升级文档
#
# 2. 升级实施
– 分步实施:采用分步实施的策略
– 数据验证:每步完成后验证数据
– 日志记录:详细记录升级过程
– 监控进度:实时监控升级进度
#
# 3. 升级测试
– 全面测试:全面测试升级结果
– 性能测试:测试升级后的性能
– 功能测试:测试升级后的功能
– 数据测试:测试数据的完整性
#
# 4. 升级切换
– 切换计划:制定详细的切换计划
– 切换演练:定期进行切换演练
– 切换验证:切换后进行验证
– 回滚准备:准备回滚方案
#
# 5. 升级验证
– 数据验证:验证数据的完整性
– 功能验证:验证功能的正确性
– 性能验证:验证性能的达标性
– 业务验证:验证业务的正常运行
#
# 6. 升级优化
– 性能优化:优化升级后的性能
– 参数优化:优化数据库参数
– 索引优化:优化数据库索引
– 查询优化:优化SQL查询
#
# 7. 升级维护
– 监控维护:监控升级后的数据库
– 问题处理:及时处理升级后的问题
– 性能调优:持续优化数据库性能
– 文档更新:更新升级文档 更多视频教程www.fgedu.net.cn
#
# 8. 升级管理
– 责任明确:明确升级管理的责任
– 流程规范:建立规范的升级管理流程
– 持续改进:根据实际情况持续改进
– 经验总结:总结升级管理的经验

Part03-生产环境项目实施方案

3.1 DM数据库升级实施

3.1.1 小版本升级

# 小版本升级
#
# 1. 环境准备
##
# 源版本环境
– 数据库:DM8.1.1
– 主机名:fgedu-db
– IP地址:192.168.1.100
– 操作系统:Oracle Linux 9.3
– 数据量:200GB
##
# 目标版本环境
– 数据库:DM8.1.2
– 主机名:fgedu-db
– IP地址:192.168.1.100
– 操作系统:Oracle Linux 9.3
– 安装路径:/dm/app
#
# 2. 升级评估
##
# 检查当前版本
$ disql SYSDBA/SYSDBA
SQL> select * from v$version;
BANNER
————————————————–
DM Database Server 8.1.1.126
##
# 检查系统资源
$ free -h
total used free shared buff/cache available
Mem: 64Gi 32Gi 20Gi 1.0Gi 12Gi 30Gi
Swap: 8.0Gi 0B 8.0Gi
$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 500G 200G 300G 40% /
/dev/sdb1 1.0T 200G 800G 20% /dm 更多学习教程公众号风哥教程itpux_com
#
# 3. 升级准备
##
# 备份数据库
$ /dm/app/bin/DmServicefgedudb stop
$ dexp SYSDBA/SYSDBA file=fgedu_backup.dmp log=fgedu_backup.log full=y
$ /dm/app/bin/DmServicefgedudb start
##
# 备份配置文件
$ cp -r /dm/app/conf /dm/app/conf.bak
$ cp -r /dm/fgdata /dm/fgdata.bak
##
# 下载升级包
$ cd /tmp
$ wget http://www.dameng.com/dm8/dm8_update_8.1.2.zip
$ unzip dm8_update_8.1.2.zip
#
# 4. 升级实施
##
# 停止数据库服务
$ /dm/app/bin/DmServicefgedudb stop
##
# 执行升级
$ cd /tmp/dm8_update_8.1.2
$ ./update.sh
# 图形界面操作:
# 步骤1:选择升级模式 – 选择”原地升级”
# 步骤2:选择安装路径 – 输入/dm/app
# 步骤3:确认升级信息 – 确认升级信息
# 步骤4:执行升级 – 点击”开始升级”
# 步骤5:等待升级完成 – 等待升级完成
# 步骤6:查看升级日志 – 查看升级日志
##
# 查看升级日志
$ tail -f /tmp/dm8_update_8.1.2/update.log
2025-04-09 10:00:00 [INFO] 开始升级DM数据库
2025-04-09 10:00:05 [INFO] 检查系统环境…
2025-04-09 10:00:10 [INFO] 系统环境检查通过 from DB视频:www.itpux.com
2025-04-09 10:00:15 [INFO] 备份当前版本…
2025-04-09 10:05:00 [INFO] 备份完成
2025-04-09 10:05:05 [INFO] 开始升级数据库软件…
2025-04-09 10:30:00 [INFO] 数据库软件升级完成
2025-04-09 10:30:05 [INFO] 开始升级数据库实例…
2025-04-09 10:45:00 [INFO] 数据库实例升级完成
2025-04-09 10:45:05 [INFO] 升级完成
##
# 启动数据库服务
$ /dm/app/bin/DmServicefgedudb start
#
# 5. 升级验证
##
# 检查版本信息
$ disql SYSDBA/SYSDBA
SQL> select * from v$version;
BANNER
————————————————–
DM Database Server 8.1.2.128
##
# 验证数据完整性
SQL> select count(*) from fgedu.t_user;
COUNT(*)
———-
500000
SQL> select count(*) from fgedu.t_order;
COUNT(*)
———-
2000000
##
# 验证功能正常
SQL> select * from fgedu.t_user where rownum <= 10; ID NAME ---------- ---------- 1 用户1 2 用户2 3 用户3 4 用户4 5 用户5 6 用户6 7 用户7 8 用户8 9 用户9 10 用户10 ## 6. 性能测试 ## # 测试查询性能 SQL> set timing on;
SQL> select * from fgedu.t_user where id = 100;
ID NAME
———- ———-
100 用户100
已用时间: 0.001(秒)
##
# 测试插入性能
SQL> insert into fgedu.t_user values (500001, ‘测试用户’);
影响行数: 1
已用时间: 0.001(秒)
SQL> commit;
操作已执行
已用时间: 0.001(秒)
#
# 7. 升级后优化
##
# 收集统计信息
SQL> sp_init_stats_sys(1);
SQL> dbms_stats.gather_schema_stats(‘FGEDU’);
##
# 重建索引
SQL> alter index fgedu.idx_user_id rebuild;
##
# 优化参数
SQL> alter system set ‘MAX_SESSIONS’ = 1000 scope=spfile;
SQL> alter system set ‘MAX_OS_MEMORY’ = 80 scope=spfile;
##
# 重启数据库
$ /dm/app/bin/DmServicefgedudb restart
#
# 8. 效果评估
##
# 升级效果
– 升级成功完成
– 数据完整无丢失
– 升级时间在预期范围内
##
# 性能效果
– 查询性能提升10%
– 插入性能提升8%
– 更新性能提升9%
– 删除性能提升8%
##
# 功能效果
– 新功能正常使用
– 旧功能正常运行
– 系统稳定性良好

3.1.2 大版本升级

# 大版本升级
#
# 1. 环境准备
##
# 源版本环境
– 数据库:DM7.1.6
– 主机名:fgedu-db-old
– IP地址:192.168.1.100
– 操作系统:Oracle Linux 9.3
– 数据量:500GB
##
# 目标版本环境
– 数据库:DM8.1.2
– 主机名:fgedu-db-new
– IP地址:192.168.1.200
– 操作系统:Oracle Linux 9.3
– 安装路径:/dm/app
#
# 2. 升级评估
##
# 检查当前版本
$ disql SYSDBA/SYSDBA
SQL> select * from v$version;
BANNER
————————————————–
DM Database Server 7.1.6.46
##
# 检查系统资源
$ free -h
total used free shared buff/cache available
Mem: 64Gi 32Gi 20Gi 1.0Gi 12Gi 30Gi
Swap: 8.0Gi 0B 8.0Gi
$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 500G 200G 300G 40% /
/dev/sdb1 1.0T 500G 500G 50% /dm
#
# 3. 升级准备
##
# 备份源数据库
$ /dm/app/bin/DmServicefgedudb stop
$ dexp SYSDBA/SYSDBA file=fgedu_backup.dmp log=fgedu_backup.log full=y
$ /dm/app/bin/DmServicefgedudb start
##
# 备份配置文件
$ cp -r /dm/app/conf /dm/app/conf.bak
$ cp -r /dm/fgdata /dm/fgdata.bak
##
# 安装新版本数据库
$ cd /tmp
$ wget http://www.dameng.com/dm8/dm8_setup.zip
$ unzip dm8_setup.zip
$ ./dm8_setup.sh
# 图形界面操作:
# 步骤1:选择安装语言 – 选择”简体中文”
# 步骤2:选择安装类型 – 选择”典型安装”
# 步骤3:选择安装路径 – 输入/dm/app
# 步骤4:确认安装信息 – 确认安装信息
# 步骤5:执行安装 – 点击”开始安装”
# 步骤6:等待安装完成 – 等待安装完成
#
# 4. 数据迁移
##
# 导出源数据库数据
$ dexp SYSDBA/SYSDBA file=fgedu_backup.dmp log=fgedu_backup.log full=y
##
# 传输备份文件
$ scp fgedu_backup.dmp fgedu@192.168.1.200:/tmp/
##
# 导入数据到新数据库
$ disql SYSDBA/SYSDBA << EOF start /tmp/fgedu_backup.dmp; EOF ## 5. 升级验证 ## # 检查版本信息 $ disql SYSDBA/SYSDBA SQL> select * from v$version;
BANNER
————————————————–
DM Database Server 8.1.2.128
##
# 验证数据完整性
SQL> select count(*) from fgedu.t_user;
COUNT(*)
———-
500000
SQL> select count(*) from fgedu.t_order;
COUNT(*)
———-
2000000
##
# 验证功能正常
SQL> select * from fgedu.t_user where rownum <= 10; ID NAME ---------- ---------- 1 用户1 2 用户2 3 用户3 4 用户4 5 用户5 6 用户6 7 用户7 8 用户8 9 用户9 10 用户10 ## 6. 性能测试 ## # 测试查询性能 SQL> set timing on;
SQL> select * from fgedu.t_user where id = 100;
ID NAME
———- ———-
100 用户100
已用时间: 0.001(秒)
##
# 测试插入性能
SQL> insert into fgedu.t_user values (500001, ‘测试用户’);
影响行数: 1
已用时间: 0.001(秒)
SQL> commit;
操作已执行
已用时间: 0.001(秒)
#
# 7. 应用切换
##
# 停止源数据库应用
$ /dm/app/bin/DmServicefgedudb stop
##
# 启动新数据库应用
$ /dm/app/bin/DmServicefgedudb start
##
# 验证应用连接
$ disql SYSDBA/SYSDBA
SQL> select * from v$sessions;
SESS_ID USER_NAME CLNT_IP STATE
———- ———- ———- ———-
1 SYSDBA 192.168.1.1 IDLE
2 fgedu 192.168.1.2 ACTIVE
#
# 8. 升级后优化
##
# 收集统计信息
SQL> sp_init_stats_sys(1);
SQL> dbms_stats.gather_schema_stats(‘FGEDU’);
##
# 重建索引
SQL> alter index fgedu.idx_user_id rebuild;
##
# 优化参数
SQL> alter system set ‘MAX_SESSIONS’ = 1000 scope=spfile;
SQL> alter system set ‘MAX_OS_MEMORY’ = 80 scope=spfile;
##
# 重启数据库
$ /dm/app/bin/DmServicefgedudb restart
#
# 9. 效果评估
##
# 升级效果
– 升级成功完成
– 数据完整无丢失
– 升级时间在预期范围内
##
# 性能效果
– 查询性能提升30%
– 插入性能提升25%
– 更新性能提升28%
– 删除性能提升25%
##
# 功能效果
– 新功能正常使用
– 旧功能正常运行
– 系统稳定性良好

3.2 DM数据库补丁实施

3.2.1 补丁评估

# 补丁评估
#
# 1. 补丁信息收集
##
# 查看当前版本
$ disql SYSDBA/SYSDBA
SQL> select * from v$version;
BANNER
————————————————–
DM Database Server 8.1.2.128
##
# 查看补丁信息
SQL> select * from v$patch;
PATCH_ID PATCH_NAME APPLY_TIME
———- ————— ——————-
1 DM8.1.2.128 2025-04-01 10:00:00
##
# 查看可用补丁
$ cd /tmp
$ wget http://www.dameng.com/dm8/patch_list.txt
$ cat patch_list.txt
补丁ID 补丁名称 补丁描述
———- ————— ——————-
2 DM8.1.2.129 修复安全漏洞
3 DM8.1.2.130 优化查询性能
4 DM8.1.2.131 修复已知问题
#
# 2. 补丁影响分析
##
# 分析补丁2(安全漏洞修复)
– 补丁类型:安全补丁
– 影响范围:所有用户
– 风险等级:高
– 建议操作:立即应用
##
# 分析补丁3(查询性能优化)
– 补丁类型:性能补丁
– 影响范围:查询性能
– 风险等级:低
– 建议操作:测试后应用
##
# 分析补丁4(已知问题修复)
– 补丁类型:问题修复补丁
– 影响范围:特定场景
– 风险等级:中
– 建议操作:测试后应用
#
# 3. 补丁测试计划
##
# 测试环境准备
– 测试数据库:DM8.1.2.128
– 测试数据:生产数据副本
– 测试场景:所有业务场景
##
# 测试用例设计
– 功能测试:测试所有功能
– 性能测试:测试性能变化
– 兼容性测试:测试兼容性
– 稳定性测试:测试稳定性
#
# 4. 补丁风险评估
##
# 风险识别
– 数据丢失风险:低
– 功能异常风险:低
– 性能下降风险:低
– 兼容性风险:低
##
# 风险评估
– 总体风险:低
– 可控性:高
– 应对措施:准备回滚方案
#
# 5. 补丁应用决策
##
# 决策依据
– 补丁必要性:高
– 风险可控性:高
– 业务影响:低
– 时间窗口:合适
##
# 决策结果
– 补丁2:立即应用
– 补丁3:测试后应用
– 补丁4:测试后应用

3.2.2 补丁部署

# 补丁部署
#
# 1. 补丁准备
##
# 下载补丁包
$ cd /tmp
$ wget http://www.dameng.com/dm8/patch_8.1.2.129.zip
$ unzip patch_8.1.2.129.zip
##
# 备份数据库
$ /dm/app/bin/DmServicefgedudb stop
$ dexp SYSDBA/SYSDBA file=fgedu_backup.dmp log=fgedu_backup.log full=y
$ /dm/app/bin/DmServicefgedudb start
##
# 备份配置文件
$ cp -r /dm/app/conf /dm/app/conf.bak
$ cp -r /dm/fgdata /dm/fgdata.bak
#
# 2. 补丁应用
##
# 停止数据库服务
$ /dm/app/bin/DmServicefgedudb stop
##
# 应用补丁
$ cd /tmp/patch_8.1.2.129
$ ./apply_patch.sh
# 图形界面操作:
# 步骤1:选择补丁文件 – 选择补丁文件
# 步骤2:确认补丁信息 – 确认补丁信息
# 步骤3:执行补丁应用 – 点击”开始应用”
# 步骤4:等待补丁应用完成 – 等待补丁应用完成
# 步骤5:查看补丁日志 – 查看补丁日志
##
# 查看补丁日志
$ tail -f /tmp/patch_8.1.2.129/patch.log
2025-04-09 10:00:00 [INFO] 开始应用补丁
2025-04-09 10:00:05 [INFO] 检查系统环境…
2025-04-09 10:00:10 [INFO] 系统环境检查通过
2025-04-09 10:00:15 [INFO] 备份当前版本…
2025-04-09 10:05:00 [INFO] 备份完成
2025-04-09 10:05:05 [INFO] 开始应用补丁…
2025-04-09 10:15:00 [INFO] 补丁应用完成
2025-04-09 10:15:05 [INFO] 补丁应用成功
##
# 启动数据库服务
$ /dm/app/bin/DmServicefgedudb start
#
# 3. 补丁验证
##
# 检查补丁信息
$ disql SYSDBA/SYSDBA
SQL> select * from v$patch;
PATCH_ID PATCH_NAME APPLY_TIME
———- ————— ——————-
1 DM8.1.2.128 2025-04-01 10:00:00
2 DM8.1.2.129 2025-04-09 10:15:00
##
# 验证数据完整性
SQL> select count(*) from fgedu.t_user;
COUNT(*)
———-
500000
SQL> select count(*) from fgedu.t_order;
COUNT(*)
———-
2000000
##
# 验证功能正常
SQL> select * from fgedu.t_user where rownum <= 10; ID NAME ---------- ---------- 1 用户1 2 用户2 3 用户3 4 用户4 5 用户5 6 用户6 7 用户7 8 用户8 9 用户9 10 用户10 ## 4. 性能测试 ## # 测试查询性能 SQL> set timing on;
SQL> select * from fgedu.t_user where id = 100;
ID NAME
———- ———-
100 用户100
已用时间: 0.001(秒)
##
# 测试插入性能
SQL> insert into fgedu.t_user values (500001, ‘测试用户’);
影响行数: 1
已用时间: 0.001(秒)
SQL> commit;
操作已执行
已用时间: 0.001(秒)
#
# 5. 安全测试
##
# 测试安全功能
SQL> — 测试安全漏洞修复
SQL> select * from fgedu.t_user where ‘1’=’1′;
ID NAME
———- ———-
##
# 验证安全加固
SQL> — 验证安全加固效果
SQL> select * from v$security;
PARAM_NAME PARAM_VALUE
——————– ————
AUDIT_ENABLE 1
PASSWORD_POLICY 1
SECURE_CONNECTION 1
#
# 6. 补丁后优化
##
# 收集统计信息
SQL> sp_init_stats_sys(1);
SQL> dbms_stats.gather_schema_stats(‘FGEDU’);
##
# 重建索引
SQL> alter index fgedu.idx_user_id rebuild;
##
# 优化参数
SQL> alter system set ‘MAX_SESSIONS’ = 1000 scope=spfile;
SQL> alter system set ‘MAX_OS_MEMORY’ = 80 scope=spfile;
##
# 重启数据库
$ /dm/app/bin/DmServicefgedudb restart
#
# 7. 效果评估
##
# 补丁效果
– 补丁应用成功
– 数据完整无丢失
– 补丁应用时间在预期范围内
##
# 安全效果
– 安全漏洞已修复
– 安全性得到提升
– 安全策略已加强
##
# 性能效果
– 查询性能无影响
– 插入性能无影响
– 系统稳定性良好

3.3 DM数据库升级维护

3.3.1 升级维护计划

# 升级维护计划
#
# 1. 日常维护
– 性能监控:监控数据库性能
– 空间监控:监控数据库空间使用
– 日志监控:监控数据库日志
– 应用监控:监控应用运行状态
#
# 2. 定期维护
– 性能优化:定期优化数据库性能
– 空间管理:定期管理数据库空间
– 统计信息更新:定期更新统计信息
– 索引重建:定期重建索引
#
# 3. 维护任务
##
# 性能维护
– 性能监控:监控数据库性能指标
– 性能分析:分析性能瓶颈
– 性能优化:优化数据库性能
– 性能报告:生成性能报告
##
# 空间维护
– 空间检查:检查数据库空间使用
– 空间清理:清理无用数据
– 空间扩展:扩展数据库空间
– 空间优化:优化空间使用
##
# 统计信息维护
– 统计信息收集:收集统计信息
– 统计信息分析:分析统计信息
– 统计信息更新:更新统计信息
– 统计信息优化:优化统计信息
##
# 索引维护
– 索引检查:检查索引状态
– 索引重建:重建索引
– 索引优化:优化索引
– 索引删除:删除无用索引
#
# 4. 维护工具
– 监控工具:监控数据库状态
– 性能工具:分析数据库性能
– 空间工具:管理数据库空间
– 统计工具:管理统计信息
#
# 5. 维护文档
– 维护计划:制定详细的维护计划
– 维护记录:记录维护过程和结果
– 问题记录:记录维护中发现的问题
– 改进措施:记录改进措施

3.3.2 升级维护执行

# 升级维护执行
#
# 1. 日常维护
##
# 性能监控
$ /dm/scripts/check_performance.sh
##
# 空间监控
$ /dm/scripts/check_space.sh
##
# 日志监控
$ tail -f /dm/app/log/dm_alert.log
##
# 应用监控
$ /dm/scripts/check_application.sh
#
# 2. 定期维护
##
# 性能优化
$ /dm/scripts/optimize_performance.sh
##
# 空间管理
$ /dm/scripts/manage_space.sh
##
# 统计信息更新
$ /dm/scripts/update_stats.sh
##
# 索引重建
$ /dm/scripts/rebuild_index.sh
#
# 3. 性能维护
##
# 性能监控
$ disql SYSDBA/SYSDBA
SQL> select * from v$sysstat where name like ‘%CPU%’;
SQL> select * from v$sysstat where name like ‘%IO%’;
##
# 性能分析
SQL> select * from v$sql order by elapsed_time desc;
##
# 性能优化
SQL> alter system set ‘MAX_SESSIONS’ = 1000 scope=spfile;
SQL> alter system set ‘MAX_OS_MEMORY’ = 80 scope=spfile;
##
# 性能报告
$ /dm/scripts/generate_performance_report.sh
#
# 4. 空间维护
##
# 空间检查
SQL> select tablespace_name, sum(bytes)/1024/1024/1024 size_gb from dba_data_files group by tablespace_name;
SQL> select tablespace_name, sum(bytes)/1024/1024/1024 free_gb from dba_free_space group by tablespace_name;
##
# 空间清理
SQL> truncate table fgedu.t_log;
##
# 空间扩展
SQL> alter tablespace fgedutbs add datafile ‘/dm/fgdata/fgedudb/fgedutbs02.dbf’ size 10G;
##
# 空间优化
SQL> alter table fgedu.t_user move tablespace fgedutbs;
#
# 5. 统计信息维护
##
# 统计信息收集
SQL> dbms_stats.gather_table_stats(‘SYSDBA’, ‘fgedu.t_user’);
##
# 统计信息分析
SQL> select * from user_tab_statistics where table_name = ‘T_USER’;
##
# 统计信息更新
SQL> dbms_stats.gather_schema_stats(‘SYSDBA’);
##
# 统计信息优化
SQL> dbms_stats.set_table_prefs(‘SYSDBA’, ‘fgedu.t_user’, ‘ESTIMATE_PERCENT’, 100);
#
# 6. 索引维护
##
# 索引检查
SQL> select * from user_indexes where table_name = ‘T_USER’;
##
# 索引重建
SQL> alter index fgedu.idx_user_id rebuild;
##
# 索引优化
SQL> alter index fgedu.idx_user_id rebuild online;
##
# 索引删除
SQL> drop index fgedu.idx_user_id_old;
#
# 7. 维护文档
##
# 维护计划
$ vi /dm/docs/maintenance_plan.md
##
# 维护记录
$ vi /dm/docs/maintenance_log.md
##
# 问题记录
$ vi /dm/docs/issue_log.md
##
# 改进措施
$ vi /dm/docs/improvement_plan.md

Part04-生产案例与实战讲解

4.1 DM数据库小版本升级案例

以下是一个小版本升级的案例:

#
# 小版本升级案例
##
# 场景描述
某企业需要将DM数据库从8.1.1升级到8.1.2,获得性能提升和问题修复。
##
# 实施步骤
# 1. 环境准备
#
# 源版本环境
– 数据库:DM8.1.1.126
– 主机名:fgedu-db
– IP地址:192.168.1.100
– 操作系统:Oracle Linux 9.3
– 数据量:200GB
– 表数量:500
#
# 目标版本环境
– 数据库:DM8.1.2.128
– 主机名:fgedu-db
– IP地址:192.168.1.100
– 操作系统:Oracle Linux 9.3
– 安装路径:/dm/app
# 2. 升级评估
#
# 检查当前版本
$ disql SYSDBA/SYSDBA
SQL> select * from v$version;
BANNER
————————————————–
DM Database Server 8.1.1.126
#
# 检查系统资源
$ free -h
total used free shared buff/cache available
Mem: 64Gi 32Gi 20Gi 1.0Gi 12Gi 30Gi
Swap: 8.0Gi 0B 8.0Gi
$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 500G 200G 300G 40% /
/dev/sdb1 1.0T 200G 800G 20% /dm
#
# 检查数据库状态
SQL> select status from v$instance;
STATUS
——-
OPEN
SQL> select count(*) from user_tables;
COUNT(*)
———-
500
# 3. 升级准备
#
# 备份数据库
#!/bin/bash
# backup_before_upgrade.sh
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: `http://www.fgedu.net.cn`
export DM_HOME=/dm/app
export PATH=$PATH:$DM_HOME/bin
DATE=$(date +%Y%m%d_%H%M%S)
BACKUP_DIR=/dm/backup
mkdir -p $BACKUP_DIR
/dm/app/bin/DmServicefgedudb stop
dexp SYSDBA/SYSDBA file=$BACKUP_DIR/fgedu_backup_$DATE.dmp log=$BACKUP_DIR/fgedu_backup_$DATE.log full=y
/dm/app/bin/DmServicefgedudb start
echo “备份完成:$BACKUP_DIR/fgedu_backup_$DATE.dmp”
#
# 执行备份
$ chmod +x backup_before_upgrade.sh
$ ./backup_before_upgrade.sh
备份完成:/dm/backup/fgedu_backup_20250409_100000.dmp
#
# 备份配置文件
$ cp -r /dm/app/conf /dm/app/conf.bak_20250409
$ cp -r /dm/fgdata /dm/fgdata.bak_20250409
#
# 下载升级包
$ cd /tmp
$ wget http://www.dameng.com/dm8/dm8_update_8.1.2.zip
$ unzip dm8_update_8.1.2.zip
# 4. 升级实施
#
# 停止数据库服务
$ /dm/app/bin/DmServicefgedudb stop
#
# 执行升级
$ cd /tmp/dm8_update_8.1.2
$ ./update.sh
# 图形界面操作:
# 步骤1:选择升级模式 – 选择”原地升级”
# 步骤2:选择安装路径 – 输入/dm/app
# 步骤3:确认升级信息 – 确认升级信息
# 步骤4:执行升级 – 点击”开始升级”
# 步骤5:等待升级完成 – 等待升级完成
# 步骤6:查看升级日志 – 查看升级日志
#
# 查看升级日志
$ tail -f /tmp/dm8_update_8.1.2/update.log
2025-04-09 10:00:00 [INFO] 开始升级DM数据库
2025-04-09 10:00:05 [INFO] 检查系统环境…
2025-04-09 10:00:10 [INFO] 系统环境检查通过
2025-04-09 10:00:15 [INFO] 备份当前版本…
2025-04-09 10:05:00 [INFO] 备份完成
2025-04-09 10:05:05 [INFO] 开始升级数据库软件…
2025-04-09 10:30:00 [INFO] 数据库软件升级完成
2025-04-09 10:30:05 [INFO] 开始升级数据库实例…
2025-04-09 10:45:00 [INFO] 数据库实例升级完成
2025-04-09 10:45:05 [INFO] 升级完成
#
# 启动数据库服务
$ /dm/app/bin/DmServicefgedudb start
# 5. 升级验证
#
# 检查版本信息
$ disql SYSDBA/SYSDBA
SQL> select * from v$version;
BANNER
————————————————–
DM Database Server 8.1.2.128
#
# 验证数据完整性
SQL> select count(*) from fgedu.t_user;
COUNT(*)
———-
500000
SQL> select count(*) from fgedu.t_order;
COUNT(*)
———-
2000000
#
# 验证功能正常
SQL> select * from fgedu.t_user where rownum <= 10; ID NAME ---------- ---------- 1 用户1 2 用户2 3 用户3 4 用户4 5 用户5 6 用户6 7 用户7 8 用户8 9 用户9 10 用户10 # 6. 性能测试 # # 测试查询性能 SQL> set timing on;
SQL> select * from fgedu.t_user where id = 100;
ID NAME
———- ———-
100 用户100
已用时间: 0.001(秒)
SQL> select * from fgedu.t_order where user_id = 100;
ID USER_ID AMOUNT
———- ———- ———-
2000 100 1000
已用时间: 0.003(秒)
#
# 测试插入性能
SQL> insert into fgedu.t_user values (500001, ‘测试用户’);
影响行数: 1
已用时间: 0.001(秒)
SQL> commit;
操作已执行
已用时间: 0.001(秒)
#
# 测试更新性能
SQL> update fgedu.t_user set name = ‘更新用户’ where id = 500001;
影响行数: 1
已用时间: 0.001(秒)
SQL> commit;
操作已执行
已用时间: 0.001(秒)
#
# 测试删除性能
SQL> delete from fgedu.t_user where id = 500001;
影响行数: 1
已用时间: 0.001(秒)
SQL> commit;
操作已执行
已用时间: 0.001(秒)
# 7. 升级后优化
#
# 收集统计信息
SQL> sp_init_stats_sys(1);
SQL> dbms_stats.gather_schema_stats(‘FGEDU’);
#
# 重建索引
SQL> select index_name, table_name from user_indexes where status = ‘UNUSABLE’;
SQL> alter index fgedu.idx_user_id rebuild;
SQL> alter index fgedu.idx_order_user_id rebuild;
#
# 优化参数
SQL> alter system set ‘MAX_SESSIONS’ = 1000 scope=spfile;
SQL> alter system set ‘MAX_OS_MEMORY’ = 80 scope=spfile;
SQL> alter system set ‘BUFFER’ = 10240 scope=spfile;
#
# 重启数据库
$ /dm/app/bin/DmServicefgedudb restart
# 8. 效果评估
#
# 升级效果
– 升级成功完成
– 数据完整无丢失
– 升级时间:45分钟
– 升级时间在预期范围内
#
# 性能效果
– 查询性能提升10%
– 插入性能提升8%
– 更新性能提升9%
– 删除性能提升8%
#
# 功能效果
– 新功能正常使用
– 旧功能正常运行
– 系统稳定性良好
– 用户体验良好

4.2 DM数据库大版本升级案例

以下是一个大版本升级的案例:

#
# 大版本升级案例
##
# 场景描述
某企业需要将DM数据库从DM7升级到DM8,获得新功能和性能提升。
##
# 实施步骤
# 1. 环境准备
#
# 源版本环境
– 数据库:DM7.1.6.46
– 主机名:fgedu-db-old
– IP地址:192.168.1.100
– 操作系统:Oracle Linux 9.3
– 数据量:500GB
– 表数量:1000
#
# 目标版本环境
– 数据库:DM8.1.2.128
– 主机名:fgedu-db-new
– IP地址:192.168.1.200
– 操作系统:Oracle Linux 9.3
– 安装路径:/dm/app
# 2. 升级评估
#
# 检查当前版本
$ disql SYSDBA/SYSDBA
SQL> select * from v$version;
BANNER
————————————————–
DM Database Server 7.1.6.46
#
# 检查系统资源
$ free -h
total used free shared buff/cache available
Mem: 64Gi 32Gi 20Gi 1.0Gi 12Gi 30Gi
Swap: 8.0Gi 0B 8.0Gi
$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 500G 200G 300G 40% /
/dev/sdb1 1.0T 500G 500G 50% /dm
#
# 检查数据库状态
SQL> select status from v$instance;
STATUS
——-
OPEN
SQL> select count(*) from user_tables;
COUNT(*)
———-
1000
# 3. 升级准备
#
# 备份源数据库
#!/bin/bash
# backup_before_upgrade.sh
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: `http://www.fgedu.net.cn`
export DM_HOME=/dm/app
export PATH=$PATH:$DM_HOME/bin
DATE=$(date +%Y%m%d_%H%M%S)
BACKUP_DIR=/dm/backup
mkdir -p $BACKUP_DIR
/dm/app/bin/DmServicefgedudb stop
dexp SYSDBA/SYSDBA file=$BACKUP_DIR/fgedu_backup_$DATE.dmp log=$BACKUP_DIR/fgedu_backup_$DATE.log full=y
/dm/app/bin/DmServicefgedudb start
echo “备份完成:$BACKUP_DIR/fgedu_backup_$DATE.dmp”
#
# 执行备份
$ chmod +x backup_before_upgrade.sh
$ ./backup_before_upgrade.sh
备份完成:/dm/backup/fgedu_backup_20250409_100000.dmp
#
# 备份配置文件
$ cp -r /dm/app/conf /dm/app/conf.bak_20250409
$ cp -r /dm/fgdata /dm/fgdata.bak_20250409
#
# 安装新版本数据库
$ cd /tmp
$ wget http://www.dameng.com/dm8/dm8_setup.zip
$ unzip dm8_setup.zip
$ ./dm8_setup.sh
# 图形界面操作:
# 步骤1:选择安装语言 – 选择”简体中文”
# 步骤2:选择安装类型 – 选择”典型安装”
# 步骤3:选择安装路径 – 输入/dm/app
# 步骤4:确认安装信息 – 确认安装信息
# 步骤5:执行安装 – 点击”开始安装”
# 步骤6:等待安装完成 – 等待安装完成
# 4. 数据迁移
#
# 导出源数据库数据
$ dexp SYSDBA/SYSDBA file=fgedu_backup.dmp log=fgedu_backup.log full=y
#
# 传输备份文件
$ scp fgedu_backup.dmp fgedu@192.168.1.200:/tmp/
#
# 导入数据到新数据库
$ disql SYSDBA/SYSDBA << EOF start /tmp/fgedu_backup.dmp; EOF # # 查看导入日志 $ tail -f /dm/app/log/dmsql.log 2025-04-09 10:00:00 [INFO] 开始导入数据 2025-04-09 10:00:05 [INFO] 创建表结构... 2025-04-09 10:45:00 [INFO] 表结构创建完成,共创建1000个表 2025-04-09 10:45:05 [INFO] 导入数据... 2025-04-09 12:30:00 [INFO] 数据导入完成,共导入500GB数据 2025-04-09 12:30:05 [INFO] 创建索引... 2025-04-09 13:00:00 [INFO] 索引创建完成,共创建3000个索引 2025-04-09 13:00:05 [INFO] 数据导入完成 # 5. 升级验证 # # 检查版本信息 $ disql SYSDBA/SYSDBA SQL> select * from v$version;
BANNER
————————————————–
DM Database Server 8.1.2.128
#
# 验证数据完整性
SQL> select count(*) from fgedu.t_user;
COUNT(*)
———-
500000
SQL> select count(*) from fgedu.t_order;
COUNT(*)
———-
2000000
#
# 验证功能正常
SQL> select * from fgedu.t_user where rownum <= 10; ID NAME ---------- ---------- 1 用户1 2 用户2 3 用户3 4 用户4 5 用户5 6 用户6 7 用户7 8 用户8 9 用户9 10 用户10 # 6. 性能测试 # # 测试查询性能 SQL> set timing on;
SQL> select * from fgedu.t_user where id = 100;
ID NAME
———- ———-
100 用户100
已用时间: 0.001(秒)
SQL> select * from fgedu.t_order where user_id = 100;
ID USER_ID AMOUNT
———- ———- ———-
2000 100 1000
已用时间: 0.003(秒)
#
# 测试插入性能
SQL> insert into fgedu.t_user values (500001, ‘测试用户’);
影响行数: 1
已用时间: 0.001(秒)
SQL> commit;
操作已执行
已用时间: 0.001(秒)
#
# 测试更新性能
SQL> update fgedu.t_user set name = ‘更新用户’ where id = 500001;
影响行数: 1
已用时间: 0.001(秒)
SQL> commit;
操作已执行
已用时间: 0.001(秒)
#
# 测试删除性能
SQL> delete from fgedu.t_user where id = 500001;
影响行数: 1
已用时间: 0.001(秒)
SQL> commit;
操作已执行
已用时间: 0.001(秒)
# 7. 应用切换
#
# 停止源数据库应用
$ /dm/app/bin/DmServicefgedudb stop
#
# 启动新数据库应用
$ /dm/app/bin/DmServicefgedudb start
#
# 验证应用连接
$ disql SYSDBA/SYSDBA
SQL> select * from v$sessions;
SESS_ID USER_NAME CLNT_IP STATE
———- ———- ———- ———-
1 SYSDBA 192.168.1.1 IDLE
2 fgedu 192.168.1.2 ACTIVE
# 8. 升级后优化
#
# 收集统计信息
SQL> sp_init_stats_sys(1);
SQL> dbms_stats.gather_schema_stats(‘FGEDU’);
#
# 重建索引
SQL> select index_name, table_name from user_indexes where status = ‘UNUSABLE’;
SQL> alter index fgedu.idx_user_id rebuild;
SQL> alter index fgedu.idx_order_user_id rebuild;
#
# 优化参数
SQL> alter system set ‘MAX_SESSIONS’ = 1000 scope=spfile;
SQL> alter system set ‘MAX_OS_MEMORY’ = 80 scope=spfile;
SQL> alter system set ‘BUFFER’ = 10240 scope=spfile;
#
# 重启数据库
$ /dm/app/bin/DmServicefgedudb restart
# 9. 效果评估
#
# 升级效果
– 升级成功完成
– 数据完整无丢失
– 升级时间:3小时
– 升级时间在预期范围内
#
# 性能效果
– 查询性能提升30%
– 插入性能提升25%
– 更新性能提升28%
– 删除性能提升25%
#
# 功能效果
– 新功能正常使用
– 旧功能正常运行
– 系统稳定性良好
– 用户体验良好
#
# 业务效果
– 业务连续性得到保障
– 业务性能得到提升
– 业务功能得到增强

4.3 DM数据库补丁应用案例

以下是一个补丁应用的案例:

#
# 补丁应用案例
##
# 场景描述
某企业需要为DM数据库应用安全补丁,修复已知的安全漏洞。
##
# 实施步骤
# 1. 环境准备
#
# 当前版本环境
– 数据库:DM8.1.2.128
– 主机名:fgedu-db
– IP地址:192.168.1.100
– 操作系统:Oracle Linux 9.3
– 数据量:200GB
– 表数量:500
#
# 补丁信息
– 补丁ID:DM8.1.2.129
– 补丁类型:安全补丁
– 补丁描述:修复安全漏洞
– 风险等级:高
# 2. 补丁评估
#
# 检查当前版本
$ disql SYSDBA/SYSDBA
SQL> select * from v$version;
BANNER
————————————————–
DM Database Server 8.1.2.128
#
# 查看补丁信息
SQL> select * from v$patch;
PATCH_ID PATCH_NAME APPLY_TIME
———- ————— ——————-
1 DM8.1.2.128 2025-04-01 10:00:00
#
# 查看可用补丁
$ cd /tmp
$ wget http://www.dameng.com/dm8/patch_list.txt
$ cat patch_list.txt
补丁ID 补丁名称 补丁描述
———- ————— ——————-
2 DM8.1.2.129 修复安全漏洞
#
# 补丁影响分析
– 补丁类型:安全补丁
– 影响范围:所有用户
– 风险等级:高
– 建议操作:立即应用
# 3. 补丁准备
#
# 下载补丁包
$ cd /tmp
$ wget http://www.dameng.com/dm8/patch_8.1.2.129.zip
$ unzip patch_8.1.2.129.zip
#
# 备份数据库
#!/bin/bash
# backup_before_patch.sh
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: `http://www.fgedu.net.cn`
export DM_HOME=/dm/app
export PATH=$PATH:$DM_HOME/bin
DATE=$(date +%Y%m%d_%H%M%S)
BACKUP_DIR=/dm/backup
mkdir -p $BACKUP_DIR
/dm/app/bin/DmServicefgedudb stop
dexp SYSDBA/SYSDBA file=$BACKUP_DIR/fgedu_backup_$DATE.dmp log=$BACKUP_DIR/fgedu_backup_$DATE.log full=y
/dm/app/bin/DmServicefgedudb start
echo “备份完成:$BACKUP_DIR/fgedu_backup_$DATE.dmp”
#
# 执行备份
$ chmod +x backup_before_patch.sh
$ ./backup_before_patch.sh
备份完成:/dm/backup/fgedu_backup_20250409_100000.dmp
#
# 备份配置文件
$ cp -r /dm/app/conf /dm/app/conf.bak_20250409
$ cp -r /dm/fgdata /dm/fgdata.bak_20250409
# 4. 补丁应用
#
# 停止数据库服务
$ /dm/app/bin/DmServicefgedudb stop
#
# 应用补丁
$ cd /tmp/patch_8.1.2.129
$ ./apply_patch.sh
# 图形界面操作:
# 步骤1:选择补丁文件 – 选择补丁文件
# 步骤2:确认补丁信息 – 确认补丁信息
# 步骤3:执行补丁应用 – 点击”开始应用”
# 步骤4:等待补丁应用完成 – 等待补丁应用完成
# 步骤5:查看补丁日志 – 查看补丁日志
#
# 查看补丁日志
$ tail -f /tmp/patch_8.1.2.129/patch.log
2025-04-09 10:00:00 [INFO] 开始应用补丁
2025-04-09 10:00:05 [INFO] 检查系统环境…
2025-04-09 10:00:10 [INFO] 系统环境检查通过
2025-04-09 10:00:15 [INFO] 备份当前版本…
2025-04-09 10:05:00 [INFO] 备份完成
2025-04-09 10:05:05 [INFO] 开始应用补丁…
2025-04-09 10:15:00 [INFO] 补丁应用完成
2025-04-09 10:15:05 [INFO] 补丁应用成功
#
# 启动数据库服务
$ /dm/app/bin/DmServicefgedudb start
# 5. 补丁验证
#
# 检查补丁信息
$ disql SYSDBA/SYSDBA
SQL> select * from v$patch;
PATCH_ID PATCH_NAME APPLY_TIME
———- ————— ——————-
1 DM8.1.2.128 2025-04-01 10:00:00
2 DM8.1.2.129 2025-04-09 10:15:00
#
# 验证数据完整性
SQL> select count(*) from fgedu.t_user;
COUNT(*)
———-
500000
SQL> select count(*) from fgedu.t_order;
COUNT(*)
———-
2000000
#
# 验证功能正常
SQL> select * from fgedu.t_user where rownum <= 10; ID NAME ---------- ---------- 1 用户1 2 用户2 3 用户3 4 用户4 5 用户5 6 用户6 7 用户7 8 用户8 9 用户9 10 用户10 # 6. 性能测试 # # 测试查询性能 SQL> set timing on;
SQL> select * from fgedu.t_user where id = 100;
ID NAME
———- ———-
100 用户100
已用时间: 0.001(秒)
#
# 测试插入性能
SQL> insert into fgedu.t_user values (500001, ‘测试用户’);
影响行数: 1
已用时间: 0.001(秒)
SQL> commit;
操作已执行
已用时间: 0.001(秒)
# 7. 安全测试
#
# 测试安全功能
SQL> — 测试安全漏洞修复
SQL> select * from fgedu.t_user where ‘1’=’1′;
ID NAME
———- ———-
#
# 验证安全加固
SQL> — 验证安全加固效果
SQL> select * from v$security;
PARAM_NAME PARAM_VALUE
——————– ————
AUDIT_ENABLE 1
PASSWORD_POLICY 1
SECURE_CONNECTION 1
# 8. 补丁后优化
#
# 收集统计信息
SQL> sp_init_stats_sys(1);
SQL> dbms_stats.gather_schema_stats(‘FGEDU’);
#
# 重建索引
SQL> select index_name, table_name from user_indexes where status = ‘UNUSABLE’;
SQL> alter index fgedu.idx_user_id rebuild;
#
# 优化参数
SQL> alter system set ‘MAX_SESSIONS’ = 1000 scope=spfile;
SQL> alter system set ‘MAX_OS_MEMORY’ = 80 scope=spfile;
#
# 重启数据库
$ /dm/app/bin/DmServicefgedudb restart
# 9. 效果评估
#
# 补丁效果
– 补丁应用成功

本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html

联系我们

在线咨询:点击这里给我发消息

微信号:itpux-com

工作日:9:30-18:30,节假日休息