达梦 DM8 参数设置全攻略,建库前先看这篇!

大家好,这里是公众号 DBA学习之路,致力于分享数据库领域相关知识。

社群交流

为了给大家提供一些技术交流的平台,目前已成立的技术交流群:

  • Oracle 数据库交流群
  • 国产数据库交流群
  • Linux 技术交流群
  • ChatGPT 4o 免费体验群

需要进群可以添加微信:Lucifer-0622,备注对应的群名即可。

前言

在日常工作中,相信很多朋友都遇到过因建库时参数设置不当,导致后续无法修改而不得不重新建库的情况。无论使用哪种数据库,都有一些建库后无法更改的参数,所以了解数据库中这些无法修改的参数就显得尤为重要。

本文整理了达梦数据库(DM8 版本)中建库后无法修改的一些参数,自己学习的同时也分享给大家一起查阅!

📢 注意:不同版本的数据库可能存在差异,具体参数信息请以官方文档为准。

DMINIT

在安装达梦的过程中,用户可以选择是否创建初始数据库,如果当时没有创建,也可以在完成安装后,利用初始化库工具 dminit 来创建。数据库管理员可以利用该工具提供的各种参数,设置数据库存放路径、段页大小、是否对大小写敏感以及是否使用 unicode,创建出满足用户需要的初始数据库。

dminit 一般是要有参数的,如果没有带参数,系统就会引导用户设置,参数、等号和值之间不能有空格。

dminit 使用较为灵活,参数较多。我们可以使用 dminit help 查看 dminit 版本信息和各参数信息:

bash 复制代码
[dmdba@dsc01:/home/dmdba]$ dminit help
initdb V8
db version: 0x7000c
file dm.key not found, use default license!
License will expire on 2025-09-19
version: 03134284294-20240919-243448-20119 Pack1
格式: ./dminit     KEYWORD=value

例程: ./dminit     PATH=/public/dmdb/dmData PAGE_SIZE=16

关键字                     说明(默认值)
--------------------------------------------------------------------------------
INI_FILE                   初始化文件dm.ini存放的路径
PATH                       初始数据库存放的路径
CTL_PATH                   控制文件路径
LOG_PATH                   日志文件路径
EXTENT_SIZE                数据文件使用的簇大小(16),可选值:16, 32, 64,单位:页
PAGE_SIZE                  数据页大小(8),可选值:4, 8, 16, 32,单位:K
LOG_SIZE                   日志文件大小(2048),单位为:M,范围为:256M ~ 8G
CASE_SENSITIVE             大小敏感(Y),可选值:Y/N,1/0
CHARSET/UNICODE_FLAG       字符集(0),可选值:0[GB18030],1[UTF-8],2[EUC-KR]
SEC_PRIV_MODE              权限管理模式(0),可选值:0[TRADITION],1[BMJ],2[EVAL],3[BAIST]
SYSDBA_PWD                 设置SYSDBA密码(SYSDBA)
SYSAUDITOR_PWD             设置SYSAUDITOR密码(SYSAUDITOR)
DB_NAME                    数据库名(DAMENG)
INSTANCE_NAME              实例名(DMSERVER)
PORT_NUM                   监听端口号(5236)
BUFFER                     系统缓存大小(8000),单位M
TIME_ZONE                  设置时区(+08:00)
PAGE_CHECK                 页检查模式(3),可选值:0/1/2/3
PAGE_HASH_NAME             设置页检查HASH算法
EXTERNAL_CIPHER_NAME       设置默认加密算法
EXTERNAL_HASH_NAME         设置默认HASH算法
EXTERNAL_CRYPTO_NAME       设置根密钥加密引擎
RLOG_ENCRYPT_NAME          设置日志文件加密算法,若未设置,则不加密
RLOG_POSTFIX_NAME          设置日志文件后缀名,长度不超过10。默认为log,例如DAMENG01.log
USBKEY_PIN                 设置USBKEY PIN
PAGE_ENC_SLICE_SIZE        设置页加密分片大小,可选值:0、512、4096,单位:Byte
ENCRYPT_NAME               设置全库加密算法
BLANK_PAD_MODE             设置空格填充模式(0),可选值:0/1
SYSTEM_MIRROR_PATH         SYSTEM数据文件镜像路径
MAIN_MIRROR_PATH           MAIN数据文件镜像
ROLL_MIRROR_PATH           回滚文件镜像路径
MAL_FLAG                   初始化时设置dm.ini中的MAL_INI(0)
ARCH_FLAG                  初始化时设置dm.ini中的ARCH_INI(0)
MPP_FLAG                   Mpp系统内的库初始化时设置dm.ini中的mpp_ini(0)
CONTROL                    初始化配置文件(配置文件格式见系统管理员手册)
AUTO_OVERWRITE             是否覆盖所有同名文件(0) 0:不覆盖 1:部分覆盖 2:完全覆盖
USE_NEW_HASH               是否使用改进的字符类型HASH算法(1)
ELOG_PATH                  指定初始化过程中生成的日志文件所在路径
AP_PORT_NUM                分布式环境下协同工作的监听端口
HUGE_WITH_DELTA            是否仅支持创建事务型HUGE表(1) 1:是 0:否
RLOG_GEN_FOR_HUGE          是否生成HUGE表REDO日志(1) 1:是 0:否
PSEG_MGR_FLAG              是否仅使用管理段记录事务信息(0) 1:是 0:否
CHAR_FIX_STORAGE           CHAR是否按定长存储(N),可选值:Y/N,1/0
SQL_LOG_FORBID             是否禁止打开SQL日志(N),可选值:Y/N,1/0
DPC_MODE                   指定DPC集群中的实例角色(0) 0:无 1:MP 2:BP 3:SP,取值1/2/3时也可以用MP/BP/SP代替
USE_DB_NAME                路径是否拼接DB_NAME(1) 1:是 0:否
MAIN_DBF_PATH              MAIN数据文件存放路径
SYSTEM_DBF_PATH            SYSTEM数据文件存放路径
ROLL_DBF_PATH              ROLL数据文件存放路径
TEMP_DBF_PATH              TEMP数据文件存放路径
ENC_TYPE                   数据库内部加解密使用的加密接口类型(1), 可选值: 1: 优先使用EVP类型 0: 不启用EVP类型
HELP                       打印帮助信息

