达梦数据库版本升级手册-DW集群
本文于 22 天前发布,最后更新于 16 天前

一、前言

由于近期数据库存在一些漏洞,为了修复已知漏洞需要对数据库进行版本升级,如升级到8.1.3.26版本需要升级到Pack51,如升级到8.1.4.80版本需要升级到Pack24及以上版本。

本升级手册以一主一备一监视器的集群架构作为示例,展示升级到8.1.3.26 Pack51版本。

二、升级步骤

2.1 检查当前数据库版本

SQL> SELECT ID_CODE();

2.2 检查会话

SQL> SELECT * FROM V$SESSIONS WHERE STATE = 'ACTIVE';

2.3 备份数据库[热备]

SQL> BACKUP DATABASE FULL BACKUPSET '/dmbak/FULL_20251010_2003';

2.4 停止集群

# 关闭确认监视器
cd $DM_HOME/bin
./DmMonitorServiceMonitor stop

# 停止守护进程
备库:
./DmWatcherServiceDMDB02 stop
主库:
./DmWatcherServiceDMDB01 stop

# 停止数据库服务
主库:
./disql
SQL> CHECKPOINT(100);
SQL> SHUTDOWN IMMEDIATE;
SQL> EXIT;
备库:
./disql
SQL> CHECKPOINT(100);
SQL> SHUTDOWN IMMEDIATE;
SQL> EXIT;

# 停止AP服务[主/备/监视器]
./DmAPService stop

2.5 备份数据目录

# 主/备库执行:
cd /data/dmdata
cp -r DMDB/ DMDB_版本号

2.6 备份归档文件

