注册
数据库配置文件
技术分享/ 文章详情 /

数据库配置文件

夏雨雨雨雨雨 2026/07/31 223 0 0

本次主要学习了四个数据库文件:服务器端核心参数文件 dm.ini、客户端服务配置文件 dm_svc.conf、归档日志机制以及 SQL 日志的启用控制。

一、dm.ini相关参数含义

1、文件位置与作用

dm.ini是DM数据库启动所必需的配置文件,通过配置该文件可以设置数据库服务器的各种功能和性能选项。
它默认和数据文件存放在同一目录,通常位于 $DM_HOME/data/<数据库名>/dm.ini。
使用vi /data/dmdata1/DAMENG/dm.ini查询到dm.ini文件。
一台服务器部署多个达梦实例时,每个实例拥有独立data库目录,对应独立 dm.ini,互不干扰;如下图中守护集群实例GRP1_RT_01,集群内每台主机实例均有专属 dm.ini,集群参数需在所有节点统一配置,否则主备同步异常。
image.png

2、内存管理参数

image.png

3、并发与线程参数

image.png

4、检查点与 I/O 优化参数

image.png

5、兼容性与 SQL 行为参数

image.png

6、dm.ini运维配套参数

(1)集群守护专属参数

INSTANCE_NAME:实例名称,主备集群内所有节点名称不可重复,用于守护进程识别节点身份(示例 GRP1_RT_01);
DW_PORT:守护进程通信端口,默认 5237,集群节点间端口需互通;
MAL_HOST/MAL_PORT:主备同步通信地址端口,主备数据同步核心参数,配置错误会导致主备断连、日志堆积。

(2)备份恢复相关参数

BAK_PATH:默认备份文件存储路径,建议修改至独立磁盘分区;
RLOG_PATH:在线日志存储目录,生产必须单独高速磁盘,避免 IO 争抢。

(3)慢查询、性能监控参数

SLOW_LOG_INTERVAL:慢查询日志采集间隔,配合 SQL 日志定位慢 SQL;
TRACE_MASK:线程跟踪掩码,故障死锁、阻塞排查时开启。

二、dm_svc.conf 客户端配置文件

dm_svc.conf 是客户端工具(如 disql)和编程接口(JDBC/ODBC)使用的配置文件,用于定义服务名映射、连接策略及负载均衡规则。

1、文件位置与作用

(1)在Windows系统下:

32 位的 DM 安装在 Win32 操作平台下,位于%SystemRoot%\system32目录;
64 位的 DM 安装在 Win64 操作平台下,位于%SystemRoot%\system32目录;

(2)在Linux系统下:

使用语句可查询到:位于/etc目录下
image.png

2、重要参数解释

image.png

3、配置示例

#全局设置
TIMEZONE=+08:00
LANGUAGE=chinese
CLUSTER=DSC
#定义DSC集群服务名
DSC_CLUSTER=(192.168.1.10:5236,192.168.1.11:5236,192.168.1.12:5236)
EP_SELECTOR=First
#定义读写分离服务
RW_SERVICE=(192.168.1.20:5236,192.168.1.21:5236)
RW_SEPARATE=1

4、多场景完整配置模板

模板1:单机业务通用配置

TIMEZONE=+08:00
LANGUAGE=chinese
CLUSTER=Normal
#单机服务名,应用可直接连接DMSERVER替代IP端口
DMSERVER=(127.0.0.1:5236)
LOGIN_TIMEOUT=30

模板2:主备守护集群故障自动切换(Failover)

TIMEZONE=+08:00
LANGUAGE=chinese
CLUSTER=Failover
#主库+备库地址列表
DM_GRP=(192.168.1.10:5236,192.168.1.11:5236)
EP_SELECTOR=First
SWITCH_TIMEOUT=2000
LOGIN_TIMEOUT=40

模板3:读写分离业务模板(一主两备)

TIMEZONE=+08:00
LANGUAGE=chinese
CLUSTER=Failover
RW_SEPARATE=1
#第一个IP为主库(写),后续为备库(读)
RW_DB=(192.168.1.20:5236,192.168.1.21:5236,192.168.1.22:5236)
EP_SELECTOR=Random

模板4:DSC 共享存储集群模板

TIMEZONE=+08:00
LANGUAGE=chinese
CLUSTER=DSC
DSC_CLUSTER=(192.168.1.10:5236,192.168.1.11:5236,192.168.1.12:5236)
EP_SELECTOR=Random
LOGIN_TIMEOUT=30

5、常见客户端连接故障排查

应用报无法解析服务名:dm_svc.conf 文件路径错误、语法写错(逗号、括号中英文混淆);
主库宕机客户端不自动切备库:CLUSTER 未配置 Failover、SWITCH_TIMEOUT 超时时间过长;
读写分离不生效:RW_SEPARATE=0 未开启、服务名列表第一个 IP 不是主实例;
跨地区连接频繁超时:调大 LOGIN_TIMEOUT 参数,检查防火墙 5236 端口连通性。

三、归档文件配置解释

