系统管理员可以利用 dminit 工具提供的各种参数,设置数据库存放路径、段页大小、是否对大小写敏感、以及是否使用 UNICODE 等,创建出满足用户需要的数据库。该工具位于安装目录的/bin 目录下。
dminit 工具需要从命令行启动。找到 dminit 所在安装目录/bin,输入 dminit 和参数后回车。
语法如下:
dminit KEYWORD=value { KEYWORD=value }
KEYWORD :dminit 参数关键字。多个参数之间排列顺序无影响,参数之间使用空格间隔。value:参数取值。
说明:dminit 如果没有带参数,系统会引导用户 进行 设置。参数、等号和值之间不能有空格,例如 PAGE_SIZE=16。HELP 参数的后面不用添加 “= ”
例如,初始化一个数据库,放在/home/test/dmdbms 目录下,数据页 PAGE_SIZE 大小为16K。
./dminit PATH=/home/test/dmdbms PAGE_SIZE=16
如果创建成功,则屏幕显示如下:
initdb V7.1.5.22-Build(2015.11.17-62910trunc)
db version: 0x70009
createdm database succe$$. 2015-12-21 15:46:27
此时在/home/test/dmdbms 目录下会出现一个 DAMENG 文件夹,内容包含初始数据库DAMENG 的相关文件和 DM 数据库启动所必须的配置文件 dm.ini。
dminit 使用较为灵活,参数较多。用户可使用“dminit HELP”快速查看各参数。
[dmdba@dm3 ~]$ dminit help
initdb V7.6.0.171-Build(2019.07.02-109059)ENT
db version: 0x7000a
file dm.key not found, use default license!
License will expire on 2020-07-02
格式: ./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,单位:页
PAGE_SIZE 数据页大小(8),可选值:4、8、16、32,单位:K
LOG_SIZE 日志文件大小(256),单位为:M,范围为:64M ~ 2G
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]
LENGTH_IN_CHAR VARCHAR类型长度是否以字符为单位(N),可选值:Y/N,1/0
SYSDBA_PWD 设置SYSDBA密码(SYSDBA)
SYSAUDITOR_PWD 设置SYSAUDITOR密码(SYSAUDITOR)
DB_NAME 数据库名(DAMENG)
INSTANCE_NAME 实例名(DMSERVER)
PORT_NUM 监听端口号(5236)
TIME_ZONE 设置时区(+08:00)
PAGE_CHECK 页检查模式(0),可选值:0/1/2
EXTERNAL_CIPHER_NAME 设置默认加密算法
EXTERNAL_HASH_NAME 设置默认HASH算法
EXTERNAL_CRYPTO_NAME 设置根密钥加密引擎
RLOG_ENC_FLAG 设置日志文件是否加密(N),可选值:Y/N,1/0
USBKEY_PIN 设置USBKEY PIN
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)
DCP_MODE 是否是DCP代理模式(0)
DCP_PORT_NUM DCP代理模式下管理端口
ELOG_PATH 指定初始化过程中生成的日志文件所在路径
AP_PORT_NUM ECS模式下AP协同工作的监听端口
HELP 打印帮助信息
初始化文件 dm.ini 存放的路径,指定一个已经存在的 dm.ini 文件所在的绝对路径。作用是将现有 INI 文件,拷贝到新库,作为新库的 INI 文件直接使用。文件路径长度最大为 256个字符。可选参数。
如果不指定该参数,那么 dminit 工具会直接生成一个新的 dm.ini 文件。如果指定了该参数但指定的 INI 文件不存在,那么 dminit 工具会报错无效的 INI 文件,同时生成一个新的 dm.ini 文件。
例如,指定现有/home/test/dmdbms 库中 dm.ini,给新创建的/home/dest/dmdbms库使用。
./dminit INI_FILE=/home/test/dmdbms/DAMENG/dm.ini PATH=/home/dest/dmdbms
初始数据库存放的路径。默认路径为 dminit/dminit.exe 当前所在的工作目录。文件路径长度最大为 256 个字符。可选参数。
初始数据库控制文件的路径,默认值 Windows 下为 PATH\DB_NAME\dm.ctl,Linux下为/PATH/DM_NAME/dm.ctl(PATH 和 DB_NAME 表示各自设置的值)。文件路径长度最大为 256 个字符。可选参数。
初始数据库日志文件的路径。默认值 Windows下为 PATH\DB_NAME\DB_NAME01.log和 PATH\DB_NAME\DB_NAME02.log,Linux 下为 PATH/DB_NAME/DB_NAME01.log 和PATH/DB_NAME/DB_NAME02.log(PATH 和 DB_NAME 表示各自设置的值)。文件路径长度最大为 256 个字符。日志文件路径个数不能超过 10 个。可选参数。
修改日志文件大小可以使用 LOG_SIZE 参数。
例如,创建一个数据库,包含两个日志文件 DATA01.log 和 DATA02.log。
./dminit PATH=/home/dest/dmdbms LOG_PATH=/home/dest/dmdbms/DATA01.log
LOG_PATH=/home/dest/dmdbms/DATA02.log
数据文件使用的簇大小,即每次分配新的段空间时连续的页数。取值:16、32。单位:页数。缺省值 16。可选参数。
数据文件使用的页大小。取值:4、8、16、32,单位:K。默认值为 8。可选参数。选择的页大小越大,则 DM 支持的元组长度也越大,但同时空间利用率可能下降。
重做日志文件大小。取值:64~2048 之间的整数,单位 M。默认值为 256。可选参数。
每个 DM 数据库实例至少有两个重做日志文件,循环使用,LOG_SIZE 设置每个重做日志文件的大小。
修改日志文件路径可以使用 LOG_PATH 参数。
标识符大小写敏感。当大小写敏感时,小写的标识符应用""括起,否则被系统自动转换为大写;当大小写不敏感时,系统不会转换标识符的大小写,在标识符比较时也不能区分大小写。取值:Y、y、1 表示敏感;N、n、0 表示不敏感。默认值为 Y。可选参数。
一些重要的参数就介绍到这里,其它参数可以参考官方文档或者自行查看帮助。
CONTROL参数是dminit工具的高级功能,用于初始化数据库时指定初始化配置文件。初始化配置文件是一个保存了各数据文件路径和大小设置、所有dminit工具的命令行参数设置等信息的文本,名称由用户自己选取,例如:dminit.ini 、abc.txt、dminit.ctl等。
dminit工具使用CONTROL参数,就不能再指定其他参数,CONTROL参数只能单独使用。
DM既支持初始化单机数据库,又支持初始化RAC集群的数据库。操作非常简单,只要在使用dminit工具创建数据库的时候,使用CONTROL参数指定初始化配置文件即可。
例如:初始化配置文件为dminit.ini。
./dminit CONTROL=/home/data/dminit.ini
初始化配置文件(本章统一命名为dminit.ini)内容如何书写,单机和RAC环境下略有不同,下面分别详细介绍。
1 DM Database Server x64 V7.1.6.46-Build(2018.02.08-89107)ENT
2 2 DB Version: 0x7000a
used time: 3.827(ms). Execute id is 807.
DM RAC是一个单数据库、多实例的集群系统,数据库部署在共享存储上,供所有节点访问,具有高可用性、高性能、低成本等特性。DM支持在RAC环境下创建数据库。RAC的初始化库配置文件dminit.ini中涉及到的参数,是在单机dminit.ini基础上,增加了RAC节点信息。同时,把单机dminit.ini中node_instance参数去掉,log_size,log_path二个参数下放到每个RAC节点里。
准备dminit.ini 配置文件
在2个节点的/dm/dmdbms/data目录下创建 dminit.ini 配置文件,添加如下内容。 在2个节点都创建。
[dmdba@dmrac1 data]$ vi dminit.ini
db_name = rac
system_path = +DMDATA/data
system = +DMDATA/data/rac/system.dbf
system_size = 128
roll = +DMDATA/data/rac/roll.dbf
roll_size = 128
main = +DMDATA/data/rac/main.dbf
main_size = 128
ctl_path = +DMDATA/data/rac/dm.ctl
ctl_size = 8
log_size = 256
dcr_path = /dev/raw/raw1 #dcr 磁盘路径,目前不支持 asm,只能是裸设备
dcr_seqno = 0
auto_overwrite = 1
[RAC0] #inst_name 跟 dmdcr_cfg.ini 中 DB 类型 group 中 DCR_EP_NAME 对应
config_path = /dm7/data/rac0_config
port_num = 5236
mal_host = 10.10.10.161
mal_port = 9340
log_path = +DMLOG/log/rac0_log01.log
log_path = +DMLOG/log/rac0_log02.log
[RAC1] #inst_name 跟 dmdcr_cfg.ini 中 DB 类型 group 中 DCR_EP_NAME 对应
config_path = /dm7/data/rac1_config
port_num = 5236
mal_host = 10.10.10.162
mal_port = 9341
log_path = +DMLOG/log/rac1_log01.log
log_path = +DMLOG/log/rac1_log02.log
[dmdba@dmrac2 data]$ vi dminit.ini
db_name = rac
system_path = +DMDATA/data
system = +DMDATA/data/rac/system.dbf
system_size = 128
roll = +DMDATA/data/rac/roll.dbf
roll_size = 128
main = +DMDATA/data/rac/main.dbf
main_size = 128
ctl_path = +DMDATA/data/rac/dm.ctl
ctl_size = 8
log_size = 256
dcr_path = /dev/raw/raw1 #dcr 磁盘路径,目前不支持 asm,只能是裸设备
dcr_seqno = 0
auto_overwrite = 1
[RAC0] #inst_name 跟 dmdcr_cfg.ini 中 DB 类型 group 中 DCR_EP_NAME 对应
config_path = /dm7/data/rac0_config
port_num = 5236
mal_host = 10.10.10.161
mal_port = 9340
log_path = +DMLOG/log/rac0_log01.log
log_path = +DMLOG/log/rac0_log02.log
[RAC1] #inst_name 跟 dmdcr_cfg.ini 中 DB 类型 group 中 DCR_EP_NAME 对应
config_path = /dm7/data/rac1_config
port_num = 5236
mal_host = 10.10.10.162
mal_port = 9341
log_path = +DMLOG/log/rac1_log01.log
log_path = +DMLOG/log/rac1_log02.log
使用dminit初始化数据库
在任意节点启动 dminit 工具初始化数据库。dminit 执行完成后,会在 config_path 目录(/dm7/data/rac0_config 和/dm7/data/rac1_config)下生成配置文件 dm.ini 和 dmmal.ini。
[dmdba@dmrac1 data]$ dminit control=/dm7/data/dminit.ini
initdb V7.1.6.46-Build(2018.02.08-89107)ENT
db version: 0x7000a
file dm.key not found, use default license!
License will expire on 2020-05-08
log file path: +DMLOG/log/rac0_log01.log
log file path: +DMLOG/log/rac0_log02.log
log file path: +DMLOG/log/rac1_log01.log
log file path: +DMLOG/log/rac1_log02.log
write to dir [+DMDATA/data/rac].
create dm database succe$$. 2020-04-24 16:39:03
将节点一的配置文件复制到节点二:
[dmdba@dmrac1 data]$ scp -r rac1_config 10.13.13.162:pwd
The authenticity of host '10.13.13.162 (10.13.13.162)' can't be established.
RSA key fingerprint is 89:fc:3e:e3:2d:27:94:07:0e:6b:fc:c5:e8:89:44:1f.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '10.13.13.162' (RSA) to the list of known hosts.
[email protected]'s pa$$word:
sqllog.ini 100% 479 0.5KB/s 00:00
dm.ini 100% 40KB 39.8KB/s 00:00
dmmal.ini 100% 204 0.2KB/s 00:00
[dmdba@dmrac1 data]$
启动数据库服务器
1、在2个节点分别注册DM 数据库服务:
节点一:
[root@dmrac1 init.d]# /dm7/script/root/dm_service_installer.sh -t dmserver -i /dm7/data/rac0_config/dm.ini -d /dm7/data/dmdcr.ini -p rac1
Move the service script file(/dm7/bin/DmServicerac1 to /etc/rc.d/init.d/DmServicerac1)
Finished to create the service (DmServicerac1)
节点二:
[root@dmrac2 ~]# /dm7/script/root/dm_service_installer.sh -t dmserver -i /dm7/data/rac1_config/dm.ini -d /dm7/data/dmdcr.ini -p rac2
Move the service script file(/dm7/bin/DmServicerac2 to /etc/rc.d/init.d/DmServicerac2)
Finished to create the service (DmServicerac2)
2、启动数据库
[root@dmrac1 init.d]# service DmServicerac1 start
Starting DmServicerac1: [ OK ]
[root@dmrac2 ~]# service DmServicerac2 start
Starting DmServicerac2: [ OK ]
手工启动命令如下,手工启动后窗口不能关闭,所以
./dmserver /dm7/data/rac0_config/dm.ini dcr_ini=/dm7/data/dmdcr.ini
./dmserver /dm7/data/rac1_config/dm.ini dcr_ini=/dm7/data/dmdcr.ini
连接数据库验证
1 配置服务名文件
[dmdba@dmrac1 ~]$ vi /etc/dm_svc.conf
TIME_ZONE=(480)
rac=(10.13.13.161:5236,10.13.13.162:5236)
SWITCH_TIME=(10000)
SWITCH_INTERVAL=(10)
TIME_ZONE=(480)
LANGUAGE=(en)
[dmdba@dmrac2 ~]$ vi /etc/dm_svc.conf
TIME_ZONE=(480)
rac=(10.13.13.161:5236,10.13.13.162:5236)
SWITCH_TIME=(10000)
SWITCH_INTERVAL=(10)
TIME_ZONE=(480)
LANGUAGE=(en)
2连接RAC集群
[dmdba@dmrac1 ~]$ disql SYSDBA/SYSDBA@rac
Server[10.13.13.161:5236]:mode is normal, state is open
login used time: 10.365(ms)
disql V7.1.6.46-Build(2018.02.08-89107)ENT
Connected to: DM 7.1.6.46
SQL> select instance_name from v$instance;
LINEID INSTANCE_NAME
1 RAC0
used time: 18.248(ms). Execute id is 807.
SQL> select * from v$rac_ep_info;
LINEID EP_NAME EP_SEQNO EP_GUID EP_TIMESTAMP EP_MODE EP_STATUS
---------- ------- ----------- -------------------- -------------------- ------- ---------
1 RAC0 0 2067076818 2067077298 MASTER OK
2 RAC1 1 2067098084 2067098537 SLAVE OK
used time: 2.741(ms). Execute id is 808.