根据官方文档我整理了其中建库后无法修改的参数:

参数名 含义 可选值 默认值
EXTENT_SIZE 数据文件使用的簇大小 16, 32, 64,单位:页 16
PAGE_SIZE 数据文件使用的页大小 4, 8, 16, 32,单位:K 8
CASE_SENSITIVE 大小写是否敏感 Y/N,1/0 Y
CHARSET/UNICODE_FLAG 数据库字符集 0[GB18030],1[UTF-8],2[EUC-KR] 0
BLANK_PAD_MODE 设置空格填充模式 0,1 0
DB_NAME 数据库名 不超过 128 个字符 DAMENG
TIME_ZONE 数据库时区 格式为[正负号]小时[:分钟],取值范围:-12:59~+14:00 +08:00
PAGE_CHECK 页检查模式 0, 1, 2, 3 3
PAGE_HASH_NAME 设置页检查 HASH 算法 不超过 128 个字符
EXTERNAL_CIPHER_NAME 设置默认加密算法 不超过 128 个字符
EXTERNAL_HASH_NAME 设置默认 HASH 算法 不超过 128 个字符
EXTERNAL_CRYPTO_NAME 设置根密钥加密引擎 不超过 128 个字符
RLOG_ENCRYPT_NAME 设置联机日志文件和归档日志文件加密算法 不超过 128 个字符
RLOG_POSTFIX_NAME 设置联机日志文件扩展名 不超过 10 个字符 log
USBKEY_PIN USBKEY PIN,用于加密服务器根密钥 不超过 48 个字符
PAGE_ENC_SLICE_SIZE 数据页加密分片大小 0,512,4096,单位:BYTE 4096
ENCRYPT_NAME 设置全库加密算法 不超过 128 个字符
SYSTEM_MIRROR_PATH 指定 system.dbf 文件的镜像路径 绝对路径
MAIN_MIRROR_PATH 指定 main.dbf 文件的镜像路径 绝对路径
ROLL_MIRROR_PATH 指定 roll.dbf 文件的镜像路径 绝对路径
HUGE_WITH_DELTA 是否仅支持创建事务型 HUGE 表 0,1 1
RLOG_GEN_FOR_HUGE 是否生成 HUGE 表 REDO 日志 0,1 1
PSEG_MGR_FLAG 是否仅使用管理段记录事务信息 0,1 0
CHAR_FIX_STORAGE CHAR 是否按定长存储 Y/N,1/0 N
SQL_LOG_FORBID 是否禁止打开 SQL 日志 Y/N,1/0 N
DPC_MODE DMDPC 专用参数,指定 DMDPC 集群中的实例角色 0:无 1:MP 2:BP 3:SP,取值 1/2/3 时也可以用 MP/BP/SP 代替 0
MAIN_DBF_PATH MAIN 数据文件存放路径 文件路径长度包括文件名不超过 257 个字符 PATH\DB_NAME\MAIN.DBF
SYSTEM_DBF_PATH SYSTEM 数据文件存放路径 文件路径长度包括文件名不超过 257 个字符 PATH\DB_NAME\SYSTEM.DBF
ROLL_DBF_PATH ROLL 数据文件存放路径 文件路径长度包括文件名不超过 257 个字符 PATH\DB_NAME\ROLL.DBF
TEMP_DBF_PATH TEMP 数据文件存放路径 文件路径长度包括文件名不超过 257 个字符 PATH\DB_NAME\TEMP.DBF
USE_DB_NAME 初始化数据库的路径是否拼接 DB_NAME 0,1 1
USE_NEW_HASH 是否使用改进的字符类型 HASH 算法 0[原始 HASH],1[改进的 HASH 算法] 1
PRIV_FLAG 是否是四权分立 0,1 0
ENABLE_MAC 是否打开强制访问控制功能,仅对安全版有效 0,1 0

