一 前言
系統管理員能夠利用 dminit 工具提供的各類參數,設置數據庫存放路徑、段頁大小、是否對大小寫敏感、以及是否使用 UNICODE 等,建立出知足用戶須要的數據庫。該工具位於安裝目錄的/bin 目錄下。node
二 dminit入門
2.1 啓動dminit
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。
算法
2.2 查看dminit參數
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
sql
例程: ./dminit PATH=/public/dmdb/dmData PAGE_SIZE=16 關鍵字 說明(默認值) --------------------------------------------------------------------------- INI_FILE 初始化文件dm.ini存放的路徑 PATH 初始數據庫存放的路徑 CTL_PATH 控制文件路徑 LOG_PATH 日誌文件路徑 EXTENT_SIZE 數據文件使用的簇大小(16),可選值:1六、32,單位:頁 PAGE_SIZE 數據頁大小(8),可選值:四、八、1六、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 打印幫助信息
2.3 部分重要參數說明
2.3.1 INI_FILE
初始化文件 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
數據庫
2.3.2 PATH
初始數據庫存放的路徑。默認路徑爲 dminit/dminit.exe 當前所在的工做目錄。文件路徑長度最大爲 256 個字符。可選參數。服務器
2.3.3 CTL_PATH
初始數據庫控制文件的路徑,默認值 Windows 下爲 PATH\DB_NAME\dm.ctl,Linux下爲/PATH/DM_NAME/dm.ctl(PATH 和 DB_NAME 表示各自設置的值)。文件路徑長度最大爲 256 個字符。可選參數。ide
2.3.4 LOG_PATH
初始數據庫日誌文件的路徑。默認值 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
工具
2.3.5 EXTENT_SIZE
數據文件使用的簇大小,即每次分配新的段空間時連續的頁數。取值:1六、32。單位:頁數。缺省值 16。可選參數。性能
2.3.6 PAGE_SIZE
數據文件使用的頁大小。取值:四、八、1六、32,單位:K。默認值爲 8。可選參數。選擇的頁大小越大,則 DM 支持的元組長度也越大,但同時空間利用率可能降低。ui
2.3.7 LOG_SIZE
重作日誌文件大小。取值:64~2048 之間的整數,單位 M。默認值爲 256。可選參數。
每一個 DM 數據庫實例至少有兩個重作日誌文件,循環使用,LOG_SIZE 設置每一個重作日誌文件的大小。
修改日誌文件路徑可使用 LOG_PATH 參數。
加密
2.3.8 CASE_SENSITIVE
標識符大小寫敏感。當大小寫敏感時,小寫的標識符應用""括起,不然被系統自動轉換爲大寫;當大小寫不敏感時,系統不會轉換標識符的大小寫,在標識符比較時也不能區分大小寫。取值:Y、y、1 表示敏感;N、n、0 表示不敏感。默認值爲 Y。可選參數。
一些重要的參數就介紹到這裏,其它參數能夠參考官方文檔或者自行查看幫助。
三 dminit使用
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環境下略有不一樣,下面分別詳細介紹。
3.1 初始化單機庫
DM 支持初始化數據庫到一個普通機器上或是一個共享存儲上。本節以文件系統爲例,初始化單機數據庫。 涉及路徑和文件大小的參數配置,詳細參考官方文檔。 例如,在文件系統上建立數據庫。參數path、main、system、roll、ctl_path、log0一、log02都指定了文件系統,單機配置文件(命名dminit.ini)書寫以下: [dmdba@dm3 dm7]$ cat dminit.ini [semiter] --實例名使用control配置文件指定實例不能使用instance_name參數 db_name = semiter path =/dm7/data main = /dm7/data/semiter/main.dbf main_size = 256 system = /dm7/data/semiter/system.dbf system_size = 256 roll = /dm7/data/semiter/roll.dbf roll_size = 256 ctl_path = /dm7/data/semiter/dm.ctl log_path = /dm7/data/semiter/log01.log log_path = /dm7/data/semiter/log02.log log_size = 128 auto_overwrite = 2 初始化數據庫 [dmdba@dm3 bin]$ ./dminit control=/dm7/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-06-05 log file path: /dm7/data/semiter/log01.log log file path: /dm7/data/semiter/log02.log write to dir [/dm7/data/semiter]. create dm database succe$$. 2020-05-22 22:36:10 註冊數據庫服務 [root@dm3 root]# ./dm_service_installer.sh -t dmserver -p semiter -i /dm7/data/semiter/dm.ini -m open ln -s '/usr/lib/systemd/system/DmServicesemiter.service' '/etc/systemd/system/multi-user.target.wants/DmServicesemiter.service' Finished to create the service (DmServicesemiter) [root@dm3 root]# systemctl start DmServicesemiter [root@dm3 root]# ps -ef |
grep dmserver dmdba 31843 1 21 01:29 ? 00:00:05 /dm7/bin/dmserver /dm7/data/semiter/dm.ini –noconsole root 31901 3225 0 01:30 pts/2 00:00:00 grep --color=auto dmserver 鏈接數據庫 [dmdba@dm3 ~]$ disql SYSDBA/SYSDBA@10.13.13.140:5236 Server[10.13.13.140:5236]:mode is normal, state is open login used time: 10.975(ms) disql V7.1.6.46-Build(2018.02.08-89107)ENT Connected to: DM 7.1.6.46 SQL> select * from v$version; LINEID BANNER |
---|
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.
3.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@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.
dmdba@10.13.13.162'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]$
啓動數據庫服務器
一、在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)
二、啓動數據庫
[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.