A place to hold mainly reading notes, and some technical stuff occasionally. 这里主要是一些读书笔记、感悟;还有部分技术相关的内容。
目录[-]
凡事预则立
听说我们的项目将来要部署到国产化平台上,数据库用的是达梦数据库,国产的这些组件也没有用过,就想着在虚拟机安装数据库服务(因为是在 CentOS7
上安装测试,所以图形化客户端无法使用,可以通过在远程/宿主 Windows
主机上选择仅安装客户端使用,eg:DM管理工具,DM数据迁移工具等),先研究下国产数据库的使用,包括基础的 CRUD
操作以及事务支持,方便将来的部署与维护。
由于本系列文章仅用于记录当时项目的国产化迁移过程,不涉及太多的理论内容,基本都是一系列的操作过程,所以行文上就直接上操作了。如果您有任何疑问,欢迎留言评论。
从前车马很慢,书信很远,一生只够爱一个人。
如今生活太快,时间太少,不要绕圈子,给我来个痛快的。
在 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
手机号、短信验证码登录。
下载 x86
下 CentOS7
下的 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!