-- 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
-- 系统信息查询
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不匹配,需要获取到匹配的安装包再执行后续步骤。
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;
确保应用连接处于关闭或备份期间没有数据变更操作。
进入数据库软件安装目录的bin目录下,查看单机服务名,一般为DmServiceDMSERVER
。例如,
cd /opt/dm8/dmdbms/bin
./DmServiceDMSERVER stop
在停止后,可以去log目录下查看日志,是否打印关键字正常退出字样。

在bin目录下执行下述命令,dm.ini位于数据库实例目录内。
./dmserver /data/dmdata/DAMENG/dm.ini
启动后会打印启动日志,检查数据库状态,如果能够正常启动,说明当前数据库状态正常,exit停止数据库即可。如果启动失败则需要排查数据库出了什么问题。
为保证升级可靠性与回退方案并存,需对数据库进行全库物理备份。在备份前需保证dmap服务开启。
默认dmap服务是开启状态,检查dmap服务的状态:ps -ef|grep dmap
。
如果是关闭状态,进入数据库软件安装目录的bin目录下。
cd /opt/dm8/dmdbms/bin
./DmAPService start
备份方式有两种,冷备和热备,推荐使用冷备。
数据库是关闭状态,对是否开启归档无要求。
进入数据库软件安装目录的bin目录下,
./dmrman
RMAN>backup database '/data/dmdata/DAMENG/dm.ini' backupset '/data/dmbackup/bak20250811';
在备份前需保证数据库为启动状态,并且归档模式开启。
-- 登录数据库检查数据库归档模式
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'
# 备份
cp -rpf /data/dmdata/DAMENG /data/dmdata/DAMENG_bak
# 验证文件大小
du -sh /data/dmdata/DAMENG*
进入数据库软件安装目录的上一级目录,
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;
将.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字段信息说明
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
大致思路:
按用户备份数据,导入进一个新建的实例。
文章
阅读量
获赞