1 功能简介
dminit是DM数据库初始化工具。在安装DM的过程中,用户可以选择是否创建初始数据库。如果当时没有创建,那么在安装完成之后,可以利用创建数据库工具dminit来创建。

系统管理员可以利用dminit工具提供的各种参数,设置数据库存放路径、段页大小、是否对大小写敏感、以及是否使用UNICODE等,创建出满足用户需要的数据库。该工具位于安装目录的/bin目录下。

2 使用dminit
dminit工具需要从命令行启动。找到dminit所在安装目录/bin,输入dminit和参数后回车。参数在下一节详细介绍。
语法如下:
dminit KEYWORD=value { KEYWORD=value }
KEYWORD:dminit参数关键字。多个参数之间排列顺序无影响,参数之间使用空格间隔。value:参数取值。

dminit如果没有带参数,系统会引导用户进行设置。参数、等号和值之间不能有空格,例如PAGE_SIZE=16。HELP参数的后面不用添加“=”号。

例如,初始化一个数据库,放在/home/test/dmdbms目录下,数据页PAGE_SIZE大小为16K。

./dminitPATH=/home/test/dmdbmsPAGE_SIZE=16

如果创建成功,则屏幕显示如下:

initdbV7.1.5.22-Build(2015.11.17-62910trunc)dbversion:0x70009createdmdatabasesuccess.2015-12-2115:46:27

此时在/home/test/dmdbms目录下会出现一个DAMENG文件夹,内容包含初始数据库DAMENG的相关文件和DM数据库启动所必须的配置文件dm.ini。

3 查看dminit参数
dminit使用较为灵活,参数较多。用户可使用“dminit HELP”快速查看各参数。

[dmdba@ora19cbin]$./dminithelpinitdbV7.1.6.46-Build(2018.02.08-89107)ENTdbversion:0x7000afiledm.keynotfound,usedefaultlicense!Licensewillexpireon2020-06-05Format:./dminitKEYWORD=valueExample:./dminitPATH=/public/dmdb/dmDataPAGE_SIZE=16KeywordExplanation(defaultvalue)--------------------------------------------------------------------------------INI_FILEdm.inipathPATHdatabasepathCTL_PATHcontrolfilepathLOG_PATHlogfilepathEXTENT_SIZEextentsizeofdatafile(16),optionalvalue:16,32,unit:PAGEPAGE_SIZEpagesize(8),optionalvalue:4,8,16,32,unit:KLOG_SIZElogfilesize(256),unit:M,range:64M~2GCASE_SENSITIVEwhethercaseissensitive(Y),optionalvalue:Y/Nor1/0CHARSET/UNICODE_FLAGCHARSET(0),optionalvalue:0[GB18030],1[UTF-8],2[EUC-KR]LENGTH_IN_CHARwhetherLENGTHforVARCHARisincharacters(N),optionalvalue:Y/N,1/0SYSDBA_PWDsetSYSDBApassword(SYSDBA),passwordlengthmustbetween9and48SYSAUDITOR_PWDsetSYSAUDITORpassword(SYSAUDITOR),passwordlengthmustbetween9and48DB_NAMEdatabasename(DAMENG)INSTANCE_NAMEinstancename(DMSERVER)PORT_NUMlistenerport(5236)TIME_ZONEsettimezone(+08:00)PAGE_CHECKpagecheckmode(0),optionalvalue:0/1/2EXTERNAL_CIPHER_NAMEsetdefaultencrypt/decryptalgorithmEXTERNAL_HASH_NAMEsetdefaulthashalgorithmEXTERNAL_CRYPTO_NAMEsetcryptonametoencryptsvrkeyRLOG_ENC_FLAGwhetherencryptredolog(N),optionalvalue:Y/N,1/0USBKEY_PINsetusbkeypinENCRYPT_NAMEsetalgorithmforencryptthewholedatabaseBLANK_PAD_MODEsetblankpaddingmode(0),optionalvalue:0/1SYSTEM_MIRROR_PATHmirrorpathofsystemdatafileMAIN_MIRROR_PATHmirrorpathofmainfileROLL_MIRROR_PATHmirrorpathofrollfileMAL_FLAGMAL_INIflag(0)indm.iniARCH_FLAGARCH_INI(0)flagindm.iniMPP_FLAGMPP_INI(0)flagindm.iniCONTROLcontrolfilepath!AUTO_OVERWRITEwhetheroverwriteallfileswiththesamename(0)0:no1:part2:allUSE_NEW_HASHwhetherusenewhashalgorithmforstring.(default1)DCP_MODEwhetherisDMCLUSTERPROXYmode(default0)DCP_PORT_NUMinDCPmode,setdcp_port_numELOG_PATHsetthepathoflogfilerecordingthecontentsduringinitializationHELPprinthelpinformation