一共是 33 个建库后不可修改的参数,我下面会挑选一些常用且重要的参数进行介绍。

重要参数

EXTENT_SIZE

数据文件使用的簇大小,即每次分配新的段空间时连续的页数。取值范围 16、32、64。单位:页数。缺省值为 16。可选参数。

数据库创建成功后无法再修改簇大小,可通过系统函数 SF_GET_PAGE_SIZE() 获取系统的页大小:

sql 复制代码
-- 系统函数查看
SQL> select SF_GET_EXTENT_SIZE() from dual;

SF_GET_EXTENT_SIZE()
--------------------
32

-- show 查看
SQL> show parameter GLOBAL_EXTENT_SIZE

PARA_NAME          PARA_VALUE
------------------ ----------
GLOBAL_EXTENT_SIZE 32

-- 系统视图查看
SQL> select * from v$parameter where name = 'GLOBAL_EXTENT_SIZE';

ID          NAME               TYPE      VALUE SYS_VALUE FILE_VALUE DESCRIPTION        DEFAULT_VALUE ISDEFAULT  
----------- ------------------ --------- ----- --------- ---------- ------------------ ------------- -----------
639         GLOBAL_EXTENT_SIZE READ ONLY 32    32        16         global_extent_size 16            1

-- dminit.ini 文件
[dmdba@dsc01:/dmdata/DSC]$ cat dminit.ini | grep EXTENT_SIZE
EXTENT_SIZE = 32

PAGE_SIZE

数据文件使用的页大小。取值范围 4、8、16、32,单位:KB。缺省值为 8。可选参数。

选择的页大小越大,则 DM 支持的元组长度也越大,但同时空间利用率可能下降。

数据库创建成功后无法再修改页大小,可通过系统函数 SF_GET_PAGE_SIZE() 获取系统的页大小:

sql 复制代码
-- 系统函数查看
SQL> select SF_GET_PAGE_SIZE()/1024 from dual;

SF_GET_PAGE_SIZE()/1024
-----------------------
32

-- show 查看
SQL> show parameter GLOBAL_PAGE_SIZE

PARA_NAME             PARA_VALUE
--------------------- ----------
GLOBAL_PAGE_SIZE      32768

-- 系统视图查看
SQL> select * from v$parameter where name = 'GLOBAL_PAGE_SIZE';

ID          NAME             TYPE      VALUE SYS_VALUE FILE_VALUE DESCRIPTION      DEFAULT_VALUE ISDEFAULT  
----------- ---------------- --------- ----- --------- ---------- ---------------- ------------- -----------
623         GLOBAL_PAGE_SIZE READ ONLY 32768 32768     8192       global_page_size 8192          1

