注册
达梦数据库配置实操手册
专栏/培训园地/ 文章详情 /

达梦数据库配置实操手册

DM_620859 2026/11/05 52 0 0
摘要

一、dm.ini 参数配置

1.1 含义

  • 每创建一个 DM 数据库,系统就会在数据库目录下自动生成一个 dm.ini 参数文件
  • 本实验环境中它的位置是:/dmdata/data/DMOA/dm.ini,同目录下还有一个dm.ini.dmbak,是 dm.ini 的备份,如果遇到系统崩溃,可以用它恢复 dm.ini 后重启

直接查看参数文件
less /dmdata/data/DMOA/dm.ini
image.png

  • dm.ini 是 DM 数据库启动所必须的配置文件,数据库启动时会读取它,用来设置服务器的各种功能和性能选项。主要配置模块包括:控制文件相关、实例名、内存相关、查询优化相关、redo相关、数据库相关等。

1.控制文件(dm.ctl) 是数据库的“元数据总目录”,记录数据库名、数据文件路径、表空间信息、日志文件位置等核心结构信息。数据库启动时必须读取它,找不到或损坏就无法启动
查看控制文件(dm.ctl)的位置和备份位置
grep -E "CTL_PATH|CTL_BAK_PATH" /dmdata/data/DMOA/dm.ini
image.png
2.实例名
查看当前数据库实例名
grep -E "CTL_PATH|CTL_BAK_PATH" /dmdata/data/DMOA/dm.ini
image.png
3.内存相关控制数据库运行时内存如何分配,直接影响性能和并发能力
MEMORY_POOL:内存池大小,数据库运行的“工作台”
BUFFER:数据缓冲区,缓存磁盘数据页,减少物理 IO;
MAX_SESSIONS:最大会话数,即允许的最大并发连接数;
MEMORY_TARGET:内存总目标上限
grep -E "MEMORY_POOL|BUFFER|MAX_SESSIONS|MEMORY_TARGET" /dmdata/data/DMOA/dm.ini
image.png
4.查询优化相关控制 SQL 优化器行为和并行执行策略,决定查询执行计划的生成方式和执行效率
OPTIMIZER_MODE:优化器模式,1 为新优化器,执行计划更智能;
MAX_PARALLEL_DEGREE:单条 SQL 最大并行度;
PARALLEL_POLICY:并行策略,0 关闭,1 自动,2 手动
grep -E "OPTIMIZER_MODE|PARALLEL_POLICY|MAX_PARALLEL_DEGREE" /dmdata/data/DMOA/dm.ini
image.png
5. Redo 日志记录所有数据修改操作,用于故障恢复和保证事务持久性。相关参数控制日志缓冲区大小、日志包大小等
RLOG_BUF_SIZE:日志缓冲区大小;
RLOG_PKG_MAX_SIZE:单个日志包最大大小
grep -E "RLOG_BUF_SIZE|RLOG_PKG_MAX_SIZE|CKPT_INTERVAL" /dmdata/data/DMOA/dm.ini
image.png
6.数据库相关控制数据库对外服务的基础属性
PORT_NUM:监听端口,客户端通过它连接;
MAX_CONNECTIONS:最大连接数;
COMPATIBLE_MODE:兼容模式,影响 SQL 语法行为
grep -E "PORT_NUM|MAX_CONNECTIONS|COMPATIBLE_MODE" /dmdata/data/DMOA/dm.ini
image.png

1.2 参数的三类属性

image.png

动态参数又分成两种:

  • 动态系统级(PARA_TYPE = SYS):修改后影响所有会话;
  • 动态会话级(PARA_TYPE = SESSION):修改后只影响当前会话以及之后新建的会话,之前已经建立的会话不受影响

1.3 参数修改

1.使用达梦数据库过程函数进行修改
DM 提供了一组系统过程用于在服务器运行期间动态修改参数,按参数的数据类型选择不同的过程:
整型参数SP_SET_PARA_VALUE(scope, 'PARA_NAME', value);
浮点型参数SP_SET_PARA_DOUBLE_VALUE(scope, 'PARA_NAME', value);
字符串型参数SP_SET_PARA_STRING_VALUE(scope, 'PARA_NAME', value);
例1:改一个动态参数,立即生效(改内存 + 改文件)
SP_SET_PARA_VALUE(1, 'SORT_BUF_GLOBAL_SIZE', 2000);
image.png

