注册
达梦数据库参数修改
技术分享/ 文章详情 /

达梦数据库参数修改

DM_336625 2026/06/18 429 0 0

一、参数类型详解

达梦数据库的参数分为三种类型,不同类型的参数,其修改方式和生效机制不同:

参数类型 TYPE值 修改方式 生效时机 影响范围 典型参数
动态(系统级) SYS 在线修改 立即生效 所有会话 MEMORY_TARGET
动态(会话级) SESSION 在线修改 立即生效<br />(仅影响新会话) 当前会话及新会话 HAGR_HASH_SIZE
静态 IN FILE 修改配置文件 重启后生效 全局 COMPATIBLE_MODE
手动 READ ONLY 只能手动编辑文件 重启后生效 全局 PAGE_SIZE(初始化时设定)

补充说明

  • SYS参数:系统级动态参数,修改后立即对所有会话(包括当前会话)生效
  • SESSION参数:会话级动态参数,修改后只影响未来的新会话,已存在的会话不受影响
  • IN FILE参数:静态参数,修改后必须重启数据库实例才能生效
  • READ ONLY参数:只读参数,通常是在数据库初始化时设定的,运行期间无法通过SQL修改,只能手动编辑dm.ini文件并重启

1.1 如何查看参数类型

-- 方法1:使用V$PARAMETER视图(兼容Oracle) SELECT NAME, TYPE, VALUE, SYS_VALUE, FILE_VALUE FROM V$PARAMETER WHERE NAME = 'BUFFER'; -- 方法2:使用V$DM_INI视图(达梦原生) SELECT PARA_NAME, PARA_TYPE, PARA_VALUE FROM V$DM_INI WHERE PARA_NAME = 'BUFFER';

查询结果中的 TYPEPARA_TYPE 字段会显示参数类型:

TYPE值 含义 说明
SYS 动态系统级 修改立即生效,影响所有会话
SESSION 动态会话级 修改立即生效,仅影响新会话
IN FILE 静态 修改后需要重启
READ ONLY 手动/只读 运行时不可修改

二、修改参数的多种方式

2.1 使用ALTER SYSTEM命令修改(推荐)

这是最常用、最标准的修改方式,语法与Oracle类似但略有差异:

ALTER SYSTEM SET '<参数名>' = <值> [DEFERRED] [MEMORY|BOTH|SPFILE];

参数说明

  • MEMORY:只修改内存中的值,重启后失效
  • SPFILE:只修改dm.ini文件中的值,需要重启生效
  • BOTH:同时修改内存和配置文件(推荐,永久生效)
  • DEFERRED:延迟生效(仅对部分参数有效)

使用示例

-- 动态参数:同时修改内存和配置文件,立即永久生效 ALTER SYSTEM SET 'UNDO_RETENTION' = 90 BOTH; -- 静态参数:只修改配置文件,需要重启 ALTER SYSTEM SET 'COMPATIBLE_MODE' = 2 SPFILE; -- 只修改内存(临时生效,用于测试) ALTER SYSTEM SET 'BUFFER' = 8000 MEMORY;

2.2 使用系统存储过程修改

达梦提供了多个系统过程用于参数修改:

SP_SET_PARA_VALUE(修改整型参数)

SP_SET_PARA_VALUE(scope int, paraname varchar(256), value bigint);
  • scope = 1:修改内存+配置文件(仅限动态参数),立即永久生效
  • scope = 2:只修改配置文件(动态和静态都可以),静态参数需重启
-- 修改动态参数(立即永久生效)
SP_SET_PARA_VALUE(1, 'UNDO_RETENTION', 90);

-- 修改静态参数(只改文件,需重启)
SP_SET_PARA_VALUE(2, 'COMPATIBLE_MODE', 2);

SP_SET_PARA_STRING_VALUE(修改字符串参数)

SP_SET_PARA_STRING_VALUE(scope int, paraname varchar(8187), value varchar(8187));
-- 修改字符串类型的参数
SP_SET_PARA_STRING_VALUE(2, 'INSTANCE_NAME', 'DMSERVER01');

SP_SET_PARA_DOUBLE_VALUE(修改浮点型参数)

SP_SET_PARA_DOUBLE_VALUE(scope int, paraname varchar(8187), value double);

SF_SET_SESSION_PARA_VALUE(修改会话级参数)

