Heartsuit's Simple Blog

A place to hold mainly reading notes, and some technical stuff occasionally. 这里主要是一些读书笔记、感悟;还有部分技术相关的内容。


Project maintained by heartsuit Hosted on GitHub Pages — Theme by mattgraham

信创迁移适配预研-达梦数据库DM8服务与客户端工具安装使用

目录[-]

背景

凡事预则立

听说我们的项目将来要部署到国产化平台上,数据库用的是达梦数据库,国产的这些组件也没有用过,就想着在虚拟机安装数据库服务(因为是在 CentOS7 上安装测试,所以图形化客户端无法使用,可以通过在远程/宿主 Windows 主机上选择仅安装客户端使用,eg:DM管理工具,DM数据迁移工具等),先研究下国产数据库的使用,包括基础的 CRUD 操作以及事务支持,方便将来的部署与维护。

2022-03-19-DM8Home.jpg

由于本系列文章仅用于记录当时项目的国产化迁移过程,不涉及太多的理论内容,基本都是一系列的操作过程,所以行文上就直接上操作了。如果您有任何疑问,欢迎留言评论。

从前车马很慢,书信很远,一生只够爱一个人。

如今生活太快,时间太少,不要绕圈子,给我来个痛快的。

系统环境

CentOS7 上进行安装,虚拟主机信息如下:

[root@hadoop3 local]# uname -a
Linux hadoop3 3.10.0-1127.el7.x86_64 #1 SMP Tue Mar 31 23:36:51 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
[root@hadoop3 local]# cat /proc/version
Linux version 3.10.0-1127.el7.x86_64 (mockbuild@kbuilder.bsys.centos.org) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-39) (GCC) ) #1 SMP Tue Mar 31 23:36:51 UTC 2020
[root@hadoop3 local]# cat /etc/redhat-release
CentOS Linux release 7.8.2003 (Core)

下载

https://www.dameng.com/ucenter/docs.html

手机号、短信验证码登录。

下载 x86CentOS7 下的 DM8 开发版。

解压, iso 解压,将 DMInstall.bin 上传至服务器,赋予可读、可写、可执行权限。

安装

执行安装文件

[root@hadoop3 local]# chmod +x DMInstall.bin 

[root@hadoop3 local]# ./DMInstall.bin 
解压安装程序..........
Exception in thread "main" java.lang.UnsatisfiedLinkError: Could not load SWT library. Reasons: 
        no swt-pi-gtk-3659 in java.library.path
        no swt-pi-gtk in java.library.path
        Can't load library: /tmp/swtlib-64/libswt-pi-gtk-3659.so
        Can't load library: /tmp/swtlib-64/libswt-pi-gtk.so
        /tmp/swtlib-64/libswt-pi-gtk-3659.so: libgtk-x11-2.0.so.0: 无法打开共享对象文件: 没有那个文件或目录

        at org.eclipse.swt.internal.Library.loadLibrary(Library.java:267)
        at org.eclipse.swt.internal.Library.loadLibrary(Library.java:174)
        at org.eclipse.swt.internal.gtk.OS.<clinit>(OS.java:22)
        at org.eclipse.swt.internal.Converter.wcsToMbcs(Converter.java:63)
        at org.eclipse.swt.internal.Converter.wcsToMbcs(Converter.java:54)
        at org.eclipse.swt.widgets.Display.<clinit>(Display.java:132)
        at org.eclipse.swt.widgets.Widget.isValidSubclass(Widget.java:988)
        at org.eclipse.swt.widgets.Decorations.checkSubclass(Decorations.java:164)
        at org.eclipse.swt.widgets.Shell.<init>(Shell.java:258)
        at org.eclipse.swt.widgets.Shell.<init>(Shell.java:253)
        at org.eclipse.swt.widgets.Shell.<init>(Shell.java:204)
        at org.eclipse.swt.widgets.Shell.<init>(Shell.java:140)
        at com.dameng.common.gui.util.SWTUtility.canInitGUI(SWTUtility.java:380)
        at com.dameng.install.ui.MainApplication.run(MainApplication.java:80)
        at com.dameng.install.ui.MainApplication.main(MainApplication.java:436)

