达梦数据库(DM8)安装
一、安装部署
1.1 下载
本手册版本选择“DM8开发板”,CPU平台选择“X86”,操作系统选择“RedHat7”
下载地址:https://www.dameng.com/DM8.html
~]# wget https://download.dameng.com/eco/adapter/DM8/202401END/dm8_20240116_x86_rh7_64.zip
1.2 创建安装用户
不建议使用root用户直接安装,所以创建一个安装用户
~]# groupadd dinstall
~]# useradd -g dinstall -m -d /home/dmdba -s /bin/bash dmdba
~]# echo "ECIDI@hc99" | passwd "dmdba" --stdin
~]# mkdir -p /data/dm8
~]# chown -R dmdba.dinstall /data/dm8
1.3 镜像挂载
将dm8_20240116_x86_rh7_64.zip文件传输到/home/dmdba
dmdba]# cd /home/dmdba
dmdba]# mkdir tmp
dmdba]# unzip dm8_20240116_x86_rh7_64.zip
dmdba]# mount dm8_20240116_x86_rh7_64.iso /home/dmdba/tmp/
1.4 安装
切换到dmdba用户设置环境变量
~]$ su - dmdba
~]$ vi .bash_profile
export DM_HOME="/data/dm8"
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/data/dm8/bin"
export PATH=$PATH:$DM_HOME/bin:$DM_HOME/tool
#加载
~]$ source .bash_profile
进入安装目录安装
~]$ cd /home/dmdba/tmp/
tmp]$ ./DMInstall.bin -i
请选择安装语言 [1]:1
是否输入Key文件路径? (Y/y:是 N/n:否) [Y/y]:n
是否设置时区? (Y/y:是 N/n:否) [Y/y]:y
请选择时区 [21]:21
请选择安装类型的数字序号 [1 典型安装]:1
请选择安装目录 [/home/dmdba/dmdbms]:/data/dm8
是否确认安装路径(/data/dm8)? (Y/y:是 N/n:否) [Y/y]:y
是否确认安装? (Y/y:是 N/n:否):y
请以root系统用户执行命令:
/data/dm8/script/root/root_installer.sh
1.5 安装DmAPService服务
安装结束后按照提示使用root执行下面命令
tmp]$ exit
dmdba]# /data/dm8/script/root/root_installer.sh
移动 /data/dm8/bin/dm_svc.conf 到/etc目录
创建DmAPService服务
Created symlink /etc/systemd/system/multi-user.target.wants/DmAPService.service → /usr/lib/systemd/system/DmAPService.service.
创建服务(DmAPService)完成
启动DmAPService服务
1.6 初始化数据库
切换到dmdba用户进行初始化
-
配置大小写不敏感CASE_SENSITIVE=N
-
长度以字符为单位LENGTH_IN_CHAR=1
-
使用utf-8字符集CHARSET=1或者UNICODE_FALG=1
~]$ su - dmdba
~]$ /data/dm8/bin/dminit PATH=/data/dm8/data PAGE_SIZE=32 LOG_SIZE=2048 CHARSET=1 CASE_SENSITIVE=N LENGTH_IN_CHAR=1
initdb V8
db version: 0x7000c
file dm.key not found, use default license!
License will expire on 2024-07-03
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
log file path: /data/dm8/data/DAMENG/DAMENG01.log
log file path: /data/dm8/data/DAMENG/DAMENG02.log
write to dir [/data/dm8/data/DAMENG].
create dm database success. 2024-03-12 14:49:43
1.7 安装DmServiceDMSERVER实例
使用root用户创建实例并加入开机自启
~]$ exit
dm8]# /data/dm8/script/root/dm_service_installer.sh -t dmserver -dm_ini /data/dm8/data/DAMENG/dm.ini -p DMSERVER
Created symlink /etc/systemd/system/multi-user.target.wants/DmServiceDMSERVER.service → /usr/lib/systemd/system/DmServiceDMSERVER.service.
创建服务(DmServiceDMSERVER)完成
1.8 查看服务状态
启动实例查看服务状态及是否加入开机自启
dm8]# systemctl start DmServiceDMSERVER
dm8]# systemctl status DmAPService.service
dm8]# systemctl status DmServiceDMSERVER
二、基本使用
2.1 DM管理工具
需要再图形化界面。找到DM管理工具
端口5236,默认用户/密码:SYSDBA/SYSDBA
2.2 创建用户及密码
管理工具和disql命令行均可以执行sql语句,但是disql命令行执行有两点需要注意:
-
关闭define后逐一执行sql文件,不然会出现字符转换
-
创建schema的语句,需要在每行create schema后面一行添加'/'才可以识别,不然语法报错
#] /data/dm8/bin/disql
SQL> CREATE SCHEMA "test2";
2 /
操作已执行
已用时间: 12.887(毫秒). 执行号:79701.
#修改SYSDBA密码
ALTER USER SYSDBA IDENTIFIED BY "adminpasswd";
#创建testuser用户
create user testuser identified by "testuserpasswd";
#给testuser用户赋权,不然登录后无模式、schema及表权限
grant resource to testuser;
grant select any table to testuser;
#登录testuser用户创建testschema库并赋权给用户
CREATE SCHEMA "testschema" AUTHORIZATION "testuser";
2.3 sql文件导入
2.3.1 disql导入
将需要执行的test.sql文件导入/data/sql文件夹下
]# ll /data/sql
-rw-r--r-- 1 root root 22623008 4月 8 15:41 test.sql
disql命令行进入数据库,关闭define后逐一执行sql文件,不然会出现字符转换(只修改当前环境变量,退出后即失效)
]# cd /data/dm8/bin
bin]# ./disql
#关闭define
SQL> set define off
#参看define环境变量状态,OFF表示关闭
SQL> show define
DEFINE OFF
#使用start sql文件进行导入
SQL> start /data/sql/test.sql
#使用` sql文件进行导入
SQL> ` /data/sql/test.sql
2.3.2工具导入
三、注意事项
3.1 执行sql时需要手动输入替代值
set define off 在数据库脚本中的作用
在SQLPlus中默认的"&"表示替代变量,也就是说,只要在命令中出现该符号,SQLPlus就会要你输入替代值。这就意味着你无法将一个含有该符号的字符串输入数据库或赋给变量,如字符串“SQL&Plus”系统会理解为以“SQL”打头的字符串,它会提示你输入替代变量Plus的值,如果你输入ABC,则最终字符串转化为“SQLABC”。
set define off 则关闭该功能,“&”将作为普通字符,如上例,最终字符就为“SQL&Plus”
set define off;关闭替代变量功能
set define on; 开启替代变量功能
set define * 将默认替代变量标志符该为“*”(也可以设为其它字符)
使用show+环境变量查看,使用set+环境变量修改
SQL> set define on
SQL> show define
DEFINE & (hex 26)
SQL> set define off
SQL> show define
DEFINE OFF
3.2 初始化配置
-
配置大小写不敏感CASE_SENSITIVE=N
-
长度以字符为单位LENGTH_IN_CHAR=1
-
使用utf-8字符集CHARSET=1或者UNICODE_FALG=1
3.3 语法错误
在sql文件中最好不要添加创建schema的语句,否则会出现”The script file is not complete,last sql has not been executed.“的语法错误
如果要添加 的话就要在每行create schema后面一行添加'/'才可以识别
四、备份
4.1 备份脚本
编辑dm8_backup.sh
#!/bin/bash
DM_HOME=/data/dm8
backupDIR=/data/backup/dm8
runTime=`date +%Y%m%d_%H%M`
logFile=${backupDIR}/log/backup_${runTime}.log
deleteTime=30
user=sysdba
passwd=adminpasswd
port=5236
#删除30天前的备份文件
find ${backupDIR} -type f -name "*.dmp" -ctime +${deleteTime} -exec rm -f {} \; >> ${logFile} 2>&1
#删除30天前的日志
find ${backupDIR} -type f -name "*.log" -ctime +${deleteTime} -exec rm -f {} \; >> ${logFile} 2>&1
cd ${DM_HOME}/bin
#四种级别:full,owner,schemas,tables
#全库导出full
#./dexp ${user}/${passwd}:${port} DIRECTORY=${backupDIR} FILE=fullbak_${runTime}.dmp full=y LOG=exp_fullbak_${runTime}.log >> ${logFile} 2>&1
#owner,schemas,tables
#遍历需要导出的数据库,导出命令中的SCHEMAS也可以是OWNER或TABLES,for循环中写要备份的内容
for line in testschema test2schema
do
mkdir -p ${backupDIR}/${runTime}
./dexp USERID=${user}/${passwd}:${port} DIRECTORY=${backupDIR}/${runTime} FILE=${line}_${runTime}.dmp SCHEMAS=${line} LOG=exp_${line}_${runTime}.log >> ${logFile} 2>&1
done
#恢复schema=naco的schema的示例
#mkdir /data/backup/dm8/log/dimplog
#/data/dm8/bin/dimp USERID=SYSDBA/adminpasswd:5236 DIRECTORY=/data/backup/dm8/log/dimplog file=/data/backup/dm8/20240409_1739/test_20240409_1739.dmp SCHEMAS=nacos LOG=dimp_test_20240409_1739.log table_exists_action=TRUNCATE
4.2 恢复
~]# mkdir /data/backup/dm8/log/dimplog
~]# /data/dm8/bin/dimp USERID=SYSDBA/adminpasswd:5236 DIRECTORY=/data/backup/dm8/log/dimplog file=/data/backup/dm8/20240409_1739/test_20240409_1739.dmp SCHEMAS=nacos LOG=dimp_test_20240409_1739.log table_exists_action=TRUNCATE
五、参考文献
- 官网达梦技术文档 https://eco.dameng.com/document/dm/zh-cn/pm/index.html
- 达梦数据库(三)DISQL命令的使用-CSDN博客 https://blog.csdn.net/donghb/article/details/125931398
- 达梦数据库安装使用-CSDN博客 https://blog.csdn.net/zhangxuechao_/article/details/45505163
- 达梦数据库(导入、导出)_达梦数据库导入sql文件-CSDN博客 https://blog.csdn.net/qq_53167164/article/details/122840856