注册
达梦数据库单机安装
技术分享/ 文章详情 /

达梦数据库单机安装

肖庚 2026/08/14 114 0 0

单机数据库部署

挂载安装介质

从官网下载对应操作系统版本的数据库安装介质 https://eco.dameng.com/download/
鲲鹏920 是arm架构的。下载后是一个zip文件,解压后会有一个iso文件。
iso 后缀的文件,需要对文件进行挂载

mount -o loop /home/dmdba/dm8_20240514_x86_rh6_64.iso /mnt

数据库软件的安装

1.执行安装命令

在终端进入到安装程序所在文件夹,执行以下命令进行命令行安装
[dmdba@~]#/mnt/dmsetup/DMInstall.bin -i

2.选择安装语言

根据系统配置选择相应语言,输入选项,回车进行下一步。如下所示:
请选择安装语言(C/c:中文E/e:英文)IC/c]:C
解压安装程序…⋯
欢迎使用达梦数据库安装程序

3.验证key文件

可以选择是否输入key的文件路径。不输入则进入下一步安装,输入Key文件路径,安装程序将显示Key文件的详细信息。

4.输入时区

可以选择21 或者默认 就是中国的时区

5.选择安装类型

安装类型:
1典型安装
2服务器
3 客户端
4 自定义
请选择安装类型的数字序号[1典型安装]:1
所需空间:1010M

6.选择安装路径

输入数据库软件的安装路径,不输入则使用默认路径,默认值为$HOME/dmdbms

7.安装小节

确认之前选择的安装信息是否正确

8.安装

是否确认安装?(Y/y:是 N/n:否):Y
[INFO] 安装达梦数据库完成。
请以root系统用户执行命令:
/opt/dmdbms/script/root/root_installer.sh

9.注册数据库服务
当安装进度完成时将会弹出对话框,提示使用root系统用户执行相关命令。用户可根据对话框的说明完成相关操作,之后可关闭此对话框,点击“完成”按钮结束安装。如下所示:

[dmdba@~]# su- root
密码:<输入密码>
[root@~]#/opt/dmdbms/script/root/root_installer.sh
移动/opt/dmdbms/bin/dm_svc.conf 到/etc目录修改服务器权限
创建DmAPService服务
Created symlink from /etc/systemd/system/multiuser.target.wants/DmAPService.serviceto
/usr/lib/systemd/system/DmAPService.service
创建服务(DmAPService)完成启动DmAPService服务
注意:
严禁使用root用户安装数据库及数据库相关操作。必须使用dmdba用户执行安装以及数据库相关操作。

二级标题初始化实例

EXTENT_SIZE 数据文件使用的簇大小(16),可选值:16, 32, 64
PAGE_SIZE 数据页大小(8),可选值:4, 8, 16, 32 单位是k
LOG_SIZE 日志文件大小(256),64~2048单位为:M
CASE_SENSITIVE 大小敏感(Y),可选值:Y/N,1/0
CHARSET/UNICODE_FLAG 字符集(0),可选值:0[GB18030],1[UTF-8],2[EUC-KR]
LENGTH_IN_CHAR VARCHAR类型长度是否以字符为单位(N),可选值:Y/N,1/0

注意:
GB18030编码向下兼容GBK和GB2312,兼容的含义是不仅字符兼容,而且相同字符的编码也相同。
UTF-8是用以解决国际上字符的一种多字节编码,它对英文使用8位(即一个字节),中文使用24为(三个字节)来编码。
GB18030数字字母占1个字节,普通汉字占2个字节,部分繁体及少数民族文字占4字节,Unicode在达梦中采用UTF-8编码格式,欧洲的字母字符占1到2个字节,亚洲的大部分字符占3个字节,附加字符为4个字节。如果只存储中文和字母数字,一般来说GB18030更节省空间一些。
数据页 32k 每个字符类型字段实际最大长度 8188 字节

dminit PATH=/dmdata  PAGE_SIZE=32 EXTENT_SIZE=32 LOG_SIZE=2048 CHARSET=0 CASE_SENSITIVE=1 SYSDBA_PWD=Dameng123 SYSAUDITOR_PWD=Dameng123

创建实例服务

windows系统自动创建这个服务,linux需要手动创建这个服务。

su - root
密码:<输入密码>
[root@~]#/opt/dmdbms/script/root/dm_service_installer.sh -t dmserver -dm_ini
/opt/dmdbms/data/DAMENG/dm.ini -p DMSERVER
Created symlink from /etc/systemd/system/multi-user.target.wants/DmServiceDMSERVER.service to /usr/lib/systemd/system/DmServiceDMSERVER.service.
创建服务(DmServiceDMSERVER)完成

启动数据库服务

[dmdba@~]#/opt/dmdbms/bin/DmServiceDMSERVER start
Starting DmServiceDMSERVER: [ OK ]

数据库参数优化调整