# 缺少相关的依赖,安装即可
yum install -y libXtst

# 再次执行安装
[root@hadoop3 local]# ./DMInstall.bin 
解压安装程序..........
Exception in thread "main" java.lang.UnsatisfiedLinkError: Could not load SWT library. Reasons: 
        no swt-pi-gtk-3659 in java.library.path
        no swt-pi-gtk in java.library.path
        /tmp/swtlib-64/libswt-pi-gtk-3659.so: libgtk-x11-2.0.so.0: 无法打开共享对象文件: 没有那个文件或目录
        Can't load library: /tmp/swtlib-64/libswt-pi-gtk.so

        at org.eclipse.swt.internal.Library.loadLibrary(Library.java:267)
        at org.eclipse.swt.internal.Library.loadLibrary(Library.java:174)
        at org.eclipse.swt.internal.gtk.OS.<clinit>(OS.java:22)
        at org.eclipse.swt.internal.Converter.wcsToMbcs(Converter.java:63)
        at org.eclipse.swt.internal.Converter.wcsToMbcs(Converter.java:54)
        at org.eclipse.swt.widgets.Display.<clinit>(Display.java:132)
        at org.eclipse.swt.widgets.Widget.isValidSubclass(Widget.java:988)
        at org.eclipse.swt.widgets.Decorations.checkSubclass(Decorations.java:164)
        at org.eclipse.swt.widgets.Shell.<init>(Shell.java:258)
        at org.eclipse.swt.widgets.Shell.<init>(Shell.java:253)
        at org.eclipse.swt.widgets.Shell.<init>(Shell.java:204)
        at org.eclipse.swt.widgets.Shell.<init>(Shell.java:140)
        at com.dameng.common.gui.util.SWTUtility.canInitGUI(SWTUtility.java:380)
        at com.dameng.install.ui.MainApplication.run(MainApplication.java:80)
        at com.dameng.install.ui.MainApplication.main(MainApplication.java:436)

# 缺少相关的依赖,安装即可
yum install -y gtk2

[root@hadoop3 local]# ./DMInstall.bin 
解压安装程序..........
初始化图形界面失败,如果当前监视器窗口不支持图形界面,请进入安装文件所在文件夹并使用"./DMInstall.bin -i"进行命令行安装。

[root@hadoop3 local]# ./DMInstall.bin -i
请选择安装语言(C/c:中文 E/e:英文) [C/c]:
解压安装程序..........
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 14989
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1024
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) 14989
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

可打开文件数过少,建议至少设置为65536或更多。

欢迎使用达梦数据库安装程序

是否输入Key文件路径? (Y/y:是 N/n:否) [Y/y]:n

是否设置时区? (Y/y:是 N/n:否) [Y/y]:y
设置时区:
[ 1]: GTM-12=日界线西
[ 2]: GTM-11=萨摩亚群岛
[ 3]: GTM-10=夏威夷
[ 4]: GTM-09=阿拉斯加
[ 5]: GTM-08=太平洋时间(美国和加拿大)
[ 6]: GTM-07=亚利桑那
[ 7]: GTM-06=中部时间(美国和加拿大)
[ 8]: GTM-05=东部部时间(美国和加拿大)
[ 9]: GTM-04=大西洋时间(美国和加拿大)
[10]: GTM-03=巴西利亚
[11]: GTM-02=中大西洋
[12]: GTM-01=亚速尔群岛
[13]: GTM=格林威治标准时间
[14]: GTM+01=萨拉热窝
[15]: GTM+02=开罗
[16]: GTM+03=莫斯科
[17]: GTM+04=阿布扎比
[18]: GTM+05=伊斯兰堡
[19]: GTM+06=达卡
[20]: GTM+07=曼谷,河内
[21]: GTM+08=中国标准时间
[22]: GTM+09=汉城
[23]: GTM+10=关岛
[24]: GTM+11=所罗门群岛
[25]: GTM+12=斐济
[26]: GTM+13=努库阿勒法
[27]: GTM+14=基里巴斯
请选择设置时区 [9]:21