例2:改一个静态参数,必须重启才生效(只改文件)
SP_SET_PARA_VALUE(2, 'BUFFER', 2000);
image.png

重启后查证: para_value 和 file_value与修改内容 一致
SELECT PARA_NAME, PARA_VALUE, FILE_VALUE, PARA_TYPE
FROM V$DM_INI WHERE PARA_NAME = 'BUFFER';
image.png

2.ALTER SYSTEM 语句
ALTER SYSTEM SET 'LIST_TABLE' = 1 BOTH; -- 内存 + 参数文件(推荐)
ALTER SYSTEM SET 'LIST_TABLE' = 1 MEMORY; -- 只改内存,重启失效
ALTER SYSTEM SET 'LIST_TABLE' = 0 SPFILE; -- 只改文件,重启生效
image.png

3.会话级修改(只影响当前会话)
有些动态参数是会话级的,想让它在当前会话立刻按新值运行、又不动全局配置时,用专门的过程,这类修改只对当前会话和之后新建的会话有效,不影响其他会话,也不写回 dm.ini,断开连接就没了
SF_SET_SESSION_PARA_VALUE('SORT_BUF_SIZE', 50);
image.png
断开连接后无修改内容
image.png

4.直接修改 dm.ini 文件
手动类参数只能用这种方式,静态参数如果不想用存储过程,也可以直接改文件:
写文件时如果填了非法值,DM 的处理规则是:类型不兼容 → 取默认值;小于最小值 → 取最小值;大于最大值 → 取最大值。而通过存储过程动态修改时填非法值,会直接报错。

  1. 编辑参数文件
    vi /dmdata/data/DMOA/dm.ini
    把 BUFFER = 1000 改成 BUFFER = 2000 后保存退出
    image.png
  2. 重启实例使修改生效
    systemctl restart DmServiceDMOA
    image.png
  3. 重启后验证
    grep -n 'BUFFER' /dmdata/data/DMOA/dm.ini
    image.png

二 、dm_svc.conf 客户端连接配置

2.1 含义

  • dm_svc.conf 是达梦的【客户端配置文件】,用来给 DM 的各个接口(JDBC、DPI、DCI 等)和客户端工具提供运行时的连接参数,DM 安装时会自动生成一份初始文件,默认位置:Linux 在 /etc/dm_svc.conf,通过手动添加服务名配置可以实现别名连接、故障重连、读写分离等功能
    image.png

2.2 配置文件dm_svc.conf

一个 dm_svc.conf 分成两个区,顺序不能颠倒,服务配置区的配置项会覆盖全局配置区里同名的配置项:

  • 全局配置区:在最前面,直接写"配置项=(值)",对所有服务名都生效。
  • 服务配置区:以 [服务名] 开头,里面的配置项只对这个服务名生效。
    全局配置区
    TIME_ZONE=(480) # 东八区
    LANGUAGE=(cn)
    服务名定义
    DMOA=(localhost:5234)
    配好之后就可以用服务名连接:
    ./disql SYSDBA/Dameng123@DMOA
    image.png

2.3 常用配置项含义

