RHEL7安装达梦数据库
软件安装配置
安装配置前规划
规划安装路径
- 根据数据库服务器配置规划安装路径、数据路径、备份路径
- 安装路径:建议放在本地盘
- 数据路径:建议放在存储性能最好的地方,如磁盘阵列的挂载点下
- 归档路径:建议放在数据路径下,避免误删
- 备份路径:建议放在和数据不同的盘上
规划初始化参数
页大小
在 DM 数据库中,页大小可以为 4KB、8KB、16KB 或者 32KB,用户在创建数据库时可以指定,默认大小为8KB,一旦创建好了数据库,在该库的整个生命周期内,页大小都不能够改变。
页大小对字符数据类型实际最大长度及每行记录的影响如下表所示(不同的数据库版本略有差异):
数据库页大小 | 每个字符类型字段实际最大 长度(字节) |
每行记录除大字段外其他字 段总长度(字节) |
---|---|---|
4K | 1900 | 2000 |
8K | 3900 | 4000 |
16K | 8000 | 8000 |
32K | 8188 | 16000 |
除了每个字段的最大长度限制外,每条记录总长度不能大于页面大小的一半。如果系统中存在或者以后可能存在含有较长的字符串类型的表,建议该参数设置为 16 或者 32。
日志文件大小
每个 DM 数据库实例必须至少有 2 个重做日志文件,默认两个日志文件为DAMENG01.log、DAMENG02.log,这两个文件循环使用,日志文件在初始化实例后可以增加和扩大,小型 OA 系统建议设置为 2*256
M,在线大型交易系统建议设置为 4*2048
M。
时区
选择时区前,需要确认操作系统时区和数据库时区一致,以避免操作系统上看到的时间,和数据库中的时间存在差异。建议使用北京时间+8:00。
字符串比较大小写敏感
为了兼容不同的数据库,达梦在初始化数据库的时候有一个参数,用来设置字符串比较是否大小写敏感,用于确定数据库对象及数据是否区分大小写,默认为区分,不可更改。
通过 case_sensitive 参数进行控制。该参数默认值为Y (即为1 ),也就是敏感(区分大小写)
参数设置原则
-
建议 MYSQL 和 SQLSERVER 迁移过来的系统,使用大小写不敏感(case_sensitive=0)
-
ORACLE 迁移到达梦的系统,使用大小写敏感(即为默认值),以便和原来系统匹配(case_sensitive=1)
-
其他数据库的类型,依据实际含义和业务需求配置
总结
大小写敏感的数据库中:
- 表名或列名不加双引号(
""
)时,表名和列名都自动转换为大写形式。 - 表名或列名加双引号(
""
)时,表名和列名为书写时的形式。
大小写不敏感的数据库中:
- 无论表名或列名是否添加双引号(
""
),大小写形式不会发生变化
字符集
建议采用默认值 GB18030,如果需要国际字符可以采用 Unicode,GB18030 数字字母占 1 个字节,普通汉字占 2 个字节,部分繁体及少数民族文字占 4 字节,Unicode 在达梦中采用 UTF-8 编码格式,欧洲的字母字符占 1 到 2 个字节,亚洲的大部分字符占 3 个字节,附加字符为 4 个字节。如果只存储中文和字母数字,一般来说GB18030 更节省空间。
varchar类型以字符为单位
该参数的作用是建表时 VARCHAR 的长度是按照字符计算还是字节计算,默认以字节为单位,即字段的长度单位按照字节计算。如果采用字符为单位,字段的长度单位按照字符来计算,不同的字符集会导致字段长度不一样,实际最大长度受到页大小的限制。
建议采用默认以字节为单位,如果从 MYSQL 迁移的同时又不方便扩大表结构的长度,需要设置为以字符为单位。
通过 LENGTH_IN_CHAR 参数配置。可选值:
- 0 或 N:否,所有 VARCHAR 类型对象的长度以字节为单位
- 1 或 Y:是,所有 VARCHAR 类型对象的长度以字符为单位
改进字符串HASH算法
在之前的达梦版本上用的旧的 HASH 算法(大概 2014 年 10 月前后,具体时间未知),之后的版本默认使用新 HASH 算法,如果是从之前旧版本数据还原到新版本上使用,不能使用改进字符串 HASH 算法,其他情况使用改进字符串 HASH 算法。
1. 准备工作
1.1 检查Linux(Unix)系统信息
用户在安装DM前,需要检查当前操作系统的相关信息,确认DM安装程序与当前操作系统匹配,以保证DM能够正确安装和运行。用户可以使用以下命令检查操作系统基本信息。
# 获取系统位数
[root@cs1 ~]# getconf LONG_BIT
64
# 查询操作系统release信息
[root@cs1 ~]# cat /etc/oracle-release
Oracle Linux Server release 7.1
# 查询系统信息
[root@cs1 ~]# cat /etc/issue
Oracle Linux Server release 7.1
Kernel \r on an \m
# 查询系统名称
[root@cs1 ~]# uname -a
Linux cs1.jy.net 3.8.13-55.1.6.el7uek.x86_64 #2 SMP Wed Feb 11 14:18:22 PST 2015 x86_64 x86_64 x86_64 GNU/Linux
# CPU 信息
cat /proc/cpuinfo | grep -E "physical id|coreid|cpucores|siblings|cpu MHz|model name|cache size"|tail -n 7
1.2 创建安装用户和用户组
为了减少对操作系统的影响,用户不应该以root系统用户来安装和运行DM。用户可以在安装之前为DM创建一个专用的系统用户。
# 1. 创建安装用户组
groupadd -g 54321 dinstall
# 2. 创建安装用户
useradd -u 54321 -g dinstall -m -d /home/dmdba -c "DM RDBMS Sever" -s /bin/bash dmdba
# 3. 设置用户密码
echo "dmdba" | passwd dmdba --stdin
1.3 系统资源配置
在Linux(Unix)系统中,因为ulimit命令的存在,会对程序使用操作系统资源进行限制。为了使DM能够正常运行,建议用户检查当前安装用户的ulimit参数。
配置要求
- data seg size (kbytes, -d) :建议用户设置为1048576(即1GB)以上或unlimited(无限制),此参数过小将导致数据库启动失败。
- file size(blocks, -f) :建议用户设置为unlimited(无限制),此参数过小将导致数据库安装或初始化失败。
- open files(-n):建议用户设置为65536以上或unlimited(无限制)。
- virtual memory (kbytes, -v): 建议用户设置为1048576(即1GB)以上或unlimited(无限制),此参数过小将导致数据库启动失败。
官网这里有坑:当按照 data seg size 建议值配置为1GB时,dmserver启动时提示"out of memory! failed allocate memory from os"错误而启动服务失败
# 修改用户更改ulimit的资源限制
# cp /etc/security/limits.conf /etc/security/limits.conf_$(date +%Y%m%d)
cat > /etc/security/limits.d/99-dmdba.conf <<EOF
# modify for dmrdbms
# data seg size
# dmdba soft data 1048576
# dmdba hard data 1048576
# file size
dmdba soft fsize unlimited
dmdba hard fsize unlimited
# open files
dmdba soft nofile 65536
dmdba hard nofile 65536
# virtual memory
dmdba soft as unlimited
dmdba hard as unlimited
EOF
1.5 检查系统内存与存储空间
1.5.1 检查内存
为了保证DM的正确安装和运行,要尽量保证操作系统至少1GB的可用内存(RAM)。如果可用内存过少,可能导致DM安装或启动失败。用户可以使用以下命令检查操作内存。
#获取内存总大小
grep MemTotal /proc/meminfo
MemTotal: 7914692 kB
#获取交换分区大小
grep SwapTotal /proc/meminfo
SwapTotal: 8257532 kB
#获取内存使用详情
free
total used free shared buff/cache available
Mem: 7914692 2736024 837368 2744456 4341300 2162354
Swap: 8257532 1132852 7124680
1.5.2 检查存储空间
- DM完全安装需要1GB的存储空间,用户需要提前规划好安装目录,预留足够的存储空间。用户在DM安装前也应该为数据库实例预留足够的存储空间,规划好数据路径和备份路径。用户可使用以下命令检查存储空间
- DM安装程序在安装时将产生临时文件,临时文件需要1GB的存储空间,临时文件目录默认为/tmp。用户可以使用以下命令检查存储空间。
#1. 查询目录/mount_point/dir_name可用空间
df -h /ups/app
# 2. 临时目录
mkdir -p /mount_point/dir_name
DM_INSTALL_TMPDIR=/mount_point/dir_name
export DM_INSTALL_TMPDIR
1.6 创建软件安装目录
mkdir -p /ups/app/dmdb/dmdbms
mkdir -p /ups/app/dmdb/dmdata
mkdir -p /ups/app/dmdb/dmarch
mkdir -p /ups/app/dmdb/dmbackup
chown -R dmdba:dinstall /ups/app/dmdb
chmod -R 775 /ups/app/dmdb
2. 安装数据库软件
2.1 准备DM软件
用户应登录或切换到安装系统用户,进行以下安装步骤的操作(注:不建议使用root系统用户进行安装)。将DM上传到/soft目录中,然后解压软件包
mount -o loop /ups/soft/dm7_setup_rh6_64_ent_7.6.0.184_20190812.iso /mnt
cp /mnt/DMInstall.bin /ups/soft/
chown dmdba:dinstall /ups/soft/DMInstall.bin
2.2 安装DM
- 达梦数据库中创建实例的方法
- 通过dminit命令行工具
- /dm/dmdbms/tool/dbca.sh 图形化界面工具
2.2.1 图形界面安装
1) 软件安装
# xhost +
access control disabled, clients can connect from any host
# su - dmdba
$ export DISPLAY=:1
$ cd /ups/soft/
$ ./DMInstall.bin
当安装进度完成时将会弹出对话框,提示使用root系统用户执行相关命令。用户可根据对话框的说明完成相关操作,之后可关闭此对话框,点击“完成”按钮结束安装
-- 创建服务
# sh /ups/app/dmdba/dmdbms/script/root/root_installer.sh
2)初始化数据库
root用户执行脚本
/ups/app/dmdb/dmdbms/script/root/dm_service_installer.sh -s /ups/app/dmdb/dmdbms/bin/DmAPService
2.2.2 命令行安装
2.2.2.1 软件安装
1)字符界面安装(./DMInstall.bin -i)
[dmdba@progs soft]$ ./DMInstall.bin -i
Please select the installer's language (E/e:English C/c:Chinese) [E/e]:e
Extract install files.........
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 31761
max locked memory (kbytes, -l) 64
max memory size (kbytes, -m) unlimited
open files (-n) 4096
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) 4096
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
The max number of open files is too little, suggest to set 65536 or more to number of open files.
Welcome to DM DBMS Installer
Whether to input the path of Key File? (Y/y:Yes N/n:No) [Y/y]:n
Whether to Set The TimeZone? (Y/y:Yes N/n:No) [Y/y]:
TimeZone:
[ 1]: GTM-12=West Date Line
[ 2]: GTM-11=Samoa
[ 3]: GTM-10=Hawaii
[ 4]: GTM-09=Alaska
[ 5]: GTM-08=Pacific(America and Canada)
[ 6]: GTM-07=Arizona
[ 7]: GTM-06=Central(America and Canada)
[ 8]: GTM-05=East(America and Canada)
[ 9]: GTM-04=Atlantic(America and Canada)
[10]: GTM-03=Brasilia
[11]: GTM-02=Middle Atlantic
[12]: GTM-01=Azores
[13]: GTM=Greenwich Mean Time
[14]: GTM+01=Sarajevo
[15]: GTM+02=Cairo
[16]: GTM+03=Moscow
[17]: GTM+04=AbuDhabi
[18]: GTM+05=Islamabad
[19]: GTM+06=Dakar
[20]: GTM+07=BangKok,Hanoi
[21]: GTM+08=China
[22]: GTM+09=Seoul
[23]: GTM+10=Guam
[24]: GTM+11=Solomon
[25]: GTM+12=Fiji
[26]: GTM+13=Nukualofa
[27]: GTM+14=Kiribati
Please Select the TimeZone [21]:21
Installation Type:
1 Typical
2 Server
3 Client
4 Custom
Please Input the number of the Installation Type [1 Typical]:1
Require Space: 930M
Please Input the install path [/home/dmdba/dmdbms]:/ups/app/dmdb/dmdbms
Available Space:39G
Please Confirm the install path(/ups/app/dmdb/dmdbms)? (Y/y:Yes N/n:No) [Y/y]:y
Pre-Installation Summary
Installation Location: /ups/app/dmdb/dmdbms
Require Space: 930M
Available Space: 39G
Version Information:
Expire Date:
Installation Type: Typical
Confirm to Install? (Y/y:Yes N/n:No):y
2019-10-21 09:24:25
[INFO] Installing DM DBMS...
2019-10-21 09:24:26
[INFO] Installing BASE Module...
2019-10-21 09:24:28
[INFO] Installing SERVER Module...
2019-10-21 09:24:28
[INFO] Installing CLIENT Module...
2019-10-21 09:24:29
[INFO] Installing DRIVERS Module...
2019-10-21 09:24:30
[INFO] Installing MANUAL Module...
2019-10-21 09:24:30
[INFO] Installing SERVICE Module...
2019-10-21 09:24:32
[INFO] Move ant log file to log directory.
2019-10-21 09:24:32
[INFO] Installed DM DBMS completely.
Please execute the commands by root:
/ups/app/dmdb/dmdbms/script/root/root_installer.sh
End
# 执行root脚本
[root@progs ~]# sh /ups/app/dmdb/dmdbms/script/root/root_installer.sh
Move /ups/app/dmdb/dmdbms/bin/dm_svc.conf to /etc
Modify the files' mode of DM Server
Create the DmAPService service
Created symlink from /etc/systemd/system/multi-user.target.wants/DmAPService.service to /usr/lib/systemd/system/DmAPService.service.
Finished to create the service (DmAPService)
Start the DmAPService service
[root@progs ~]#
2)响应文件安装
配置响应文件vi auto_install.xml
<?xml version="1.0"?>
<DATABASE>
<!--安装数据库的语言配置,安装中文版配置 ZH,英文版配置 EN,不区分大小写。不允许为空。-->
<LANGUAGE>zh</LANGUAGE>
<!--安装程序的时区配置,默认值为+08:00,范围: -12:59 ~ +14:00 -->
<TIME_ZONE>+08:00</TIME_ZONE>
<!-- key 文件路径 -->
<KEY></KEY>
<!--安装程序组件类型,取值 0、 1、 2, 0 表示安装全部, 1 表示安装服务器, 2 表示安装客户端。默认为 0。 -->
<INSTALL_TYPE>0</INSTALL_TYPE>
<!--安装路径,不允许为空。 -->
<INSTALL_PATH>/ups/app/dmdb/dmdbms</INSTALL_PATH>
<!--是否初始化库,取值 Y/N、 y/n,不允许为空。 -->
<INIT_DB>Y</INIT_DB>
<!--数据库实例参数 -->
<DB_PARAMS>
<!--初始数据库存放的路径,不允许为空 -->
<PATH>/ups/app/dmdb/dmdata</PATH>
<!--初始化数据库名字,默认是 DAMENG,不超过 128 个字符 -->
<DB_NAME>DAMENG</DB_NAME>
<!--初始化数据库实例名字,默认是 DMSERVER,不超过 128 个字符 -->
<INSTANCE_NAME>DMSERVER</INSTANCE_NAME>
<!--初始化时设置 dm.ini 中的 PORT_NUM,默认 5236,取值范围: 1024~65534 -->
<PORT_NUM>5336</PORT_NUM>
<!--初始数据库控制文件的路径,文件路径长度最大为 256 -->
<CTL_PATH>/ups/app/dmdb/dmdata/DAMENG/control.ctl</CTL_PATH>
<!--初始数据库日志文件的路径,文件路径长度最大为 256 -->
<LOG_PATHS>
<LOG_PATH>/ups/app/dmdb/dmdata/DAMENG/redo01.rd</LOG_PATH>
<LOG_PATH>/ups/app/dmdb/dmdata/DAMENG/redo02.rd</LOG_PATH>
<LOG_PATH>/ups/app/dmdb/dmdata/DAMENG/redo03.rd</LOG_PATH>
</LOG_PATHS>
<!--数据文件使用的簇大小,只能是 16 页或 32 页之一,缺省使用 16 页 -->
<EXTENT_SIZE>16</EXTENT_SIZE>
<!--数据文件使用的页大小,缺省使用 8K,只能是 4K、 8K、 16K 或 32K 之一 -->
<PAGE_SIZE>8</PAGE_SIZE>
<!--日志文件使用的簇大小,默认是 256,取值范围 64 和 2048 之间的整数 -->
<LOG_SIZE>256</LOG_SIZE>
<!--标识符大小写敏感,默认值为 Y。只能是’Y’, ’y’, ’N’, ’n’, ’1’, ’0’之一 -->
<CASE_SENSITIVE>Y</CASE_SENSITIVE>
<!--字符集选项,默认值为0。 0 代表 GB18030, 1 代表 UTF-8, 2 代表韩文字符集 EUC-KR-->
<CHARSET>0</CHARSET>
<!--设置为 1 时,所有 VARCHAR 类型对象的长度以字符为单位,否则以字节为单位。默认值为 0。-->
<LENGTH_IN_CHAR>0</LENGTH_IN_CHAR>
<!--字符类型在计算 HASH 值时所采用的 HASH 算法类别。 0:原始 HASH 算法; 1:改进的HASH 算法。默认值为 1。 -->
<USE_NEW_HASH>1</USE_NEW_HASH>
<!--初始化时设置 SYSDBA 的密码,默认为 SYSDBA,长度在 9 到 48 个字符之间 -->
<SYSDBA_PWD></SYSDBA_PWD>
<!--初始化时设置 SYSAUDITOR 的密码,默认为 SYSAUDITOR,长度在 9 到 48 个字符之间 -->
<SYSAUDITOR_PWD></SYSAUDITOR_PWD>
<!--初始化时设置 SYSSSO 的密码,默认为 SYSSSO,长度在 9 到 48 个字符之间,仅在安全版本下可见和可设置 -->
<SYSSSO_PWD></SYSSSO_PWD>
<!--初始化时设置 SYSDBO 的密码,默认为 SYSDBO,长度在 9 到 48 个字符之间,仅在安全版本下可见和可设置 -->
<SYSDBO_PWD></SYSDBO_PWD>
<!--初始化时区,默认是东八区。格式为:正负号小时:分钟,范围: -12:59 ~ +14:00-->
<TIME_ZONE>+08:00</TIME_ZONE>
<!--是否启用页面内容校验, 0:不启用; 1:简单校验; 2:严格校验(使用 CRC16 算法生成校验码)。默认 0 -->
<PAGE_CHECK>0</PAGE_CHECK>
<!--设置默认加密算法,不超过 128 个字符 -->
<EXTERNAL_CIPHER_NAME></EXTERNAL_CIPHER_NAME>
<!--设置默认 HASH 算法,不超过 128 个字符 -->
<EXTERNAL_HASH_NAME></EXTERNAL_HASH_NAME>
<!--设置根密钥加密引擎,不超过 128 个字符 -->
<EXTERNAL_CRYPTO_NAME></EXTERNAL_CRYPTO_NAME>
<!--全库加密密钥使用的算法名。算法可以是 DM 内部支持的加密算法,或者是第三方的加密算法。默认使用"AES256_ECB"算法加密,最长为 128 个字节 -->
<ENCRYPT_NAME></ENCRYPT_NAME>
<!--指定日志文件是否加密。默认值 N。取值 Y/N, y/n, 1/0 -->
<RLOG_ENC_FLAG>N</RLOG_ENC_FLAG>
<!--用于加密服务器根密钥,最长为 48 个字节 -->
<USBKEY_PIN></USBKEY_PIN>
<!--设置空格填充模式,取值 0 或 1,默认为 0 -->
<BLANK_PAD_MODE>0</BLANK_PAD_MODE>
<!--指定 system.dbf 文件的镜像路径,默认为空 -->
<SYSTEM_MIRROR_PATH></SYSTEM_MIRROR_PATH>
<!--指定 main.dbf 文件的镜像路径,默认为空 -->
<MAIN_MIRROR_PATH></MAIN_MIRROR_PATH>
<!--指定 roll.dbf 文件的镜像路径,默认为空 -->
<ROLL_MIRROR_PATH></ROLL_MIRROR_PATH>
<!--是否是四权分立,默认值为 0(不使用)。仅在安全版本下可见和可设置。只能是 0 或 1-->
<PRIV_FLAG>0</PRIV_FLAG>
<!--指定初始化过程中生成的日志文件所在路径。合法的路径,文件路径长度最大为 257(含结束符),不包括文件名-->
<ELOG_PATH></ELOG_PATH>
</DB_PARAMS>
<!--是否创建数据库实例的服务,值 Y/N y/n,不允许为空,不初始化数据库将忽略此节点。
非 root 用户不能创建数据库服务。 -->
<CREATE_DB_SERVICE>Y</CREATE_DB_SERVICE>
<!--是否启动数据库,值 Y/N y/n,不允许为空,不创建数据库服务将忽略此节点。 -->
<STARTUP_DB_SERVICE>N</STARTUP_DB_SERVICE>
</DATABASE>
启动安装命令
./DMInstall.bin -q auto_install.xml
配置环境变量
# 默认自动添加如下配置
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/ups/app/dmdb/dmdbms/bin"
export DM_HOME="/ups/app/dmdb/dmdbms"
# 需要另外添加配置path
export PATH=${DM_HOME}/bin:${PATH}
2.2.2.2 初始化数据库
dminit
帮助信息
[dmdba@progs tool]$ which dminit
/ups/app/dmdb/dmdbms/bin/dminit
[dmdba@progs dmdb]$ dminit help
initdb V7.6.0.184-Build(2019.08.08-110764)ENT
db version: 0x7000a
License will expire on 2020-09-20
Format: ./dminit KEYWORD=value
Example: ./dminit PATH=/public/dmdb/dmData PAGE_SIZE=16
Keyword Explanation(default value)
--------------------------------------------------------------------------------
INI_FILE dm.ini path
PATH database path
CTL_PATH control file path
LOG_PATH log file path
EXTENT_SIZE extent size of data file(16), optional value: 16,32, unit: PAGE
PAGE_SIZE page size(8), optional value: 4,8,16,32, unit: K
LOG_SIZE log file size(256), unit: M, range: 64M ~ 2G
CASE_SENSITIVE whether case is sensitive(Y), optional value: Y/N or 1/0
CHARSET/UNICODE_FLAG CHARSET(0), optional value:0[GB18030],1[UTF-8],2[EUC-KR]
SEC_PRIV_MODE security privilege mode(0), optional value: 0[TRADITION], 1[BMJ]
LENGTH_IN_CHAR whether LENGTH for VARCHAR is in characters(N), optional value: Y/N, 1/0
SYSDBA_PWD set SYSDBA password(SYSDBA)
SYSAUDITOR_PWD set SYSAUDITOR password(SYSAUDITOR)
DB_NAME database name(DAMENG)
INSTANCE_NAME instance name(DMSERVER)
PORT_NUM listener port(5236)
TIME_ZONE set time zone(+08:00)
PAGE_CHECK page check mode(0), optional value: 0/1/2
EXTERNAL_CIPHER_NAME set default encrypt/decrypt algorithm
EXTERNAL_HASH_NAME set default hash algorithm
EXTERNAL_CRYPTO_NAME set crypto name to encrypt svr key
RLOG_ENC_FLAG whether encrypt redo log(N), optional value: Y/N, 1/0
USBKEY_PIN set usbkey pin
ENCRYPT_NAME set algorithm for encrypt the whole database
BLANK_PAD_MODE set blank padding mode(0), optional value:0/1
SYSTEM_MIRROR_PATH mirror path of system data file
MAIN_MIRROR_PATH mirror path of main file
ROLL_MIRROR_PATH mirror path of roll file
MAL_FLAG MAL_INI flag(0) in dm.ini
ARCH_FLAG ARCH_INI(0) flag in dm.ini
MPP_FLAG MPP_INI(0) flag in dm.ini
CONTROL control file path!
AUTO_OVERWRITE whether overwrite all files with the same name(0) 0: no 1: part 2: all
USE_NEW_HASH whether use new hash algorithm for string. (default 1)
DCP_MODE whether is DM CLUSTER PROXY mode(default 0)
DCP_PORT_NUM in DCP mode, set dcp_port_num
ELOG_PATH set the path of log file recording the contents during initialization
AP_PORT_NUM in ECS mode, AP listener port for cooperative work
HELP print help information
参数说明
参数名称 | 说明 | 默认值 |
---|---|---|
SEC_PRIV_MODE | 权限管理模式。取值 0、1 和 2。 0:TRADITION,表示传统模式; 1:BMJ,表示专用机模式; 2:EVAL,表示 EVAL 测评模式。 |
0 |
CASE_SENSITIVE | 标识符大小写敏感。当大小写敏感时,小写的标识符应用""括起,否则被系统自动转换为大写;当大小写不敏感时,系统不会转换标识符的大小写,在标识符比较时也不能区分大小写。 取值: Y、y、1 表示敏感; N、n、0 表示不敏感。 可选参数。 |
Y |
LENGTH_IN_CHAR | VARCHAR 类型对象的长度是否以字符为单位。可选参数。 取值: 1、Y 表示是:所有 VARCHAR 类型对象的长度以字符为单位。 0、N 表示否:所有 VARCHAR 类型对象的长度以字节为单位 |
0 |
TIME_ZONE | 初始化时区,默认为东八区(+08:00)。 格式为[正负号]小时[:分钟],其中,正负号和分钟为可选项。时区设置范围为:-12:59~+14:00。可选参数。 |
|
PAGE_CHECK | 是否启用页面内容校验模式。 取值为:0:不启用;1:简单校验;2:严格校验(使用CRC16 算法生成校验码)。可选参数。 |
0 |
AUTO_OVERWRITE | 是否覆盖建库目录下所有同名文件。可选参数。 取值: 0 :不覆盖,表示建库目录下如果没有同名文件,直接创建。如果遇到同名文件时,屏幕提示是否需要覆盖,由用户手动输入是与否(y/n,1/0); 1 :部分覆盖,表示覆盖建库目录下所有同名文件; 2 :完全覆盖,表示先清理掉建库目录下所有文件再重新创建。 |
0 |
USE_NEW_HASH | 是否使用改进的字符类型 HASH 算法。可选参数。 字符类型在计算 HASH 值时所采用的 HASH 算法类别。 取值: 0:原始 HASH 算法; 1:改进的 HASH 算法。 |
1 |
- PAGE_CHECK 主要用来和数据库镜像一起使用。当 PAGE_CHECK 为 1 或 2 时,表示开
启镜像系统,默认值 0 不开启。开启镜像后,用户还需要对指定的数据文件或回滚文件创建对应的镜像文件,涉及到的建库参数有 SYSTEM_MIRROR_PATH、MAIN_MIRROR_PATH 和 ROLL_MIRROR_PATH- 镜像系统的运行流程:当系统需要把数据写入数据文件(或回滚文件)时,在写入以后如果数据文件(或回滚文件)创建了镜像文件,则需要把数据内容同时写入到镜像文件中。当系统需要从数据文件(或回滚文件)中读取数据时,如果数据文件(或回滚文件)中的校验信息与通过页内容生成的校验信息不一致则认为数据页已经损坏,那么系统会自动读取镜像文件中的数据继续提供服务。
启动初始化工具
[dmdba@progs tool]$ dminit
initdb V7.6.0.184-Build(2019.08.08-110764)ENT
db version: 0x7000a
License will expire on 2020-09-20
input system dir: /ups/app/dmdb/dmdata -- << 数据文件存放路径
input db name: dmdb -- << 实例/数据库名
input port num: 5336 -- << 服务端口
input page size(4, 8, 16, 32): 8 -- << 数据库页大小
input extent size(16, 32): 16 -- << 扩展大小
input sec priv mode(0, 1): 0 -- << 安全特权模式
input time zone(-12:59,+14:00): +8:00 -- << 时区 ,选东8区
string case sensitive? ([Y]es, [N]o): N -- << 字符串比较是否区分大小写
which charset to use? (0[GB18030], 1[UTF-8], 2[EUC-KR]): 1 -- << 字符集
length in char? ([Y]es, [N]o): y -- << 字符长度
enable database encrypt? ([Y]es, [N]o): N -- << 是否启用数据库加密
page check mode? (0/1/2): 0 -- << 是否开启页页检查模式
input elog path: -- << 日志路径
auto_overwrite mode? (0/1/2): 0 -- <<
log file path: /ups/app/dmdb/dmdata/dmdb/dmdb01.log
log file path: /ups/app/dmdb/dmdata/dmdb/dmdb02.log
write to dir [/ups/app/dmdb/dmdata/dmdb].
create dm database success. 2019-10-21 10:04:09
[dmdba@progs tool]$
# 参数说明
CASE_SENSITIVE/string case sensitive?
-- 当大小写敏感时,小写的标识符应用""括起,否则被系统自动转换为大写;当大小写不敏感时,系统不会转换标识符的大小写,在标识符比较时也不能区分大小写。
-- 取值:Y、y、1 表示敏感;N、n、0 表示不敏感。默认值为 Y
执行日志
# 命令执行日志
cd /ups/app/dmdb/dmdata/dmdb
[dmdba@progs dmdb]$ cat dminit20191021100404.log
start init database: V7.6.0.184-Build(2019.08.08-110764)ENT , 2019-10-21 10:04:04
init params:
db path: /ups/app/dmdb/dmdata/dmdb
db name: dmdb
auto overwrite: 0
page size: 8192
extent size: 16
time zone: +08:00
string case sensitive: 0
charset: 1
length in char: 1
page check mode: 0
priv flag: 0
rlog enc flag: 0
use new hash: 1
blank pad mode: 0
sec priv mode: 0
log file path: /ups/app/dmdb/dmdata/dmdb/dmdb01.log
log file path: /ups/app/dmdb/dmdata/dmdb/dmdb02.log
create ini file /ups/app/dmdb/dmdata/dmdb/dm.ini success.
create rlog file /ups/app/dmdb/dmdata/dmdb/dmdb01.log success.
create rlog file /ups/app/dmdb/dmdata/dmdb/dmdb02.log success.
SYSTEM file : /ups/app/dmdb/dmdata/dmdb/SYSTEM.DBF
MAIN file : /ups/app/dmdb/dmdata/dmdb/MAIN.DBF
ROLL file : /ups/app/dmdb/dmdata/dmdb/ROLL.DBF
create dm database success. 2019-10-21 10:04:09
2.2.3 配置启动服务
# 0. 配置注册服务帮助信息
cd ${DM_HOME}/script/root
[root@progs root]# ./dm_service_installer.sh -h
Usage: dm_service_installer.sh -t service_type [-p service_name_postfix] [-i ini_file] [-d dcr_ini_file] [-m open|mount] [-y dependent_service]
or dm_service_installer.sh [-s service_file_path]
or dm_service_installer.sh -h
-t Service Type, include: dmimon,dmap,dmserver,dmwatch,dmrww,dmwmon,dmwatcher,dmmonitor,dmcss,dmcssm,dmasmsvr.
-p Service Name Postfix, is invalid for dmimon,dmap.
-i The path of the ini file, is invalid for dmimon,dmap.
-d The path of dmdcr.ini, is valid for dmserver only, select.
-m Set the start modeof the server, include:open or mount, is valid for dmserver only, select.
-y Set the dependent service, this parameter is valid for dmserver,dmasmsvr in systemd service environment.
-s The path of the service script file, if set this parameter and ignore other parameter but -y.
-h Help
[root@progs root]#
# 1. 执行命令增加DM相关服务
./dm_service_installer.sh -t dmserver -i /ups/app/dmdb/dmdata/dmdb/dm.ini -p DMSERVER
[root@progs root]# ./dm_service_installer.sh -t dmserver -i /ups/app/dmdb/dmdata/dmdb/dm.ini -p DMSERVER
Created symlink from /etc/systemd/system/multi-user.target.wants/DmServiceDMSERVER.service to /usr/lib/systemd/system/DmServiceDMSERVER.service.
Finished to create the service (DmServiceDMSERVER)
[root@progs root]#
# 2. 启动服务
systemctl start DmServiceDMSERVER
systemctl status DmServiceDMSERVER
systemctl enable DmServiceDMSERVER
3. 客户端连接
disql SYSDBA/SYSDBA@192.168.10.181:5336
disql SYSAUDITOR/SYSAUDITOR@192.168.10.181:5336
查看版本信息
通过视图查看
-- dm7
select * from v$version;
-- md8
select * from v$version;
select id_code;
-- # DM8 版本号的具体命名规则估计由: 大版本和发布日期组成
通过dminit工具查看
$DM_HOME/bin/dminit
查看字符集
select sf_get_unicode_flag();
select unicode();
-- 字符集对应的编号:0 表示 GB18030,1 表示 UTF-8,2 表示 EUC-KR
字符集的包括关系:GB2312 < GBK < GB18030 < UTF8
license说明
DM 数据库在启动时都会进行 LICENSE 检查。若LICENSE 过期或 KEY 文件与实际运行环境不配套,DM 服务器会强制退出。
达梦数据库的测试版秘钥授权默认是1年时间,从软件发布时算起,而不是安装时间。 如果秘钥到期之后,如果是测试环境,可以通过重新安装新版的数据库来解决,如果是生产环境,则可以通过更换秘钥,来保证数据库的正常运行。
替换license
1.找到达梦数据库的$DM_HOME/bin目录
2.将dm.key文件拷贝到$DM_HOME/bin目录下
3.用SYSDBA登录数据库,执行以下命令
SQL> SP_LOAD_LIC_INFO();
-- 该存储过程检查 LICENSE 与当前 DM 版本及系统运行环境是否一致,没有返回值。如果有不一致则 DM 服务器主动退出。
4.执行以下命令确认新的license已生效
SQL> select * from v$license;
通过 V$LICENSE 视图可以查看 DM 数据库的 LICENSE 信息
disql SYSDBA/SYSDBA
select id_code();
select t.LIC_VERSION,t.SERIES_NO,t.AUTHORIZED_CUSTOMER,t.SERVER_SERIES,expired_date,PRODUCT_TYPE
from V$LICENSE t;
-- 通过对达梦版本好的查询对比,若软件是2019年11月29日发布的,则秘钥授权的过期时间是2020年11月29日
-- 软件版本在 SERVER_SERIES 列体现,有如下值:P:个人版、S:标准版、E:企业版、A:安全版、C:云版本。
调整优化基础参数
DECLARE
v_mem_mb INT;
v_cpus INT;
BEGIN
SELECT TOP 1 N_CPU, TOTAL_PHY_SIZE/1024/1024 INTO v_cpus, v_mem_mb FROM V$SYSTEMINFO;
PRINT v_cpus;
PRINT v_mem_mb;
--修改线程数
IF v_cpus < 8 THEN v_cpus := 8; END IF;
IF v_cpus > 64 THEN v_cpus := 64; END IF;
SP_SET_PARA_VALUE(2,'WORKER_THREADS',v_cpus);
SP_SET_PARA_VALUE(2,'TASK_THREADS',v_cpus);
--修改内存
SP_SET_PARA_VALUE(2,'BUFFER_POOLS',101);
SP_SET_PARA_VALUE(2,'BUFFER', cast(v_mem_mb * 0.6 as INT));
SP_SET_PARA_VALUE(2,'MAX_BUFFER', cast(v_mem_mb * 0.7 as INT));
SP_SET_PARA_VALUE(2,'HJ_BUF_GLOBAL_SIZE', cast(v_mem_mb * 0.18 as INT));
SP_SET_PARA_VALUE(2,'HJ_BUF_SIZE', cast(v_mem_mb * 0.0018 as INT));
SP_SET_PARA_VALUE(2,'HAGR_BUF_GLOBAL_SIZE', cast(v_mem_mb * 0.12 as INT));
SP_SET_PARA_VALUE(2,'HAGR_BUF_SIZE', cast(v_mem_mb * 0.0024 as INT));
END;