注册
DM8单机版本升级/漏洞升级操作流程
专栏/技术分享/ 文章详情 /

DM8单机版本升级/漏洞升级操作流程

Coisini. 2025/08/29 5 0 0
摘要

一、升级前检查

1. 查询升级前、升级后版本号

-- DM数据库信息查询脚本
SELECT BANNER FROM V$VERSION;

例如,

升级前版本:

v8. 1-1-144-20.11.06-129436-ENT Pack1

升级后版本:

v8. 1-2-94-21.11.11-150650-10038-ENT

2. 检查升级安装包与环境是否匹配

-- 系统信息查询
getconf LONG_BIT  # 获取系统位数

cat /etc/os-release | grep "PRETTY_NAME"  # 查询操作系统

cat /proc/version  # 查询系统

lscpu  # 查询CPU型号

cat /proc/cpuinfo|grep "physical id"|sort|uniq|wc -l  # CPU个数

free -h   #查询内存

df -h   #快速查看所有磁盘空间

du -sh * #查询目录下所有项目的大小

fdisk -l #查询所有物理磁盘

netstat -tunlp | grep <进程名或端口号>  #查询端口号

hostname -I  #查询本机ip

如果操作系统与cpu不匹配,需要获取到匹配的安装包再执行后续步骤。

3. 检查数据库服务

ps -ef | grep dmserver

确认数据库服务目前为启动状态,并了解清楚达梦软件安装目录与数据库实例目录的位置。

例如,达梦数据库软件部署目录为:/opt/dm8/dmdbms;达梦数据库部署目录为:/opt/dm8/dmdbms/data/DAMENG。

使用disql连接数据库,检查数据文件。

./disql SYSDBA:5236
密码

SQL>  select * from v$sessions;
-- 检查是否还存在应用连接;
SQL>  select * from v$purge;
-- 检查是否存在待PURGE事务
SQL>  checkpoint(100); 
-- 主动做检查点刷盘

-- 检查数据文件,是否均在库目录下,如果不在需要备份
SELECT * FROM V$DATAFILE;

-- 检查重做日志文件,是否均在库目录下,如果不在需要备份
-- 检查归档文件,最后升级前需mv下整个归档目录

-- 在停止原服务前建议先检查数据文件位置以防丢失数据文件:
-- 动态性能视图查询表空间与数据文件对应关系
SELECT ts.NAME, df.PATH FROM V$TABLESPACE AS ts, V$DATAFILE AS df WHERE ts.ID = df.GROUP_ID;

-- 如果应用无法关闭连接,则进行锁用户,并清理历史会话操作
select username from dba_users;
alter user xxx ACCOUNT LOCK;