-- dminit.ini 文件
[dmdba@dsc01:/dmdata/DSC]$ cat dminit.ini | grep PAGE_SIZE
PAGE_SIZE = 32

CASE_SENSITIVE

大小写是否敏感。当大小写敏感时,小写的标识符应该用 "" 括起,否则被系统自动转换为大写;当大小写不敏感时,系统不会转换字符的大小写,系统比较函数会将大写字母全部转为小写字母再进行比较。取值:Y、y、1 表示敏感;N、n、0 表示不敏感。缺省值为 Y。可选参数。

此参数在数据库创建成功后无法修改,可通过系统函数 SF_GET_CASE_SENSITIVE_FLAG()CASE_SENSITIVE() 查询设置的参数值:

sql 复制代码
-- 系统函数查看
SQL> select CASE_SENSITIVE() from dual;

CASE_SENSITIVE()
----------------
1

-- show 查看
SQL> show parameter GLOBAL_STR_CASE_SENSITIVE

PARA_NAME                 PARA_VALUE
------------------------- ----------
GLOBAL_STR_CASE_SENSITIVE 1

-- 系统视图查看
SQL> select * from v$parameter where name = 'GLOBAL_STR_CASE_SENSITIVE';

ID          NAME                      TYPE      VALUE SYS_VALUE FILE_VALUE DESCRIPTION               DEFAULT_VALUE ISDEFAULT  
----------- ------------------------- --------- ----- --------- ---------- ------------------------- ------------- -----------
621         GLOBAL_STR_CASE_SENSITIVE READ ONLY 1     1         1          global_str_case_sensitive 1             1

-- dminit.ini 文件
[dmdba@dsc01:/dmdata/DSC]$ cat dminit.ini | grep CASE_SENSITIVE
CASE_SENSITIVE = Y

CHARSET/UNICODE_FLAG

字符集选项。取值范围 0、1、2。0 代表 GB18030,1 代表 UTF-8,2 代表韩文字符集 EUC-KR。缺省值为 0。可选参数。

此参数在数据库创建成功后无法修改,可通过系统函数 SF_GET_UNICODE_FLAG()UNICODE() 查询设置的参数值:

sql 复制代码
-- 系统函数查看
SQL> select UNICODE() from dual;

UNICODE()  
-----------
1

-- show 查看
SQL> show parameter GLOBAL_CHARSET

PARA_NAME      PARA_VALUE
-------------- ----------
GLOBAL_CHARSET 1

-- 系统视图查看
SQL> select * from v$parameter where name = 'GLOBAL_CHARSET';

ID          NAME           TYPE      VALUE SYS_VALUE FILE_VALUE DESCRIPTION    DEFAULT_VALUE ISDEFAULT  
----------- -------------- --------- ----- --------- ---------- -------------- ------------- -----------
635         GLOBAL_CHARSET READ ONLY 1     1         0          global_charset 0             1

-- dminit.ini 文件
[dmdba@dsc01:/dmdata/DSC]$ cat dminit.ini | grep CHARSET
CHARSET = 1

BLANK_PAD_MODE

设置字符串比较时,结尾空格填充模式是否兼容 ORACLE。1:兼容;0:不兼容。缺省值为 0。可选参数。

此参数在数据库创建成功后无法修改,可通过查询 V$PARAMETER 中的 BLANK_PAD_MODE 参数名查看此参数的设置值:

sql 复制代码
-- 系统函数查看
SQL> select BLANK_PAD_MODE() from dual;

BLANK_PAD_MODE()
----------------
0

-- show 查看
SQL> show parameter BLANK_PAD_MODE

PARA_NAME      PARA_VALUE
-------------- ----------
BLANK_PAD_MODE 0

-- 系统视图查看
SQL> select * from v$parameter where name = 'BLANK_PAD_MODE';

ID          NAME           TYPE      VALUE SYS_VALUE FILE_VALUE DESCRIPTION    DEFAULT_VALUE ISDEFAULT  
----------- -------------- --------- ----- --------- ---------- -------------- ------------- -----------
634         BLANK_PAD_MODE READ ONLY 0     0         0          blank_pad_mode 0             1

-- dminit.ini 文件
[dmdba@dsc01:/dmdata/DSC]$ cat dminit.ini | grep BLANK_PAD_MODE
BLANK_PAD_MODE = 0

