本升级手册仅适用于小版本间升级使用,升级前必须在测试环境测试成功再应用到生产环境。
此文档仅针对单机数据库版本升级所整理,如有集群版本升级请看文档:
一、前言
达梦数据库处在更新迭代阶段,会不断地改进不足并新增功能,很多使用者就需要从旧版本升级到新版本,那么可以根据本文章进行升级操作。
二、升级步骤
2.1 在测试环境打升级包(bin.tar.gz)
2.1.1 将原测试环境所有达梦服务停掉
[dmdba@localhost ~]$ ps -ef | grep dmdba
dmdba 12246 1 0 10:15 ? 00:00:00 /dmdbms/bin/dmap
dmdba 12604 1 2 10:16 ? 00:00:06 /dmdbms/bin/dmserver /dmdata/5236/DMDB/dm.ini -noconsole
root 12915 2692 0 10:16 pts/0 00:00:00 su - dmdba
dmdba 12920 12915 0 10:16 pts/0 00:00:00 -bash
dmdba 13066 12920 0 10:20 pts/0 00:00:00 ps -ef
dmdba 13067 12920 0 10:20 pts/0 00:00:00 grep dmdba
[dmdba@localhost ~]$ DmServiceDMSERVER stop
Stopping DmServiceDMSERVER: [ OK ]
[dmdba@localhost ~]$ DmAPService stop
Stopping DmAPService: [ OK ]
2.1.2 备份数据库安装目录dmdbms,再重新创建空的dmdbms
[root@localhost ~]# mv /dmdbms/ /dmdbms_bak
[root@localhost ~]# mkdir -p /dmdbms
# 由于我的 dmdbms 在根目录 /,所以需要使用root用户mv,再进行修改属主和赋权
[root@localhost ~]# chown -R dmdba:dinstall /dmdbms
[root@localhost ~]# chmod -R 777 /dmdbms
2.1.3 安装新版达梦
注意:如果/etc/dm_svc.conf文件已编辑,可选择不替换,以免覆盖掉之前的配置
(1)挂载新版8.1.3.26镜像
[root@localhost ~]# mount -o loop dm8_20240301_x86_kylin10_64_ent_8.1.3.26_pack26.iso /mnt/
mount: /mnt: WARNING: source write-protected, mounted read-only.
(2)安装(切换dmdba用户),安装过程如下
[dmdba@localhost mnt]$ ./DMInstall.bin -i
请选择安装语言(C/c:中文 E/e:英文) [C/c]:
解压安装程序.........
欢迎使用达梦数据库安装程序
是否输入Key文件路径? (Y/y:是 N/n:否) [Y/y]:N
是否设置时区? (Y/y:是 N/n:否) [Y/y]:
设置时区:
[ 1]: GTM-12=日界线西
[ 2]: GTM-11=萨摩亚群岛
[ 3]: GTM-10=夏威夷
[ 4]: GTM-09=阿拉斯加
[ 5]: GTM-08=太平洋时间(美国和加拿大)
[ 6]: GTM-07=亚利桑那
[ 7]: GTM-06=中部时间(美国和加拿大)
[ 8]: GTM-05=东部部时间(美国和加拿大)
[ 9]: GTM-04=大西洋时间(美国和加拿大)
[10]: GTM-03=巴西利亚
[11]: GTM-02=中大西洋
[12]: GTM-01=亚速尔群岛
[13]: GTM=格林威治标准时间
[14]: GTM+01=萨拉热窝
[15]: GTM+02=开罗
[16]: GTM+03=莫斯科
[17]: GTM+04=阿布扎比
[18]: GTM+05=伊斯兰堡
[19]: GTM+06=达卡
[20]: GTM+07=曼谷,河内
[21]: GTM+08=中国标准时间
[22]: GTM+09=汉城
[23]: GTM+10=关岛
[24]: GTM+11=所罗门群岛
[25]: GTM+12=斐济
[26]: GTM+13=努库阿勒法
[27]: GTM+14=基里巴斯
请选择设置时区 [21]:
安装类型:
1 典型安装
2 服务器
3 客户端
4 自定义
请选择安装类型的数字序号 [1 典型安装]:
所需空间: 1792M
请选择安装目录 [/home/dmdba/dmdbms]:/dmdbms
可用空间: 22G
是否确认安装路径(/dmdbms)? (Y/y:是 N/n:否) [Y/y]:Y
安装前小结
安装位置: /dmdbms
所需空间: 1792M
可用空间: 22G
版本信息:
有效日期:
安装类型: 典型安装
是否确认安装? (Y/y:是 N/n:否):Y
配置文件/etc/dm_svc.conf已存在,是否进行替换? (Y/y,N/n) [Y/y]:N
2025-02-17 10:31:33
[INFO] 安装达梦数据库...
2025-02-17 10:31:33
[INFO] 安装 基础 模块...
2025-02-17 10:31:37
[INFO] 安装 服务器 模块...
2025-02-17 10:31:37
[INFO] 安装 客户端 模块...
2025-02-17 10:31:40
[INFO] 安装 驱动 模块...
2025-02-17 10:31:43
[INFO] 安装 手册 模块...
2025-02-17 10:31:43
[INFO] 安装 服务 模块...
2025-02-17 10:31:44
[INFO] 移动日志文件。
2025-02-17 10:31:46
[INFO] 安装达梦数据库完成。
请以root系统用户执行命令:
/dmdbms/script/root/root_installer.sh
安装结束
(3)退出dmdba用户,根据提示,用root用户执行命令
[dmdba@localhost mnt]$ 注销
[root@localhost ~]# /dmdbms/script/root/root_installer.sh
创建DmAPService服务
创建服务(DmAPService)完成
启动DmAPService服务
2.1.4 将bin目录打包
[root@localhost ~]# su - dmdba
上一次登录: 一 2月 17 10:29:41 CST 2025 pts/0 上
[dmdba@localhost ~]$ cd /dmdbms
[dmdba@localhost dmdbms]$ ll
总用量 36
drwxr-xr-x 9 dmdba dinstall 8192 2月 17 10:33 bin
drwxr-xr-x 2 dmdba dinstall 30 2月 17 10:31 bin2
drwxr-xr-x 3 dmdba dinstall 19 2月 17 10:31 desktop
drwxr-xr-x 2 dmdba dinstall 4096 2月 17 10:31 doc
drwxr-xr-x 14 dmdba dinstall 160 2月 17 10:31 drivers
drwxr-xr-x 2 dmdba dinstall 4096 2月 17 10:31 include
drwxr-xr-x 2 dmdba dinstall 94 2月 17 10:31 jar
drwxr-xr-x 7 dmdba dinstall 161 2月 17 10:31 jdk
-rwxr-xr-x 1 dmdba dinstall 1071 2月 17 10:31 license_en.txt
-rwxr-xr-x 1 dmdba dinstall 1146 2月 17 10:31 license_zh.txt
drwxr-xr-x 2 dmdba dinstall 117 2月 17 10:33 log
drwxr-xr-x 6 dmdba dinstall 92 2月 17 10:31 samples
drwxr-xr-x 3 dmdba dinstall 37 2月 17 10:31 script
drwxr-xr-x 8 dmdba dinstall 4096 2月 17 10:31 tool
drwxr-xr-x 3 dmdba dinstall 97 2月 17 10:31 uninstall
-rwxr-xr-x 1 dmdba dinstall 2208 2月 17 10:31 uninstall.sh
[dmdba@localhost dmdbms]$ tar -zcvf bin.tar.gz bin/
打包过程略
……
[dmdba@localhost dmdbms]$ ll *.tar.gz
-rw-r--r-- 1 dmdba dinstall 118942414 2月 17 10:36 bin.tar.gz
2.1.5 打包完成将bin.tar.gz取出,将测试环境恢复原样
(1)停新版的AP服务
[dmdba@localhost ~]$ DmAPService stop
Stopping DmAPService: [ OK ]
(2)将数据库安装目录恢复原样
[root@localhost ~]# mv /dmdbms /dmdbms_new_bak
[root@localhost ~]# mv /dmdbms_bak/ /dmdbms
(3)重新启动数据库服务
[dmdba@localhost ~]$ DmAPService start
Starting DmAPService: [ OK ]
[dmdba@localhost ~]$ DmServiceDMSERVER start
Starting DmServiceDMSERVER: [ OK ]
2.2 在生产环境进行升级
2.2.1 查看当前版本
[dmdba@dmdb ~]$ disql / as sysdba
服务器[LOCALHOST:5236]:处于普通打开状态
登录使用时间 : 72.042(ms)
SQL> select id_code();
行号 ID_CODE()
---------- ----------------------------------------
1 1-2-18-21.11.11-150669-10013-ENT Pack16
已用时间: 5.919(毫秒). 执行号:300.
SQL>
2.2.2 上传升级包到数据库目录
[root@dmdb ~]# su - dmdba
上一次登录: 一 2月 17 11:03:37 CST 2025 pts/0 上
[dmdba@dmdb ~]$ cd /dmdbms
[dmdba@dmdb dmdbms]$ ll
总用量 116192
drwxr-xr-x 8 dmdba dinstall 8192 2月 17 10:16 bin
drwxr-xr-x 2 dmdba dinstall 30 2月 17 10:15 bin2
-rw-r--r-- 1 dmdba dinstall 118942414 2月 17 10:36 bin.tar.gz
drwxr-xr-x 3 dmdba dinstall 19 2月 17 10:15 desktop
drwxr-xr-x 2 dmdba dinstall 4096 2月 17 10:15 doc
drwxr-xr-x 12 dmdba dinstall 131 2月 17 10:15 drivers
drwxr-xr-x 2 dmdba dinstall 4096 2月 17 10:15 include
drwxr-xr-x 2 dmdba dinstall 94 2月 17 10:15 jar
drwxr-xr-x 7 dmdba dinstall 68 2月 17 10:15 jdk
-rwxr-xr-x 1 dmdba dinstall 1071 2月 17 10:15 license_en.txt
-rwxr-xr-x 1 dmdba dinstall 1146 2月 17 10:15 license_zh.txt
drwxr-xr-x 2 dmdba dinstall 205 2月 17 10:16 log
drwxr-xr-x 5 dmdba dinstall 74 2月 17 10:15 samples
drwxr-xr-x 3 dmdba dinstall 37 2月 17 10:15 script
drwxr-xr-x 9 dmdba dinstall 4096 2月 17 10:15 tool
drwxr-xr-x 3 dmdba dinstall 97 2月 17 10:15 uninstall
-rwxr-xr-x 1 dmdba dinstall 2146 2月 17 10:15 uninstall.sh
drwxr-xr-x 2 dmdba dinstall 92 2月 17 10:15 web
2.2.3 停应用,然后联机备份数据库
[dmdba@dmdb ~]$ disql / as sysdba
服务器[LOCALHOST:5236]:处于普通打开状态
登录使用时间 : 40.465(ms)
SQL> BACKUP DATABASE BACKUPSET '/dmdata/BACKUP_FILE_20250217';
操作已执行
已用时间: 00:00:01.210. 执行号:500.
SQL> exit;
[dmdba@dmdb ~]$ ll /dmdata/BACKUP_FILE_20250217/
总用量 17700
-rw-r--r-- 1 dmdba dinstall 203776 2月 17 11:09 BACKUP_FILE_20250217_1.bak
-rw-r--r-- 1 dmdba dinstall 17832448 2月 17 11:09 BACKUP_FILE_20250217.bak
-rw-r--r-- 1 dmdba dinstall 82432 2月 17 11:09 BACKUP_FILE_20250217.meta
2.2.4 关闭数据库服务
[dmdba@dmdb ~]$ DmServiceDMSERVER stop
Stopping DmServiceDMSERVER: [ OK ]
[dmdba@dmdb ~]$ DmAPService stop
Stopping DmAPService: [ OK ]
2.2.5 数据文件目录进行物理备份
[dmdba@dmdb ~]$ cp -r /dmdata/5236/DMDB/ /dmdata/5236/DMDB_BAK
2.2.6 备份bin目录
[dmdba@dmdb ~]$ cd /dmdbms
[dmdba@dmdb dmdbms]$ mv bin bin_old
2.2.7 解压上传的升级bin包,注意目录权限
[dmdba@dmdb dmdbms]$ tar -zxf bin.tar.gz
2.2.8 将原bin目录中的服务名拷贝到新目录
[dmdba@dmdb dmdbms]$ cp ./bin_old/DmServiceDMSERVER ./bin
2.2.9 将原bin目录中的license(dm.key)文件拷贝到新目录
[dmdba@dmdb dmdbms]$ cp ./bin_old/dm.key ./bin
2.2.10 启动数据库服务
[dmdba@dmdb bin]$ ./DmAPService start
Starting DmAPService: [ OK ]
[dmdba@dmdb bin]$ ./DmServiceDMSERVER start
Starting DmServiceDMSERVER: [ OK ]
三、验证
[dmdba@dmdb bin]$ disql / as sysdba
服务器[LOCALHOST:5236]:处于普通打开状态
登录使用时间 : 70.497(ms)
SQL> select id_code();
行号 ID_CODE()
---------- ------------------------------------------
1 --03134284058-20240205-217834-20046 Pack26
已用时间: 2.300(毫秒). 执行号:18500.
SQL> select build_version from v$instance;
行号 BUILD_VERSION
---------- -----------------------------------
1 1-3-26-2024.02.05-217834-20046-ENT
已用时间: 1.363(毫秒). 执行号:18502.
SQL>
已经成功从8.1.2.18版本升级到8.1.3.26版本。
四、收尾工作
4.1 重建系统包和自建存储过程包
升级版本后需要重建系统包和自建的存储过程包,才能保证原服务的正常运行。
[dmdba@dmdb bin]$ disql / as sysdba
服务器[LOCALHOST:5236]:处于普通打开状态
登录使用时间 : 70.497(ms)
SQL> SP_CREATE_SYSTEM_PACKAGES(1);
SQL> SP_CREATE_SYSTEM_VIEWS(1);
另外,自建的存储过程包也需要重建。
4.2 重建函数索引
通过如下SQL查询,如果结果集有内容,则说明查询到的函数索引需要重建
select * from all_ind_columns where column_position = -1;
重建索引SQL:
ALTER INDEX SCHNAME.INDNAME REBUILD;
注:另外也可以使用DM管理工具查看函数索引,将灰色的函数索引右键——重建即可。
4.3 归档文件扩展名是否为‘null’
如没有则忽略此条,如果的确出现了扩展名变成了null的情况则需要修改归档配置参数LOG_FILE_POSTFIX_NAME=log。(归档日志文件扩展名)
4.4 更新应用驱动
建议升级后替换应用驱动,否则可能报网络通信异常。
【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-)
说明:
1.DmJdbcDriver16 对应 Jdk1.6 及以上环境
2.DmJdbcDriver17 对应 Jdk1.7 及以上环境
3.DmJdbcDriver18 对应 Jdk1.8 及以上环境
另外,如果使用Hibernate框架,也需要更新对应的方言包。
【dmdba用户】
从新版本数据库【Hibernate方言包目录示例,/home/dmdba/dmdbms/drivers/jdbc/dialect】目录选取对应版本的方言包在应用中替换相关方言包。
4.5 注意事项
若升级的版本为8.1.3.26及以后的版本,数据库升级后需注意慢SQL,因8.1.3.26版本后CBO做了调整。
五、回退方案
5.1 概述
由于会对原环境数据和软件进行保留,因此当出现异常情况下,进行还原操作即可完成回退。
5.2 回退触发条件
- 环境升级后,数据库服务异常,短时间内无法解决。
- 达梦数据库提供服务后,无法承担系统并发压力,造成业务缓慢。
- 达梦数据库提供服务后,整体环境异常,无法继续提供服务。
5.3 操作步骤
5.3.1 操作流程
- 停止数据库服务
- 将原备份的bin恢复,并启动数据库
- 回退应用驱动版本
- 验证应用服务,查看系统状态
5.3.2 回退成功验证
修复完成后,应用厂商对数据和功能进行验证,所有验证通过后,证明回退成功。