begin
 	for a in  (select sess_id from v$sessions 
	) loop
		execute immediate 'sp_cancel_session_operation ('''||a.SESS_ID||''')';
 		execute immediate 'sp_close_session ('''||a.SESS_ID||''')';
 	end loop;
end;

ALTER USER xxx ACCOUNT UNLOCK;

确保应用连接处于关闭或备份期间没有数据变更操作。

4. 停数据库服务

进入数据库软件安装目录的bin目录下,查看单机服务名,一般为DmServiceDMSERVER。例如,

cd /opt/dm8/dmdbms/bin
./DmServiceDMSERVER stop

在停止后,可以去log目录下查看日志,是否打印关键字正常退出字样。

![](D:\Xi Ling\笔记\源图片\202508121042.png)

5. 前台启动数据库(非必须)

在bin目录下执行下述命令,dm.ini位于数据库实例目录内。

./dmserver /data/dmdata/DAMENG/dm.ini

启动后会打印启动日志,检查数据库状态,如果能够正常启动,说明当前数据库状态正常,exit停止数据库即可。如果启动失败则需要排查数据库出了什么问题。

二、备份数据库

1. 检查dmap服务

为保证升级可靠性与回退方案并存,需对数据库进行全库物理备份。在备份前需保证dmap服务开启。

默认dmap服务是开启状态,检查dmap服务的状态:ps -ef|grep dmap

如果是关闭状态,进入数据库软件安装目录的bin目录下。

cd /opt/dm8/dmdbms/bin
./DmAPService start

备份方式有两种,冷备和热备,推荐使用冷备。

2. 开启冷备份

数据库是关闭状态,对是否开启归档无要求。

进入数据库软件安装目录的bin目录下,

./dmrman
RMAN>backup database '/data/dmdata/DAMENG/dm.ini' backupset '/data/dmbackup/bak20250811';

3. 开启热备份

在备份前需保证数据库为启动状态,并且归档模式开启。

-- 登录数据库检查数据库归档模式
select arch_mode from V$database;

-- ARCH_MODE为Y是已开启,N为未开启,需开启数据库归档模式才能做物理备份。

-- 配置数据库归档
alter database mount;
ALTER DATABASE ADD ARCHIVELOG 'DEST = /data/dmarch, TYPE = local, FILE_SIZE = 2048, SPACE_LIMIT = 20480';
ALTER DATABASE ARCHIVELOG;
alter database open;
select STATUS$ , MODE$ from v$instance;
select ARCH_MODE from v$database;

-- 备份数据库
select checkpoint(100);
backup database full backupset '/data/dmbackup/full_bak20250812'

4. 备份原库目录

# 备份
cp -rpf /data/dmdata/DAMENG /data/dmdata/DAMENG_bak

# 验证文件大小
du -sh /data/dmdata/DAMENG*

5. 备份原数据库软件目录

进入数据库软件安装目录的上一级目录,

mv dmdbms bak_dmdbms

用ll或ls指令验证结果。

三、安装新版本数据库

安装到原数据库软件所在目录,推荐使用dmdba用户安装,用root安装的话,安装好后需要修改数据库软件所属组chown -R dmdba:dinstall /opt/dm8

安装前建议先停DmAPServers服务。

ps -ef | grep dmap
./DmAPService status
./DmAPService stop

安装过程见《DM8在linux环境下的单机部署》第二章。

四、拷贝原服务脚本到新版本中

cd /opt/dm8/bak_dmdbms/bin
cp -r DmServiceDMSERVER /opt/dm8/dmdbms/bin
cd ../../dmdbms/bin
chown -R dmdba:dinstall *

如果存在dm.key文件也需要拷贝进新的安装目录/bin下。

如果数据文件在bak_dmdbms下,也需要把data拷贝回来。

五、启动数据库服务

在新的bin目录下,

./DmServiceDMSERVER start
./disql SYSDBA:5236
密码

select id_code;

数据库服务启动后,检查下达梦AP服务./DmAPService status,如果AP服务没启动则启动一下。

./DmAPService start

如果AP服务没启动,会影响定时备份。

六、更新数据库统计信息

--对库上所有模式下的所有用户表以及表上的所有索引生成统计信息
call sp_db_stat_init();
--收集指定模式下统计信息集合和直方图信息。
call DBMS_STATS.gather_schema_stats('用户名',100);
第一个参数:模式名
第二个参数:收集比例

七、系统包对象重建

sp_create_system_views(0);
sp_create_system_views(1);
SP_CREATE_SYSTEM_PACKAGES(0);
SP_CREATE_SYSTEM_PACKAGES(1);
select * from user_procedures;

八、导入dm.key

将.key文件导入新的bin目录下后,如果原始文件名不是dm.key,需要更改为dm.key。

登录disql,执行sp_load_lic_info()

确认许可证授权:

select server_series,server_type,expired_date,authorized_customer,series_no from v$license;

视图v$license字段信息说明

  • server_series
    服务器颁布类型。P:个人版;S:标准版;E:企业版
  • server_type
    服务器发布类型。1:正式版;2:测试版;3:试用版
  • expired_date
    有效日期。非正式版本:有到期日;正式版本:NULL
  • authorized_customer
    用户名称。
  • series_no
    序列号。

九、附录

1. 回退机制

cd /opt/dm8/dmdbms/bin

1) 停止服务:
./DmServiceDMSERVER stop

2) 保留升级错误实例:
nohup mv /data/dmdata/DAMENG /data/dmdata/DAMENG_faild &

3) 恢复初原始执行码:
cd /opt/dm8/dmdbms
mv bin bin_BAK_faild
mv bin_OLD_BAK bin 
方法一、物理copy,恢复原始实例
nohup   cp -rpf  /dmdata/data/DAMENG_OLD_BAK  /dmdata/data/DAMENG &
 方法二、备份集恢复
su dmdba
cd /opt/dm8/dmdbms/bin
./DmAPService start
./dmrman
restore database '/dmdata/data/DAMENG/dm.ini' from backupset '/dmdata/data /DAMENG'
recover database '/dmdata/data/DAMENG/dm.ini' from backupset '/dmdata/data /DAMENG'
recover database '/dmdata/data/DAMENG/dm.ini'  update db_magic;

4) 启动数据库集群:
./DmServiceDMSERVER start

2. SYSDBA用户无法登录

大致思路:

按用户备份数据,导入进一个新建的实例。

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服