配置项 缺省值 含义
服务名 无 格式:服务名=(IP[:PORT],IP[:PORT],...)。用来定义一组可连接的库地址
TIME_ZONE 操作系统时区 客户端默认时区,单位分钟,60 表示 +1:00,东八区写作 480。范围 -779~840
LANGUAGE 操作系统语言 帮助信息、错误提示使用的语言。
CHAR_CODE 操作系统编码 客户端编码,影响帮助信息和错误提示,必须与客户端编码一致。取值有 PG_UTF8、PG_GBK、PG_GB18030、PG_BIG5、PG_EUC_JP、PG_EUC_KR、PG_ISO_8859_1 等
KEYWORDS 无 屏蔽数据库关键字。若 SQL 里把关键字当普通单词用会报错,可在此屏蔽
LOGIN_MODE 4 优先登录服务器模式:0 = PRIMARY>NORMAL>STANDBY;1 = 只连主库;2 = 只连备库;3 = STANDBY>PRIMARY>NORMAL;4 = NORMAL>PRIMARY>STANDBY
SWITCH_TIMES 1 指定自动重连次数。如果无法成功连接到单节点数
据库,则按照SWITCH_TIMES指定次数尝试自动重连
SWITCH_INTERVAL 200 服务器之间的切换时间间隔(毫秒)
EP_SELECTOR 0 连接数据库时采用何种模型建立连接。0:依次选取列表中的不同节点建立连接,使得所有连接均匀地分布在各个节点上;1:选择列表中最前面的节点建立连接,只有当前节点无法建立连接时才会选择下一个节点进行连接
AUTO_RECONNECT 0 连接异常后的自动重连/回切策略,0:关闭连接;1:当连接发生异常时自动切换到其他库,无论切换成功还是失败都会抛一个SQLEXCEPTION,用于通知上层应用进行事务执行失败时的相关处理;2:配合EP_SELECTOR=1使用,如果服务名列表前面的
节点恢复了,将当前连接切换到前面的节点上

三、SQL 日志的开启与查看

3.1 含义

SQL 日志记录数据库各会话上用户执行的 SQL 语句、参数信息、错误信息等,主要用于分析错误、分析性能问题,例如筛出执行慢的 SQL 做优化,默认是关闭状态
SELECT PARA_NAME, PARA_VALUE FROM V$DM_INI WHERE PARA_NAME='SVR_LOG';
image.png
开关参数:dm.ini 中的 SVR_LOG
取值 含义
0 关闭 SQL 日志(默认)
1 打开,并按照 sqllog.ini 中的配置来记录 SQL 日志
2 打开,按文件中记录数量切换日志文件,日志记录为详细模式
3 打开,不切换日志文件,日志记录为简单模式,只记录时间和原始语句
image.png

3.2 配置文件 sqllog.ini

sqllog.ini,它由两部分组成:前七行是全局缓存配置,后面是各模式配置区
所在位置:/dmdata/data/DMOA/sqllog.ini
image.png
全局缓存配置
BUF_TOTAL_SIZE = 10240 # SQL 日志 缓冲区大小,单位 KB
BUF_SIZE = 1024 # 单个SQL 日志缓冲区大小,单位 KB
BUF_KEEP_CNT = 6 # 系统保留的 SQL 日志缓存块个数,范围 1~100
PARAMS_DELAY = 0 #SQL 日志参数数据是否延迟上报
PARAMS_BUF_MAX = 512 #SQL 日志参数数据缓冲区最大大小,单位 KB
CLOSE_IF_WRITE_ERROR = 1 #写日志出错时是否关闭 SQL 日志功能,1关闭,0继续尝试
FILE_NAME_FLAG = 1 #日志文件命名模式
[SLOG_ALL] # 模式配置区,模式名为 SLOG_ALL所有 SQL 的通用记录规则
FILE_PATH = ../log # 日志文件存放目录
PART_STOR = 0 # 是否按条件分区存储:0 否;1 按用户分文件
SWITCH_MODE = 2 # 文件切换模式:0 不切换 / 1 按数量 / 2 按大小 / 3 按间隔
SWITCH_LIMIT = 128 # 切换阈值,含义随 SWITCH_MODE 变化
ASYNC_FLUSH = 1 # 是否异步刷盘:0 同步(影响性能);1 异步
FILE_NUM = 5 # 一共保留几个日志文件,超出后轮换覆盖
ITEMS = 0 # 一条日志记录哪些内容,0 表示记录全部信息
SQL_TRACE_MASK = 1 # 记录哪些类型的语句(冒号分隔)
MIN_EXEC_TIME = 0 # 只记录执行时间超过多少毫秒的语句
USER_MODE = 0 # 是否按用户过滤:0 否;1 是
USERS = # 按用户过滤时指定的用户列表
EXECTIME_PREC_FLAG = 0 # 执行时间单位:0 毫秒
[SLOG_ERROR] 出错的 SQL
[SLOG_DDL] DDL 语句
[SLOG_LONG_SQL] 超长耗时的慢 SQL