-- 只影响当前会话 SF_SET_SESSION_PARA_VALUE('HAGR_HASH_SIZE', 2000000);

2.3 直接编辑dm.ini文件

适用于所有参数类型,但必须重启数据库才能生效

文件位置

$DM_HOME/data/<数据库名>/dm.ini # 例如:/dm8/data/DAMENG/dm.ini

修改步骤

  1. 关闭数据库实例
  2. 备份原dm.ini文件:cp dm.ini dm.ini.bak
  3. 使用vi等文本编辑器修改参数值
  4. 保存文件
  5. 启动数据库实例
# 查看当前参数值 cat dm.ini | grep -i "BUFFER" # 修改参数 vi dm.ini # 将 BUFFER = 8000 改为 BUFFER = 10000 # 重启数据库 DmServiceDMSERVER restart

2.4 使用Console控制台工具

达梦提供的Console图形化工具也可以修改dm.ini参数,修改后需要重启实例生效。

三、参数查询方法

3.1 使用SHOW命令

-- 查看特定参数 SHOW PARAMETER 'BUFFER'; -- 查看包含某关键词的所有参数 SHOW PARAMETER LIKE '%MEMORY%';

3.2 查询系统视图

-- 查看所有参数 SELECT * FROM V$PARAMETER; -- 查看特定类型参数 SELECT NAME, TYPE, VALUE FROM V$PARAMETER WHERE TYPE = 'SYS'; -- 查看内存中的当前值 vs 文件中的值 SELECT NAME, VALUE AS MEMORY_VALUE, FILE_VALUE, TYPE FROM V$PARAMETER WHERE NAME = 'BUFFER';

四、集群环境下的参数修改

4.1 主备集群参数同步

达梦主备集群中,备库可以通过参数 INI_SYNC 控制是否从主库同步INI参数:

-- 查看INI_SYNC参数 SELECT * FROM V$DM_INI WHERE PARA_NAME = 'INI_SYNC';

INI_SYNC参数说明

  • 取值范围:0~1440(单位:分钟)
  • 0:不开启自动同步
  • 1(默认):备库定期从主库同步INI参数
  • 该参数也控制主备切换时,新主库是否向备库强制同步INI参数

集群参数修改注意事项

  • 动态参数:主库修改后,需在各备库上分别执行修改命令
  • 静态参数:需要在主库和各备库上分别修改dm.ini文件并分别重启
  • INI_SYNC=1,动态参数的配置文件值会自动同步,但内存值仍需备库单独设置

4.2 推荐做法

对于集群环境,建议:

  1. 修改参数前确认参数类型
  2. 记录修改操作,确保所有节点配置一致
  3. 动态参数在各节点分别执行修改命令
  4. 静态参数统一修改配置文件后,分批重启节点

五、最佳实践与注意事项

5.1 修改前的准备

  1. 备份dm.ini文件:任何修改前务必备份原文件

    cp dm.ini dm.ini.bak_$(date +%Y%m%d)
  2. 确认参数类型:通过视图确认是动态还是静态参数

  3. 评估影响范围:特别是修改SYS级参数会影响所有会话

5.2 修改过程中的注意事项

  1. 优先使用SQL命令:尽量使用 ALTER SYSTEM SET 而非直接编辑文件,特别是对于动态参数,可以避免重启
  2. 静态参数修改:修改后必须重启,需安排维护窗口
  3. 参数值合法性:若设置值超出范围,达梦会自动调整为边界值或默认值
  4. 权限要求:修改参数需要DBA角色权限

5.3 修改后的验证

-- 验证参数是否生效 SELECT PARA_NAME, PARA_VALUE, PARA_TYPE FROM V$DM_INI WHERE PARA_NAME = '<参数名>'; -- 对于动态参数,确认内存值和文件值一致 SELECT NAME, VALUE, FILE_VALUE FROM V$PARAMETER WHERE NAME = '<参数名>';

六、参数修改方式对照表

使用场景 推荐方式 是否需重启 风险等级
动态参数(生产环境) ALTER SYSTEM SET ... BOTH
动态参数(临时测试) ALTER SYSTEM SET ... MEMORY
静态参数(需重启) ALTER SYSTEM SET ... SPFILE + 重启
批量修改多个参数 编辑dm.ini + 重启
集群环境(主备) 各节点分别执行 视参数类型而定
初始化时不可变参数 使用dminit设置 N/A

达梦社区技术 https://eco.dameng.com

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服