# 主/备库执行:
mkdir -p /data/dmarch_版本号
mv /data/dmarch/* /data/dmarch_版本号

2.7 备份旧版本bin目录

# 所有节点执行:
cd $DM_HOME
mv bin bin_版本号

2.8 升级主库

# 安装新版数据库软件

# root 挂载
mount -o loop /dmsoft/dm8_20250813_x86_kylin10_sp1_64.iso /mnt/

# dmdba 安装
cd /mnt/
./DMInstall -i
# 安装在其他目录下/data/dmdbms_新版本号,例如:/data/dmdbms_3_26_pack51
# 不要覆盖/etc/dm_svc.conf文件
# 安装过程中程序会自动将新版本目录配置到环境变量中,需要手动取出
vi ~/.bash_profile
# 去掉新版本目录
source ~/.bash_profile

# 拷贝新的bin目录到原版本目录中
cd $DM_HOME
cp -r /data/dmdbms_3_26_pack51/bin ./

# 将原bin目录中的服务拷贝到新的bin目录中
cp bin_版本号/DmServiceDMDB01 bin/
cp bin_版本号/DmWatcherServiceDMDB01 bin/
cp bin_版本号/DmAPService bin/

# 生产环境如有key也需要一并拷贝
cp bin_版本号/dm.key bin/

2.9 升级备库

# 安装新版数据库软件

# root 挂载
mount -o loop /dmsoft/dm8_20250813_x86_kylin10_sp1_64.iso /mnt/

# dmdba 安装
cd /mnt/
./DMInstall -i
# 安装在其他目录下/data/dmdbms_新版本号,例如:/data/dmdbms_3_26_pack51
# 不要覆盖/etc/dm_svc.conf文件
# 安装过程中程序会自动将新版本目录配置到环境变量中,需要手动取出
vi ~/.bash_profile
# 去掉新版本目录
source ~/.bash_profile

# 拷贝新的bin目录到原版本目录中
cd $DM_HOME
cp -r /data/dmdbms_3_26_pack51/bin ./

# 将原bin目录中的服务拷贝到新的bin目录中
cp bin_版本号/DmServiceDMDB02 bin/
cp bin_版本号/DmWatcherServiceDMDB02 bin/
cp bin_版本号/DmAPService bin/

# 生产环境如有key也需要一并拷贝
cp bin_版本号/dm.key bin/

2.10 升级监视器

# 安装新版数据库软件

# root 挂载
mount -o loop /dmsoft/dm8_20250813_x86_kylin10_sp1_64.iso /mnt/

# dmdba 安装
cd /mnt/
./DMInstall -i
# 安装在其他目录下/data/dmdbms_新版本号,例如:/data/dmdbms_3_26_pack51
# 不要覆盖/etc/dm_svc.conf文件
# 安装过程中程序会自动将新版本目录配置到环境变量中,需要手动取出
vi ~/.bash_profile
# 去掉新版本目录
source ~/.bash_profile

# 拷贝新的bin目录到原版本目录中
cd $DM_HOME
cp -r /data/dmdbms_3_26_pack51/bin ./

# 将原bin目录中的服务拷贝到新的bin目录中
cp bin_版本号/DmMonitorServiceMonitor bin/
cp bin_版本号/DmAPService bin/
# 如果dmmonitor.ini和dmmonitor_noc.ini放在bin目录中也需要拷贝
cp bin_版本号/dmmonitor*.ini bin/

# 生产环境如有key也需要一并拷贝
cp bin_版本号/dm.key bin/

2.11 启动AP服务

# 主/备库执行(监视器启动与否均可)
cd $DM_HOME/bin
./DmAPService start

2.12 启动集群

# 主库服务
cd $DM_HOME/bin
./DmServiceDMDB01 start

# 备库服务
cd $DM_HOME/bin
./DmServiceDMDB02 start

# 主库守护
./DmWatcherServiceDMDB01 start
# 备库守护
./DmWatcherServiceDMDB02 start

# 监视器
cd $DM_HOME/bin
./DmMonitorServiceMonitor start

三、验证

登录非确认监视器检查集群状态

cd $DM_HOME/bin
./dmmonitor ./dmmonitor_noc.ini
show/show global info

检查数据库版本

SQL> SELECT ID_CODE();

检查数据库授权

SQL> SELECT EXPIRED_DATE FROM V$LICENSE;

四、收尾工作

4.1 重建系统包和自建存储过程包

升级版本后需要重建系统包和自建的存储过程包,才能保证原服务的正常运行。

SP_CREATE_SYSTEM_PACKAGES(0);
SP_CREATE_SYSTEM_PACKAGES(1);
SP_CREATE_SYSTEM_VIEWS(0);
SP_CREATE_SYSTEM_VIEWS(1);

另外,自建的存储过程包也需要重建。

如果重建系统包失败,检查 COMPATIBLE_MODE 为 2(兼容 Oracle),则需执行如下 SQL:

SP_SET_PARA_VALUE(2,'ORA_DATE_FMT',1);

重启集群后重建系统包,系统包重建后修改 ORA_DATE_FMT 项的值为原值:

SP_SET_PARA_VALUE(2,'ORA_DATE_FMT',0);

再次重启集群生效。

4.2 检查相关参数

SELECT *
  FROM V$DM_INI
 WHERE PARA_NAME IN ( 'BAK_SAFE_CHECK',
                     'LOG_FILE_POSTFIX_NAME',
                     'ENABLE_MONITOR_BP',
                     'MONITOR_INDEX_FLAG',
                     'SVR_LOG_PLN_STR',
                     'GDB_THREAD_INFO',
                     'CORE_DUMP_FLAG',
                     'ORA_DATE_FMT',
                     'COMPATIBLE_MODE');

4.3 重建函数索引

函数索引失效问题,查询系统中是否有函数索引 (失败重建)
通过如下 SQL 查询,如果结果集有内容,则说明查询到的函数索引需要重建

SELECT * FROM ALL_IND_COLUMNS WHERE COLUMN_POSITION = -1;
重建索引SQL:
ALTER INDEX SCHNAME.INDNAME REBUILD;

注:另外也可以使用 DM 管理工具查看函数索引,将灰色的函数索引右键 —— 重建即可。

4.4 归档日志文件名问题

如后缀不为 “.log” 则修改参数:

SP_SET_PARA_STRING_VALUE(1,'LOG_FILE_POSTFIX_NAME','log');

如没有则忽略此条。

4.5 关闭绑定参数信息监控

SP_SET_PARA_VALUE(1,'ENABLE_MONITOR_BP',0);

4.6 结果集显示相关参数

SP_SET_PARA_VALUE(1,'SLCT_OPT_FLAG',0);

4.7 备份安全检查

SP_SET_PARA_VALUE(1,'BAK_SAFE_CHECK',7);

4.8 禁用索引监控

SP_SET_PARA_VALUE(1,'MONITOR_INDEX_FLAG',2);

4.9 是否在 SQL 日志中记录当前 SQL 的计划

SP_SET_PARA_VALUE(1,'SVR_LOG_PLN_STR',0);

且在 dm.ini 配置文件中添加 SVR_LOG_PLN_STR=0

4.10 halt 时强制记录堆栈到日志文件

SP_SET_PARA_VALUE(2,'GDB_THREAD_INFO',1);

4.11 记录 CORE SQL 到单独文件

SP_SET_PARA_VALUE(1,'CORE_DUMP_FLAG',1);

4.12 4.80 版本需要临时调整 BEXP_CALC_ST_FLAG

针对哪些过滤条件的选择率基于动态采样调整

SP_SET_PARA_VALUE(1,'BEXP_CALC_ST_FLAG',0);

4.13 禁用 UTL_TCP 系统包

call SP_CREATE_SYSTEM_PACKAGES(0,'UTL_TCP');

注意

以下参数先查后改

SELECT * FROM V$DM_INI WHERE PARA_name like '%BEXP_CALC_ST_FLAG%' UNION ALL
SELECT * FROM V$DM_INI WHERE PARA_name like '%BATCH_PARAM_OPT%'UNION ALL
SELECT * FROM V$DM_INI WHERE PARA_name like '%HASH_JOIN_LOOP%'UNION ALL
SELECT * FROM V$DM_INI WHERE PARA_name like '%OPERATION_NEW_MOTION%';

如下参数需要在 dm.ini 中追加(在线修改重启失效)

BEXP_CALC_ST_FLAG = 0
BATCH_PARAM_OPT = 0
HASH_JOIN_LOOP_TIMES = 1
OPERATION_NEW_MOTION = 0
HASH_JOIN_LOOP = 1 ##查不到不追加

4.14 更新应用驱动

建议升级后替换应用驱动,否则可能报网络通信异常。
8.1.4.80_P8 版本驱动调整了关于查询中别名的使用方法,导致原有 SQL 别名获取不到,建议更换 8.1.4.143 驱动进行测试。

【dmdba 用户】
应用 JDBC 驱动 jar 包需要更新至 8.1.3.26 版本数据库对应的驱动 jar 包,【数据库 JDBC 驱动目录,/home/dmdba/dmdbms/drivers/jdbc】,将以下 jar 包拷贝到应用服务器驱动 jar 目录进行替换。如下命令可用与查看驱动版本。

[dmdba@dm ~]$ java -jar /home/dmdba/dmdbms/drivers/jdbc/DmJdbcDriver18.jar 
Dameng JDBC Driver V8.1.3.26-Build(2023.06.30-18027-)

另外,如果使用 Hibernate 框架,也需要更新对应的方言包。

【dmdba 用户】
从新版本数据库【Hibernate 方言包目录示例,/home/dmdba/dmdbms/drivers/jdbc/dialect】目录选取对应版本的方言包在应用中替换相关方言包。

4.15 注意事项

若升级的版本为 8.1.3.26 及以后的版本,数据库升级后需注意慢 SQL,因 8.1.3.26 版本后 CBO 做了调整。

五、回退方案

5.1 概述

由于会对原环境数据和软件进行保留,因此当出现异常情况下,进行还原操作即可完成回退。

5.2 回退触发条件

  • 环境升级后,数据库服务异常,短时间内无法解决。
  • 达梦数据库提供服务后,无法承担系统并发压力,造成业务缓慢。
  • 达梦数据库提供服务后,整体环境异常,无法继续提供服务。

5.3 操作步骤

5.3.1 操作流程

  1. 停止数据库服务
  2. 将原备份的 bin 恢复,并启动数据库
  3. 回退应用驱动版本
  4. 验证应用服务,查看系统状态

5.3.2 回退成功验证

修复完成后,应用厂商对数据和功能进行验证,所有验证通过后,证明回退成功。

暂无评论

发送评论 编辑评论


|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