脚本名字类似 AutoParaAdj5.6_dm8 ,一般不直接执行,而是把需要调整的参数输出,并且记录下来,方便以后上线测试评审。
需要调整 这几个参数,按实际的服务器调整。

mem_per int:=  80;
v_mem_mb int:= 64000;
v_cpus int:= 64;

调整后在disql执行

SQL> set serveroutput on
SQL> start /home/dmdba/AutoParaAdj5.6_dm8.sql
把执行的结果拷贝出来,后再把结果执行一遍

一些内存参数的说明:

  • MEMORY_POOL : 查看v$mem_pool尽量保持每个池自持,減少池外分配。
  • MEMORY_N_POOLS :高并发下建议调大,建议是质数,減少临界区冲突
  • MEMORY_TARGET: 实例级别的共享内存区域,空闲是否释放多余占用内存的控制值,要求 >= MEMORY POOL
  • BUFFER: 推荐值:为物理内存的50%左右;具体是否够用,可以通过查看 v$bufferpool分析命中率,不宜低于75%。
  • BUFFER_POOLS: 高并发下建议调大,建议是质数。
  • RECYCLE: 一般设置为1000即可,内存比较小的虚拟机500也行,具体是否足够,需要根据实例运行后的对应的recycle的缓冲区的命中率和相关信息进行判断的。
  • RECYCLE_POOLS: 默认即可或稍调大
  • SORT_BUF_SIZE: 不需要设置太大,可以通过查看V$mtab_used_history 来确定是否够用。
  • SORT_BUF_GLOBAL_SIZE: 需要根据系统并发、和 SORT_FLAG的配置来看
  • HJ_BUF_GLOBAL_SIZE: 该参数不需要设置太大,哈希连接所用的内存,一般都不大。
  • HJ_BUF_SIZE: 单个HASH操作所用内存大小,不够我就和磁盘做交互
  • HAGR_BUF_GLOBAL_SIZE: 该参数需要设置的足够大,特别是系统中有分组、集合运算、统计信息、DISTINCT、临时表、TOP等操作

一些实例参数参数说明:

  • MAX SESSION: 默认100 根据内存和业务设置 内存64GB,MAX_SESSION=300-800;内存512GB,MAX_SESSION=3000-5000;
  • OLAP_FLAG: 默认0,OLTP类型的应用建议设置2,OLAP类型应用建议设置为1
  • COMPATIBLE_MODE: 默认0
    0:不兼容
    1:兼容SQL92标准
    2:兼容 ORACLE
    3:兼容MS SQL SERVER
    4:兼容 MYSQL,
    5:兼容DM6
    6:兼容 TERADATA.
  • DATETIME_EMT_MODE: 默认0,是否兼容ORACLE 日期格式。0:不兼容;1:兼容注:此参数被动态修改后仅影响新生成的会话。

开启归档日志