4 dminit初始化数据库
CONTROL参数是dminit工具的高级功能,用于初始化数据库时指定初始化配置文件。初始化配置文件是一个保存了各数据文件路径和大小设置、所有dminit工具的命令行参数设置等信息的文本,名称由用户自己选取,例如:dminit.ini 、abc.txt、dminit.ctl等。

dminit工具使用CONTROL参数,就不能再指定其他参数,CONTROL参数只能单独使用。

DM既支持初始化单机数据库,又支持初始化RAC集群的数据库。操作非常简单,只要在使用dminit工具创建数据库的时候,使用CONTROL参数指定初始化配置文件即可。

例如:初始化配置文件为dminit.ini。

./dminitCONTROL=/home/data/dminit.ini

初始化配置文件(本章统一命名为dminit.ini)内容如何书写,单机和RAC环境下略有不同,下面分别详细介绍。

4.1 初始化单机数据库
DM支持初始化数据库到一个普通机器上或是一个共享存储上。本节以文件系统为例,初始化单机数据库。涉及路径和文件大小的参数配置。

例如,在文件系统上创建数据库。参数path、main、system、roll、ctl_path、log01、log02都指定了文件系统,单机配置文件(命名dminit.ini)书写如下:

[dmdba@ora19cdm7]$catdminit.ini[jy]--实例名使用control配置文件指定实例不能使用instance_name参数db_name=jypath=/dm7/datamain=/dm7/data/jy/main.dbfmain_size=256system=/dm7/data/jy//system.dbfsystem_size=256roll=/dm7/data/jy//roll.dbfroll_size=256ctl_path=/dm7/data/jy/dm.ctllog_path=/dm7/data/jy/log01.loglog_path=/dm7/data/jy/log02.loglog_size=128auto_overwrite=2初始化数据库[dmdba@ora19cbin]$./dminitcontrol=/dm7/dminit.iniinitdbV7.1.6.46-Build(2018.02.08-89107)ENTdbversion:0x7000afiledm.keynotfound,usedefaultlicense!Licensewillexpireon2020-06-05logfilepath:/dm7/data/jy/log01.loglogfilepath:/dm7/data/jy/log02.logwritetodir[/dm7/data/jy].createdmdatabasesuccess.2020-05-2222:36:10注册数据库服务[root@ora19croot]#./dm_service_installer.sh-tdmserver-pjy-i/dm7/data/jy/dm.ini-mopenln-s'/usr/lib/systemd/system/DmServicejy.service''/etc/systemd/system/multi-user.target.wants/DmServicejy.service'Finishedtocreatetheservice(DmServicejy)[root@ora19croot]#systemctlstartDmServicejy[root@ora19croot]#ps-ef|grepdmserverdmdba3184312101:29?00:00:05/dm7/bin/dmserver/dm7/data/jy/dm.ini-noconsoleroot319013225001:30pts/200:00:00grep--color=autodmserver连接数据库[dmdba@ora19c~]$disqlSYSDBA/SYSDBA@10.13.13.140:5236Server[10.13.13.140:5236]:modeisnormal,stateisopenloginusedtime:10.975(ms)disqlV7.1.6.46-Build(2018.02.08-89107)ENTConnectedto:DM7.1.6.46SQL>select*fromv$version;LINEIDBANNER-----------------------------------------------------------------------1DMDatabaseServerx64V7.1.6.46-Build(2018.02.08-89107)ENT2DBVersion:0x7000ausedtime:3.827(ms).Executeidis807.

4.2初始化RAC集群的数据库
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@dmrac1data]$vidminit.inidb_name=racsystem_path=+DMDATA/datasystem=+DMDATA/data/rac/system.dbfsystem_size=128roll=+DMDATA/data/rac/roll.dbfroll_size=128main=+DMDATA/data/rac/main.dbfmain_size=128ctl_path=+DMDATA/data/rac/dm.ctlctl_size=8log_size=256dcr_path=/dev/raw/raw1#dcr磁盘路径,目前不支持asm,只能是裸设备dcr_seqno=0auto_overwrite=1[RAC0]#inst_name跟dmdcr_cfg.ini中DB类型group中DCR_EP_NAME对应config_path=/dm7/data/rac0_configport_num=5236mal_host=10.10.10.161mal_port=9340log_path=+DMLOG/log/rac0_log01.loglog_path=+DMLOG/log/rac0_log02.log[RAC1]#inst_name跟dmdcr_cfg.ini中DB类型group中DCR_EP_NAME对应config_path=/dm7/data/rac1_configport_num=5236mal_host=10.10.10.162mal_port=9341log_path=+DMLOG/log/rac1_log01.loglog_path=+DMLOG/log/rac1_log02.log[dmdba@dmrac2data]$vidminit.inidb_name=racsystem_path=+DMDATA/datasystem=+DMDATA/data/rac/system.dbfsystem_size=128roll=+DMDATA/data/rac/roll.dbfroll_size=128main=+DMDATA/data/rac/main.dbfmain_size=128ctl_path=+DMDATA/data/rac/dm.ctlctl_size=8log_size=256dcr_path=/dev/raw/raw1#dcr磁盘路径,目前不支持asm,只能是裸设备dcr_seqno=0auto_overwrite=1[RAC0]#inst_name跟dmdcr_cfg.ini中DB类型group中DCR_EP_NAME对应config_path=/dm7/data/rac0_configport_num=5236mal_host=10.10.10.161mal_port=9340log_path=+DMLOG/log/rac0_log01.loglog_path=+DMLOG/log/rac0_log02.log[RAC1]#inst_name跟dmdcr_cfg.ini中DB类型group中DCR_EP_NAME对应config_path=/dm7/data/rac1_configport_num=5236mal_host=10.10.10.162mal_port=9341log_path=+DMLOG/log/rac1_log01.loglog_path=+DMLOG/log/rac1_log02.log