归档日志是实施物理备份与时间点恢复(PITR)的必要条件。生产环境必须开启归档,否则将无法进行热备份。热备份前提:无归档仅支持冷备份(停机备份),业务中断;开启归档可在线热备份,7×24小时业务不停机。时间点恢复 PITR:数据库误删表、误更新数据,依靠归档日志恢复到故障前任意时间点。备集群同步基础:主库生成归档日志实时同步备库,保证主备数据一致;未开启归档,主备无法同步数据。

1、归档开启步骤(需在 MOUNT 状态下操作)

– 1. 关闭数据库
SHUTDOWN IMMEDIATE;
– 2. 启动到 MOUNT 状态(不打开数据文件)
STARTUP MOUNT;
– 3. 开启归档模式
ALTER DATABASE ARCHIVELOG;
– 4. 添加本地归档配置
ALTER DATABASE ADD ARCHIVELOG
‘TYPE=LOCAL, DEST=/dm8/arch, FILE_SIZE=128, SPACE_LIMIT=2048, ARCH_FLUSH_BUF_SIZE=16’;
– 5. 打开数据库
ALTER DATABASE OPEN;

2、归档参数含义

image.png

3、日常维护命令

– 查看所有归档文件、归档起止 LSN 号
SELECT ARCH_ID, ARCH_NAME, FIRST_LSN, NEXT_LSN, ARCH_TIME FROM V$ARCHIVED_LOG ORDER BY ARCH_ID DESC;
– 查看归档磁盘空间使用率(Linux 组合命令)
df -h /dm8/arch

统计归档目录占用空间

du -sh /dm8/arch
– 手动切换归档文件(生成新日志)
ALTER SYSTEM SWITCH LOGFILE;
– 自动清理归档策略(配合定时任务 crontab)。备份完成后,删除备份时间点之前的归档,避免磁盘溢出:

保留最近7天归档,7天前归档自动删除

find /dm8/arch -mtime +7 -name “*.arc” -delete
– 归档延迟监控(主备集群专用)
– 查看主备归档同步延迟
SELECT ARCH_NAME, APPLIED_LSN, NEXT_LSN FROM V$ARCHIVE_DEST_STATUS;

4、归档常见故障与解决方案

归档磁盘满,数据库挂起:临时扩容磁盘、手动删除过期归档,重启数据库;后续调整 SPACE_LIMIT 参数 + 定时清理脚本;
归档文件损坏,无法恢复:定期执行热备份,备份文件异地存储;配置双归档路径(LOCAL 多 DEST);
主备归档同步延迟高:增大 ARCH_FLUSH_BUF_SIZE,归档目录更换高速 SSD 磁盘,检查集群 MAL 通信端口带宽。

四、SQL 日志的开启与关闭

SQL 日志用于记录服务器端执行的所有 SQL 语句,是性能分析和问题定位的重要工具。生产环境默认关闭,开启后会带来一定的性能开销。

1、SQL 日志使用场景区分

开发测试环境:全开 SQL 日志,调试业务 SQL、定位语法错误;
生产故障排查:临时开启,抓取慢 SQL、异常 DML/DDL 操作、删表删库高危操作;
安全审计场景:长期开启过滤 DDL、DROP、ALTER 高危语句,留存操作日志合规审计;
性能压测场景:配合 SQL_LOG_MIN_EXEC_TIME 过滤耗时 SQL,优化索引与语句。

2、核心参数

image.png

3、动态启停 + 静态永久开启两种方案

方案 1:在线动态启停(推荐,无需重启数据库)

– 开启SQL日志,只记录执行超过500ms的SQL,仅记录DDL语句
SP_SET_PARA_VALUE(1, ‘SVR_LOG’, 1);
SP_SET_PARA_VALUE(1, ‘SQL_LOG_MASK’, 1);
SP_SET_PARA_VALUE(1, ‘SQL_LOG_MIN_EXEC_TIME’, 500);
– 关闭SQL日志
SP_SQL_LOG_ENABLE(0);
– 查询当前SQL日志全部参数状态
SELECT PARA_NAME, PARA_VALUE, PARA_TYPE FROM V$DM_INI WHERE PARA_NAME LIKE ‘SVR_LOG%’ OR PARA_NAME LIKE ‘SQL_LOG%’;

方案 2:永久静态开启(修改 dm.ini,重启实例生效,仅审计场景使用)

直接编辑 dm.ini 文件,修改以下参数并重启数据库:
SVR_LOG = 1;SQL_LOG_MASK = 1;SQL_LOG_MIN_EXEC_TIME = 500;SVR_LOG_FILE_NUM = 20;SVR_LOG_FILE_SIZE = 256

4、日志过滤与存储位置

为避免日志文件过快增长,可通过以下参数精细化控制:
SQL_LOG_MASK:记录类型掩码,默认 7(记录全部:DDL+DML+DCL)。可按位设置:1=DDL,2=DML,4=DCL。
SQL_LOG_MIN_EXEC_TIME:仅记录执行时间超过指定毫秒的 SQL,适合抓取慢查询。
日志默认存储在实例目录下的 log 子目录,例如:/dm8/data/DMSERVER/log/dmsql_*.log
运维建议:开启日志时务必设置合理的 SQL_LOG_MIN_EXEC_TIME 和 SVR_LOG_FILE_NUM,并配合定时清理任务,防止磁盘空间被写满。

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服