ARCH_FILE SIZE 默认 128M 推荐 2048M (本地单个归档文件大小)
ARCH SPACE_LIMIT 默认 0 推荐 102400M (归档大小上限,0表示无限制(尽量保存2个全量的备份的日志)

ALTER DATABASE MOUNT;
ALTER DATABASE ARCHIVELOG;
ALTER DATABASE ADD ARCHIVELOG 'DEST=/dm8/dmarch, TYPE=LOCAL, FILE_SIZE=1024, SPACE_LIMIT=51200';
ALTER DATABASE OPEN;

开启sql log日志

打开 SQL 日志会对系统的性能会有较大影响,一般用于查错和调优的时候才会打开,默认情况下系统是关闭 SQL 跟踪日志的。若需要 SQL 跟踪日志但对日志的实时性没有严格的要求,又希望系统有较高的效率,可以设置 sqllog.ini 参数 SQL_TRACE_MASK 和 MIN_EXEC_TIME 只记录关注的相关记录,减少日志总量;设置 sqllog.ini 参数 ASYNC_FLUSH 打开 SQL 日志异步刷盘功能,以提高系统性能。

1.创建目录
su - dmdba
mkdir -p /dm8/dmsqllog
2.检查 SVR_LOG 参数。
select * from v$parameter where name like ‘SVR_LOG%’;
3.修改实例路径下 sqllog.ini 文件如下
说明:设置sql日志为异步,按照文件大小进行切换,每个1024M,20个文件循环写,具体大小设置要根据现场实际情况
如果内存充足(≥32G),参数 BUF_TOTAL_SIZ、BUF_SIZE 和 BUF_KEEP_CNT 建议做如下调整。
(1)参数 BUF_TOTAL_SIZE 值由 10240 修改为 1024000;
(2)参数 BUF_SIZE 值由 1024 修改为 10240;
(3)参数 BUF_KEEP_CNT 值由 6 修改为 20。

cd /data/dmdata/DAMENG
vi sallog.ini

BUF_TOTAL_SIZE = 10240 #SQLs Log Buffer Total Size(K)(1024~1024000)
BUF SIZE = 1024 #SQLs Log Buffer Size(K)(50~409600
BUF_KEEP_CNT = 6 #SQLs Log buffer keeped count (1~100)
[SLOG ALL]
FILE_PATH =/dm8/dmsqllog #sq|日志生成路径
PART STOR = 0
SWITCH MODE = 2
SWITCH LIMIT = 1024 #每个日志文件1024M
ASYNC FLUSH = 1
FILE_NUM =20 #循环收集20个可以根据实际情况做调整
ITEMS = 0
SOL_TRACE_MASK =1
MIN EXEC TIME = 0
USER MODE = 0
USERS =

4.执行调用存储过程生效配置文件,并开启 SQL LOG 日志。
SP_REFRESH_SVR_LOG_CONFIG();
sp_set_para_value(1,'SVR_LOG',1);

--检查 SVR_LOG 参数。
select * from v$parameter where name like ‘SVR_LOG’;

5.检查日志生成情况。
ls /dm8/dmsqllog

数据备份

压缩参数建议 1 并行参数建议 2-4 (表空间只有一个数据文件是没有作用的)

创建作业环境
SP_INIT_JOB_SYS(1);

每周六晚上 23:30 定时全库备份
call SP_CREATE_JOB('back_full',1,0,'',0,0,'',0,'back_full');
call SP_JOB_CONFIG_START('back_full');
call SP_ADD_JOB_STEP('back_full', 'back_full', 6, '01000000/data/dm/dmbak', 1, 2, 0, 0, NULL, 0);
call SP_ADD_JOB_SCHEDULE('back_full', 'back_full', 1, 2, 1, 64, 0, '23:00:00', NULL, '2026-08-03 15:00:56', NULL, '');
call SP_JOB_CONFIG_COMMIT('back_full');

每周一、周二、周三、周四、周五、周日晚上 23:30 定时增量备份
call SP_CREATE_JOB('backup_inc',1,0,'',0,0,'',0,'backup_inc');
call SP_JOB_CONFIG_START('backup_inc');
call SP_ADD_JOB_STEP('backup_inc', 'backup_inc', 6, '11000000/data/dm/dmbak|/data/dm/dmbak', 1, 2, 0, 0, NULL, 0);
call SP_ADD_JOB_SCHEDULE('backup_inc', 'backup_inc', 1, 2, 1, 63, 0, '23:00:00', NULL, '2026-08-03 15:05:56', NULL, '');
call SP_JOB_CONFIG_COMMIT('backup_inc');


call SP_CREATE_JOB('backup_inc',1,0,'',0,0,'',0,'backup_inc');
call SP_JOB_CONFIG_START('backup_inc');
call SP_ADD_JOB_STEP('backup_inc', 'backup_inc', 6, '11000000/data/DAMENG/bak|/data/DAMENG/bak', 1, 2, 0, 0, NULL, 0);
call SP_ADD_JOB_SCHEDULE('backup_inc', 'backup_inc', 1, 2, 1, 63, 0, '23:30:00', NULL, '2026-07-11 22:00:00', NULL, '');
call SP_JOB_CONFIG_COMMIT('backup_inc');

每天 00:00 删除 15 天以前的数据。
call SP_CREATE_JOB('JOB_DEL_BAK_TIMELY',1,0,'',0,0,'',0,'JOB_DEL_BAK_TIMELY');
call SP_JOB_CONFIG_START('JOB_DEL_BAK_TIMELY');
call SP_ADD_JOB_STEP('JOB_DEL_BAK_TIMELY', 'JOB_DEL_BAK_TIMELY', 0, 'call SF_BAKSET_BACKUP_DIR_ADD(''DISK'', ''/data/dm/dmbak'');
CALL SP_DB_BAKSET_REMOVE_BATCH(''DISK'', NOW()-15);', 1, 2, 0, 0, NULL, 0);
call SP_ADD_JOB_SCHEDULE('JOB_DEL_BAK_TIMELY', 'JOB_DEL_BAK_TIMELY', 1, 1, 1, 0, 0, '23:00:00', NULL, '2026-07-27 22:06:13', NULL, '');
call SP_JOB_CONFIG_COMMIT('JOB_DEL_BAK_TIMELY');

用户及空间管理

空间规划:
每个非数据库系统默认用户均有数据自己的独立表空间,每个表空间由多个数据文件组成,建议每个表空间文件大小为500-800G,不设置自动扩展。表空间使用率过高,则通过添加数据文件方式进行解决。同时数据和索引分两个不同的表空间进行存储数据。

用户的创建:

如创建dmmonitor用户,用来进行运维管理:

create user "DMMONITOR" identified by "Dameng @123"default_tablespace use_td  limit failed_login_attemps 3, password_lock_time 1, password_grace_time 10; 
grant "PUBLIC", "RESOURCE", 'SOI", 'VTI" to "DMMONITOR";

用户的密码也需要符合密码强度,最好包含大小写字符,特殊字符和数字。

https://eco.dameng.com

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服