安装类型:
1 典型安装
2 服务器
3 客户端
4 自定义
请选择安装类型的数字序号 [1 典型安装]:
所需空间: 1181M

请选择安装目录 [/opt/dmdbms]:
可用空间: 44G
是否确认安装路径(/opt/dmdbms)? (Y/y:是 N/n:否)  [Y/y]:

安装前小结
安装位置: /opt/dmdbms
所需空间: 1181M
可用空间: 44G
版本信息: 
有效日期: 
安装类型: 典型安装
是否确认安装? (Y/y:是 N/n:否):y
2021-09-27 22:40:18 
[INFO] 安装达梦数据库...
2021-09-27 22:40:18 
[INFO] 安装 基础 模块...
2021-09-27 22:40:59 
[INFO] 安装 服务器 模块...
2021-09-27 22:41:29 
[INFO] 安装 客户端 模块...
2021-09-27 22:44:55 
[INFO] 安装 驱动 模块...
2021-09-27 22:46:20 
[INFO] 安装 手册 模块...
2021-09-27 22:46:32 
[INFO] 安装 服务 模块...
2021-09-27 22:46:35 
[INFO] 移动日志文件。
2021-09-27 22:46:37 
[INFO] 创建dmdba系统管理员完成。
2021-09-27 22:46:37 
[INFO] 正在启动DmAPService服务...
2021-09-27 22:46:41 
[INFO] 启动DmAPService服务成功。
2021-09-27 22:46:41 
[INFO] 安装达梦数据库完成。

安装结束~

安装系统服务

[root@hadoop3 ~]# cd /opt/dmdbms/bin
[root@hadoop3 bin]# ./dminit path=/opt/dmdbms/data page_size=16 log_size=2048 case_sensitive=n
initdb V8
db version: 0x7000c
file dm.key not found, use default license!
License will expire on 2022-07-09
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL

 log file path: /opt/dmdbms/data/DAMENG/DAMENG01.log

 log file path: /opt/dmdbms/data/DAMENG/DAMENG02.log

write to dir [/opt/dmdbms/data/DAMENG].
create dm database success. 2021-09-27 23:23:09

[root@hadoop3 bin]# cd ../script/root/
[root@hadoop3 root]# ./dm_service_installer.sh -h
Usage: dm_service_installer.sh -t service_type [-p service_name_postfix] [-dm_ini dm_ini_file]
        [-watcher_ini watcher_ini_file ] [-monitor_ini monitor_ini_file] [-cssm_ini cssm_ini_file]
        [-dfs_ini dfs_ini_file] [-dcr_ini dcr_ini_file]
        [-dss_ini dss_ini_file] [-drs_ini drs_ini_file] [-dras_ini dras_ini_file] [-dcs_ini dcs_ini_file] [-server server_info]
        [-dmap_ini dmap_ini_file] [-dpc_mode SP|MP|BP] [-m open|mount] [-y dependent_service] [-auto true|false]
  or dm_service_installer.sh [-s service_file_path]
  or dm_service_installer.sh -h

   -t               服务类型,包括dmimon,dmap,dmserver,dmwatcher,dmmonitor,dmcss,dmcssm,dmasmsvr,dmdcs,dmdrs,dmdras,dmdss
   -p               服务名后缀,对于dmimon,dmap服务类型无效
   -dm_ini          dm.ini文件路径
   -watcher_ini     dmwatcher.ini文件路径.
   -monitor_ini     dmmonitor.ini文件路径.
   -dcr_ini         dmdcr.ini文件路径.
   -cssm_ini        dmcssm.ini文件路径.
   -dss_ini         dss.ini文件路径.
   -drs_ini         drs.ini文件路径.
   -dras_ini        dras.ini文件路径.
   -dcs_ini         dcs.ini文件路径.
   -dfs_ini         dfs.ini文件路径.
   -dmap_ini        dmap.ini文件路径.
   -dpc_mode        DPC节点类型.
   -server          服务器信息(IP:PORT)
   -auto            设置服务是否自动启动,值为true或false,默认true.
   -m               设置服务器启动模式open或mount,只针对dmserver服务类型生效,可选
   -y               设置依赖服务,此选项只针对systemd服务环境下的dmserver和dmasmsvr服务生效
   -s               服务脚本路径,设置则忽略除-y外的其他参数选项
   -h               帮助

