前言
對于常年占據國産資料庫排行榜前三的 達夢 資料庫,早已 “垂涎a已久” (¯﹃¯)!

要想學習一門資料庫技術,第一步當然是要安裝資料庫,然後才能學習使用它,順便記錄下作者的安裝初體驗!❤️
💬 介紹
達夢資料庫管理系統(以下簡稱DM)是基于客戶/伺服器方式的資料庫管理系統,可以安裝在多種計算機作業系統平台上,典型的作業系統有:
- Windows(Windows2000/2003/XP/Vista/7/8/10/Server等)
- Linux
- HP-UNIX
- Solaris
- FreeBSD
- AIX
對于不同的系統平台,有不同的安裝步驟。
根據不同的應用需求與配置,DM提供了多種不同的産品系列:
- 标準版Standard Edition
- 企業版Enterprise Edition
- 安全版Security Edition
相較于 Oracle 的全英文官方文檔來說,達夢的官方文檔就顯得親切多了,一眼看去就很喜歡!❤️
作為一款熱門的國産資料庫,對于平台的支援必然是廣泛的。下面👇🏻列出一些安裝部署基礎要求:
名稱 | 要求 |
CPU | Intel Pentium4(建議Pentium 41.6G以上)處理器 |
記憶體 | 256M(建議512M以上) |
硬碟 | 5G以上可用空間 |
網卡 | 10M以上支援TCP/IP協定的網卡 |
作業系統 | Windows(簡體中文伺服器版sp2以上)/Linux(glibc2.3以上,核心2.6,已安裝KDE/GNOME桌面環境,建議預先安裝UnixODBC元件) |
💦 安裝媒體下載下傳
🔥 達夢8安裝包
達夢官方提供的最新版本為DM8,可以直接下載下傳:
達夢8的資料庫安裝媒體下載下傳位址:
https://eco.dameng.com/download💥 Centos7 box
Linux作業系統我選擇的是 centos7,打算使用 vagrant 進行安裝:
centos7 box鏡像下載下傳位址:
https://app.vagrantup.com/luciferliu/boxes/centos7.9至此,安裝媒體都準備好了!
🏆 Linux 下 DM 的安裝
資料庫 | ||
CentOS7 | x86_64 架構 | dm8_20210630_x86_rh6_64_ent |
🍭 Centos7 環境安裝
vagrant 啟動 centos7
進入自定義目錄啟動主機:
mkdir -p /Volumes/DBA/dm8
cd /Volumes/DBA/dm8
## vagrant 初始化
vagrant init luciferliu/centos7.9
## vagrant 建立并啟動主機
vagrant up
如上圖所示,Centos7.9 的主機就已經啟動了,下面我們連接配接并且上傳 DM8 安裝包。
上傳安裝媒體
将 DM8 安裝包拷貝到目前 /Volumes/DBA/dm8 目錄下,使用 vagrant ssh 連接配接主機:
## 拷貝 DM 安裝包
cd /Volumes/DBA/dm8
cp /Users/lpc/Downloads/dm8_20210630_x86_rh6_64_ent.zip .
初始化配置
## 連接配接主機
vagrant ssh
## 修改 root 使用者密碼,密碼為 dm
echo dm | sudo passwd --stdin root
## 切換至 root 使用者
su - root
## 修改主機名
hostnamectl set-hostname dm8 && exec bash
## 配置時區
timedatectl set-timezone Asia/Shanghai
## 配置系統中文
echo 'export LANG=zh_CN.UTF-8' >> /etc/profile
## 建立 DM 軟體包目錄
mkdir /soft
## 拷貝 DM 安裝包至軟體包目錄
cp /vagrant/dm8_20210630_x86_rh6_64_ent.zip /soft
## 安裝 unzip 和 lsb_release
yum install -y unzip lsb*
## 解壓 DM 安裝包
cd /soft
unzip dm8_20210630_x86_rh6_64_ent.zip
如上圖所示,DM8 安裝包已解壓至至主機 /soft 目錄下。
🍰 安裝前準備
使用者在安裝DM之前需要檢查或修改作業系統的配置,以保證 DM 正确安裝和運作。
檢查Linux(Unix)系統資訊
## 擷取系統位數
getconf LONG_BIT
## 查詢作業系統release資訊
lsb_release -a
## 查詢系統資訊
cat /etc/issue
## 查詢系統名稱
uname -a
建立安裝使用者
為了減少對作業系統的影響,使用者不應該以root系統使用者來安裝和運作DM。使用者可以在安裝之前為DM建立一個專用的系統使用者。
## 建立 dinstall 組
groupadd -g 12349 dinstall
## 建立 dmdba 使用者
useradd -u 12345 -g dinstall -m -d /home/dmdba -s /bin/bash dmdba
## 修改 dmdba 使用者密碼
echo dmdba | passwd --stdin dmdba
建立安裝目錄及授權
mkdir /dm
mkdir -p /dm{arch,bak,data}
chown -R dmdba.dinstall /dm /soft /dmdata /dmarch /dmbak
chmod -R 775 /dm{arch,bak,data} /dm
關閉防火牆和Selinux
## 關閉防火牆
systemctl stop firewalld.service
systemctl disable firewalld.service
## 關閉selinux
setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
關閉透明大頁和numa
Linux6:
cat >>/etc/rc.d/rc.local <<EOF
if test -f /sys/kernel/mm/transparent_hugepage/enabled; then
echo never > /sys/kernel/mm/transparent_hugepage/enabled
fi
if test -f /sys/kernel/mm/transparent_hugepage/defrag; then
echo never > /sys/kernel/mm/transparent_hugepage/defrag
fi
Linux7:
sed -i 's/quiet/quiet transparent_hugepage=never numa=off/' /etc/default/grub
grub2-mkconfig -o /boot/grub2/grub.cfg
配置系統參數
cat <<EOF >>/etc/sysctl.conf
fs.aio-max-nr = 1048576
fs.file-max = 6815744
#kernel.shmall = 2097152
#kernel.shmmax = 536870912
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
vm.swappiness = 0
vm.dirty_background_ratio = 3
vm.dirty_ratio = 80
vm.dirty_expire_centisecs = 500
vm.dirty_writeback_centisecs = 100
EOF
## 激活參數配置
sysctl -p
配置作業系統限制
在Linux(Unix)系統中,因為ulimit指令的存在,會對程式使用作業系統資源進行限制。為了使DM能夠正常運作,建議使用者檢查目前安裝使用者的ulimit參數。
## 配置pam.d
cat <<EOF >>/etc/pam.d/login
session required pam_limits.so
session required /lib64/security/pam_limits.so
EOF
## 檢視 pam.d
cat /etc/pam.d/login | grep -v "^$" | grep -v "^#"
## 檢視作業系統資源限制
ulimit -a
## 解除 nice,as fsize,nproc,nofile,core,data 限制
cat <<EOF>>/etc/security/limits.conf
dmdba - nice 0
dmdba - as unlimited
dmdba - fsize unlimited
dmdba - nproc 131072
dmdba - nofile 131072
dmdba - core unlimited
dmdba - data unlimited
root - nice 0
root - as unlimited
root - fsize unlimited
root - nproc 131072
root - nofile 131072
root - core unlimited
root - data unlimited
EOF
## 檢查配置檔案
cat /etc/security/limits.conf | grep -v "^$" | grep -v "^#"
## 檢視 dmdba 使用者的資源限制
su - dmdba -c "ulimit -a"
檢查系統記憶體
為了保證DM的正确安裝和運作,要盡量保證作業系統至少1GB的可用記憶體(RAM)。如果可用記憶體過少,可能導緻DM安裝或啟動失敗。
## 擷取記憶體總大小
grep MemTotal /proc/meminfo
## 擷取交換分區大小
grep SwapTotal /proc/meminfo
## 擷取記憶體使用詳情
free -m
檢查存儲空間
DM完全安裝需要1GB的存儲空間,使用者需要提前規劃好安裝目錄,預留足夠的存儲空間。使用者在DM安裝前也應該為資料庫執行個體預留足夠的存儲空間,規劃好資料路徑和備份路徑。
## 查詢目錄 /dm 可用空間
df -h /dm
## /tmp目錄保證1GB的存儲空間
df -h /tmp
配置環境變量
## 配置 dmdba 環境變量
cat <<EOF>>/home/dmdba/.bash_profile
umask 022
export TMP=/tmp
export TMPDIR=\$TMP
export DM_HOME="/dm"
export LD_LIBRARY_PATH="\$LD_LIBRARY_PATH:\$DM_HOME/bin"
export PATH=/usr/sbin:\$PATH
export PATH=\$DM_HOME/bin:\$PATH
export PS1="[\`whoami\`@\`hostname\`:"'\$PWD]\$ '
alias ds='disql sysdba'
EOF
## 檢視環境變量
cat /home/dmdba/.bash_profile | grep -v "^$" | grep -v "^#"
🍯 安裝 DM8 資料庫
安裝同時支援圖形化安裝,指令行安裝,靜默安裝三種方式。由于我沒有安裝圖形化界面,是以使用 指令行安裝 方式進行安裝。
使用者應登入或切換到安裝系統使用者,進行以下安裝步驟的操作(注:不建議使用root系統使用者進行安裝)。
挂載 DM ISO 鏡像
官網下載下傳的 DM8 安裝包解壓下來是一個 ISO 鏡像檔案,是以需要挂載取出安裝檔案,才能開始安裝。
## 挂載 DM iso 鏡像檔案
cd /soft/dm8_20210630_x86_rh6_64_ent
mount -o loop dm8_20210630_x86_rh6_64_ent_8.1.2.18_pack7.iso /opt
## 拷貝安裝檔案至 /soft
cp /opt/DM* /soft
## 取消挂載
umount /opt
## 目錄授權
chown -R dmdba:dinstall /soft
chmod -R 775 /soft
ll /soft
指令行安裝
1、執行安裝指令:
## 切換至 dmdba 使用者
su - dmdba
cd /soft/
## 執行指令行安裝
./DMInstall.bin -i
2、按需求選擇安裝語言,預設為中文。本地安裝選擇【不輸入 Key 檔案】,選擇【預設時區 21】。
3、選擇【1-典型安裝】,按已規劃的安裝目錄 /dm 完成資料庫軟體安裝,不建議使用預設安裝目錄。
4、root 使用者執行 root 腳本:
su - root
/dm/script/root/root_installer.sh
指令行配置執行個體
使用 dmdba 使用者配置執行個體,使用 dminit 指令初始化執行個體。
su - dmdba
## 使用預設參數初始化執行個體,需要附加執行個體存放路徑 /dmdata
dminit path=/dmdata
📢 注意:dminit 指令可設定多種參數,可執行如下指令檢視可配置參數。
需要注意的是 頁大小 (PAGE_SIZE)、簇大小 (EXTENT_SIZE)、大小寫敏感 (CASE_SENSITIVE)、字元集 (CHARSET/UNICODE_FLAG)、VARCHAR類型長度(LENGTH_IN_CHAR) 這幾個參數,一旦确定無法修改,需謹慎設定。
- EXTENT_SIZE 資料檔案使用的簇大小(16),可選值:16, 32, 64,機關:頁,預設使用 16 頁。指資料檔案使用的簇大小,即每次配置設定新的段空間時連續的頁數。
- PAGE_SIZE 資料頁大小(8),可選值:4, 8, 16, 32,機關:K,選擇的頁大小越大,則 DM 支援的元組長度也越大,但同時空間使用率可能下降,預設使用 8 KB。
- CASE_SENSITIVE 大小敏感(Y),可選值:Y/N,1/0,預設值為 Y 。當大小寫敏感時,小寫的辨別符應用雙引号括起,否則被轉換為大寫;當大小寫不敏感時,系統不自動轉換辨別符的大小寫,在辨別符比較時也不區分大小寫,隻能是 Y、y、N、n、1、0 之一。
- CHARSET/UNICODE_FLAG 字元集(0),可選值:0[GB18030],1[UTF-8],2[EUC-KR];1 代表 UTF-8;2 代表韓文字元集 EUC-KR;取值 0、1 或 2 之一。預設值為 0。
- LENGTH_IN_CHAR VARCHAR類型長度是否以字元為機關(N),可選值:Y/N,1/0。
以下指令設定頁大小為 32 KB,簇大小為 32 KB,大小寫敏感,字元集為 utf_8,資料庫名為 DMDB,執行個體名為 LUCIFER,端口為 5237。
dminit path=/dmdata PAGE_SIZE=32 EXTENT_SIZE=32 CASE_SENSITIVE=y CHARSET=1 DB_NAME=DMDB INSTANCE_NAME=LUCIFER