DB_NAME

初始化数据库名称,缺省值为 DAMENG 。名称为字符串,长度不能超过 128 个字符。可选参数。数据库名称只能由 _、$、大写字母 A 至 Z、小写字母 a 至 z、数字 0 至 9 组成,且第一个字符不能是数字。例如:一个合格的数据库名称为 Dm_1。

数据库名称在数据库创建成功后无法修改,可通过查询 V$DATABASENAME 列获取数据库名:

sql 复制代码
-- 系统视图查看
SQL> select name from v$database;

NAME
----
DSC

-- dminit.ini 文件
[dmdba@dsc01:/dmdata/DSC]$ cat dminit.ini | grep DB_NAME
DB_NAME = DSC

PORT_NUM

初始化时设置 dm.ini 中的数据库服务器监听端口号,缺省值为 5236。服务器配置此参数,取值范围 102465534,发起连接端的端口在 102465535 之间随机分配。可选参数。

数据库创建成功后,可通过修改 INI 参数 PORT_NUM 的值对此参数的设置进行修改。可通过查询 V$PARAMETER 中的 PORT_NUM 参数名查看此参数当前的设置值:

sql 复制代码
-- 系统视图查看
SQL> select * from v$parameter where name = 'PORT_NUM';

ID          NAME     TYPE    VALUE SYS_VALUE FILE_VALUE DESCRIPTION                                          DEFAULT_VALUE ISDEFAULT  
----------- -------- ------- ----- --------- ---------- ---------------------------------------------------- ------------- -----------
294         PORT_NUM IN FILE 5236  5236      5236       Port number on which the database server will listen 5236          1

TIME_ZONE

初始化时区,默认为东八区(+08:00)。格式为[正负号]小时[:分钟],其中,正负号和分钟为可选项。时区设置范围为:-12:59~+14:00。可选参数。

此参数在数据库创建成功后无法修改,可通过查询 V$PARAMETER 中的 TIME_ZONE 参数名查看此参数的设置值:

sql 复制代码
-- 系统视图查看
SQL> select * from v$parameter where name = 'TIME_ZONE';

ID          NAME      TYPE      VALUE SYS_VALUE FILE_VALUE DESCRIPTION DEFAULT_VALUE ISDEFAULT  
----------- --------- --------- ----- --------- ---------- ----------- ------------- -----------
650         TIME_ZONE READ ONLY 480   480       0          TIME_ZONE   0             1

以上这些参数是我们在初始化数据库实例时需要特别注意的,如果一个不小心,可能就需要重新建库!

写在最后

如果有遗漏或者不足的地方,欢迎评论区补充或者投稿,感谢阅读!

往期精彩文章

达梦数据库安装最详细教程
一招教你学会达梦数据库的免密登录
一文讲透达梦数据库的大小写敏感
效率翻倍!达梦数据库 disql 使用技巧全攻略
达梦数据库参数配置与一键优化指南
达梦 AWR 报告快速上手指南
达梦 DMDSC 共享存储集群介绍
官方认证:达梦共享集群 DMDSC 一键安装脚本


「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」

相关推荐
千叶寻-36 分钟前
正则表达式
前端·javascript·后端·架构·正则表达式·node.js
小咕聊编程2 小时前
【含文档+源码】基于SpringBoot的过滤协同算法之网上服装商城设计与实现
java·spring boot·后端
追逐时光者8 小时前
推荐 12 款开源美观、简单易用的 WPF UI 控件库,让 WPF 应用界面焕然一新!
后端·.net
Jagger_8 小时前
敏捷开发流程-精简版
前端·后端
苏打水com9 小时前
数据库进阶实战:从性能优化到分布式架构的核心突破
数据库·后端
间彧10 小时前
Spring Cloud Gateway与Kong或Nginx等API网关相比有哪些优劣势?
后端
间彧10 小时前
如何基于Spring Cloud Gateway实现灰度发布的具体配置示例?
后端
间彧10 小时前
在实际项目中如何设计一个高可用的Spring Cloud Gateway集群?
后端
间彧10 小时前
如何为Spring Cloud Gateway配置具体的负载均衡策略?
后端
间彧10 小时前
Spring Cloud Gateway详解与应用实战
后端