[root@hadoop3 root]# ./dm_service_installer.sh -t dmserver -dm_ini /opt/dmdbms/data/DAMENG/dm.ini -p DMSERVER
Created symlink from /etc/systemd/system/multi-user.target.wants/DmServiceDMSERVER.service to /usr/lib/systemd/system/DmServiceDMSERVER.service.
创建服务(DmServiceDMSERVER)完成

[root@hadoop3 root]# systemctl status DmServiceDMSERVER
● DmServiceDMSERVER.service - DM Instance Service(DmServiceDMSERVER).
   Loaded: loaded (/usr/lib/systemd/system/DmServiceDMSERVER.service; enabled; vendor preset: disabled)
   Active: inactive (dead)
[root@hadoop3 root]# systemctl start DmServiceDMSERVER
[root@hadoop3 root]# systemctl status DmServiceDMSERVER
● DmServiceDMSERVER.service - DM Instance Service(DmServiceDMSERVER).
   Loaded: loaded (/usr/lib/systemd/system/DmServiceDMSERVER.service; enabled; vendor preset: disabled)
   Active: active (running) since 二 2021-09-28 02:47:39 EDT; 13s ago
  Process: 12945 ExecStart=/opt/dmdbms/bin/DmServiceDMSERVER start (code=exited, status=0/SUCCESS)
 Main PID: 12986 (dmserver)
   CGroup: /system.slice/DmServiceDMSERVER.service
           └─12986 /opt/dmdbms/bin/dmserver path=/opt/dmdbms/data/DAMENG/dm.ini -noconsole

9月 28 02:47:22 hadoop3 systemd[1]: Starting DM Instance Service(DmServiceDMSERVER)....
9月 28 02:47:39 hadoop3 DmServiceDMSERVER[12945]: [39B blob data]
9月 28 02:47:39 hadoop3 systemd[1]: Started DM Instance Service(DmServiceDMSERVER)..

处理前面安装过程时的警告

可打开文件数过少,建议至少设置为 65536 或更多。

[root@hadoop3 ~]# ulimit -n
1024
[root@hadoop3 ~]# ulimit -n 65535
[root@hadoop3 ~]# ulimit -n
65535

客户端连接

因为我是典型安装,所以在安装达梦服务端的同时也安装了客户端。进入客户端后,操作类似于其他关系型数据库。

[root@hadoop3 dmdbms]# ./bin/disql
disql V8
用户名:SYSDBA
密码:

服务器[LOCALHOST:5236]:处于普通打开状态
登录使用时间 : 445.520(ms)
SQL> select * from v$version;

行号     BANNER                   
---------- -------------------------
1          DM Database Server 64 V8 
2          DB Version: 0x7000c

已用时间: 42.031(毫秒). 执行号:53300.
SQL> select id_code;

行号     id_code                                
---------- ---------------------------------------
1          1-2-38-21.07.09-143359-10018-ENT  Pack1

已用时间: 0.685(毫秒). 执行号:53301.

注意事项

达梦 SQL 查询必须指定 from 库名. 表名,除非用户名和库名一致时可省略库名。

create table "SYSDBA"."city"
(

	"city_id" VARCHAR(36),
	"city_name" VARCHAR(100),
	"region_id" INT
);
create user SMART_CITY identified by SMART_CITY123 limit password_life_time 60, failed_login_attemps 5, password_lock_time 5; 

  --identifiled by 指定鉴定密码

  --limit password_life_time 指定最大生存时间(单位:天)

  --failed_login_attemps 指定最大登录失败次数

  --password_lock_time 指定锁定时间(单位:分)

create user SMARTCITY identified by SMART_CITY123 limit failed_login_attemps 5, password_lock_time 5; 

If you have any questions or any bugs are found, please feel free to contact me.

Your comments and suggestions are welcome!


「说点什么吧😊~~😊」: