达梦 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 一键安装脚本


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

相关推荐
raoxiaoya1 小时前
同时安装多个版本的golang
开发语言·后端·golang
考虑考虑3 小时前
go使用gorilla/websocket实现websocket
后端·程序员·go
李少兄3 小时前
解决Spring Boot多模块自动配置失效问题
java·spring boot·后端
Piper蛋窝4 小时前
Go 1.19 相比 Go 1.18 有哪些值得注意的改动?
后端
码农BookSea4 小时前
不用Mockito写单元测试?你可能在浪费一半时间
后端·单元测试
codingandsleeping5 小时前
Express入门
javascript·后端·node.js
ss2735 小时前
基于Springboot + vue + 爬虫实现的高考志愿智能推荐系统
spring boot·后端·高考
专注API从业者6 小时前
《Go 语言高并发爬虫开发:淘宝商品 API 实时采集与 ETL 数据处理管道》
开发语言·后端·爬虫·golang
Asthenia04126 小时前
Netty writeAndFlush与Pipeline深入分析
后端
欧先生^_^7 小时前
Scala语法基础
开发语言·后端·scala