使用dminit初始化数据库
在任意节点启动 dminit 工具初始化数据库。dminit 执行完成后,会在 config_path 目录(/dm7/data/rac0_config 和/dm7/data/rac1_config)下生成配置文件 dm.ini 和 dmmal.ini。

[dmdba@dmrac1data]$dminitcontrol=/dm7/data/dminit.iniinitdbV7.1.6.46-Build(2018.02.08-89107)ENTdbversion:0x7000afiledm.keynotfound,usedefaultlicense!Licensewillexpireon2020-05-08logfilepath:+DMLOG/log/rac0_log01.loglogfilepath:+DMLOG/log/rac0_log02.loglogfilepath:+DMLOG/log/rac1_log01.loglogfilepath:+DMLOG/log/rac1_log02.logwritetodir[+DMDATA/data/rac].createdmdatabasesuccess.2020-04-2416:39:03

将节点一的配置文件复制到节点二:

[dmdba@dmrac1data]$scp-rrac1_config10.13.13.162:`pwd`Theauthenticityofhost'10.13.13.162(10.13.13.162)'can'tbeestablished.RSAkeyfingerprintis89:fc:3e:e3:2d:27:94:07:0e:6b:fc:c5:e8:89:44:1f.Areyousureyouwanttocontinueconnecting(yes/no)?yesWarning:Permanentlyadded'10.13.13.162'(RSA)tothelistofknownhosts.dmdba@10.13.13.162'spassword:sqllog.ini100%4790.5KB/s00:00dm.ini100%40KB39.8KB/s00:00dmmal.ini100%2040.2KB/s00:00[dmdba@dmrac1data]$

启动数据库服务器
1、在2个节点分别注册DM 数据库服务:
节点一:

[root@dmrac1init.d]#/dm7/script/root/dm_service_installer.sh-tdmserver-i/dm7/data/rac0_config/dm.ini-d/dm7/data/dmdcr.ini-prac1Movetheservicescriptfile(/dm7/bin/DmServicerac1to/etc/rc.d/init.d/DmServicerac1)Finishedtocreatetheservice(DmServicerac1)节点二:[root@dmrac2~]#/dm7/script/root/dm_service_installer.sh-tdmserver-i/dm7/data/rac1_config/dm.ini-d/dm7/data/dmdcr.ini-prac2Movetheservicescriptfile(/dm7/bin/DmServicerac2to/etc/rc.d/init.d/DmServicerac2)Finishedtocreatetheservice(DmServicerac2)

2、启动数据库

[root@dmrac1init.d]#serviceDmServicerac1startStartingDmServicerac1:[OK][root@dmrac2~]#serviceDmServicerac2startStartingDmServicerac2:[OK]

手工启动命令如下,手工启动后窗口不能关闭,所以

./dmserver/dm7/data/rac0_config/dm.inidcr_ini=/dm7/data/dmdcr.ini./dmserver/dm7/data/rac1_config/dm.inidcr_ini=/dm7/data/dmdcr.ini

连接数据库验证
1 配置服务名文件

[dmdba@dmrac1~]$vi/etc/dm_svc.confTIME_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.confTIME_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~]$disqlSYSDBA/SYSDBA@racServer[10.13.13.161:5236]:modeisnormal,stateisopenloginusedtime:10.365(ms)disqlV7.1.6.46-Build(2018.02.08-89107)ENTConnectedto:DM7.1.6.46SQL>selectinstance_namefromv$instance;LINEIDINSTANCE_NAME-----------------------1RAC0usedtime:18.248(ms).Executeidis807.SQL>select*fromv$rac_ep_info;LINEIDEP_NAMEEP_SEQNOEP_GUIDEP_TIMESTAMPEP_MODEEP_STATUS------------------------------------------------------------------------------------1RAC0020670768182067077298MASTEROK2RAC1120670980842067098537SLAVEOKusedtime:2.741(ms).Executeidis808.