3.3 日志文件查看与操作

#开启日志
SP_SET_PARA_VALUE(1, 'SVR_LOG', 1);
确认开关状态
SELECT PARA_NAME, PARA_VALUE FROM V$DM_INI WHERE PARA_NAME = 'SVR_LOG';
image.png
进入日志目录,按时间倒序列出
cd /home/dmdba/dmdbms/log
tail -f dmsql_DMOA_20260921_144451.log
image.png
只看包含某条 SQL 的记录
grep -n 'select' dmsql_DMOA_20260921_144451.log | head -20
image.png

统计日志里一共有多少条记录
wc -l dmsql_DMOA_20260921_144451.log
image.png
#关闭日志
SP_SET_PARA_VALUE(1, 'SVR_LOG', 0);
SELECT PARA_VALUE FROM V$DM_INI WHERE PARA_NAME = 'SVR_LOG';

四、 归档配置

4.1 含义

通过归档把 Redo 日志完整地保留下来,实现联机备份、增量备份,能把数据库恢复到任意时间点。实时主备、读写分离、DSC 集群的数据同步,全都建立在归档之上

4.2 归档类型

ARCH_TYPE 名称 说明
LOCAL 本地归档 把 Redo 日志写到本地磁盘上的归档文件里
REALTIME 实时归档 在 Redo 日志写入联机日志前,通过MAL系统发送REDO日志到远程服务器
SYNC 同步归档 同步方式归档,主库在归档日志刷盘后,主库等待备库确认
ASYNC 异步归档 异步发送,可配合定时器按策略发送,对主库影响小
TIMELY 即时归档 在REDO日志写入联机日志文件后,再通过MAL系统将REDO日志发送到备库
REMOTE 远程归档 主要用于 DMDSC 集群内部实例之间互备,归档目标是单个实例
RAFT RAFT 归档 通过 RAFT 归档方式向备库同步数据

4.3 配置文件dmarch.ini

#查看配置文件
cat /dmdata/data/DMOA/dmarch.ini
image.png
[ARCHIVE_LOCAL1] # 归档名
ARCH_TYPE = LOCAL # 归档类型:本地归档
ARCH_DEST = /dmdata/arch # 归档文件存放路径
ARCH_FILE_SIZE = 1024 # 单个归档文件大小,单位 MB,范围 64~2048,默认 1024
ARCH_SPACE_LIMIT = 10240 # 归档空间上限,单位 MB,0 表示不限制
ARCH_FLUSH_BUF_SIZE = 2 # 归档刷盘缓存大小,单位 MB,范围 0~128
ARCH_HANG_FLAG = 1 # 本地归档写入失败时是否挂起服务器:0 不挂起 / 1 挂起

归档状查看与修改

  1. 命令行方式,用 SYSDBA 登录 disql 后执行:
    #查看是否开启归档模式
    select arch_mode from v$database;
    #目前已经开启了归档模式
    image.png
    #将数据库切换为 MOUNT 状态:归档模式的切换无法在 OPEN 状态下进行,需先挂载数据库
    ALTER DATABASE MOUNT;
    #关闭归档模式
    ALTER DATABASE NOARCHIVELOG;
    ALTER DATABASE OPEN;
    #再次查看状态目前是已关闭
    image.png
    #重新开启归档模式
    ALTER DATABASE MOUNT;
    ALTER DATABASE ARCHIVELOG;
    ALTER DATABASE OPEN;
    image.png
    image.png

2.通过 dm.ini查看修改ARCH_INI状态
查看归档状态
grep -n "ARCH_INI" /dmdata/data/DMOA/dm.ini
目前是已开启的状态
image.png
vim /dmdata/data/DMOA/dm.ini # 1改为0
image.png
重启实例
systemctl restart DmServiceDMOA
#再次查看验证已经关闭

image.png

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服