达梦数据库
DM8(达梦8)是一款由武汉达梦数据库有限公司基于C/C++语言开发的国产关系型数据库,有支持X86和ARM平台的版本,可以部署到开源系统CentOS6.X+及国产系统KyLin-V4+上;作为国产关系型数据库,其DM8与Oracle数据库的设计思路非常相似,其次达梦数据库是一款国产数据库,但由于不支持开源免费版本,所以目前在国内的市场占有率仍然很低;以下以X86_64平台上的CentOS7.4操作系统为例构建DM8数据库生产环境。
1、准备工作
- 安装必要的依赖包
> mkdir -p /install /software
> chmod 777 /install /software
> yum install -y lrzsz tree lsof telnet dos2unix
- 创建用户及组
> groupadd dinstall
> useradd -g dinstall -md /home/dmdba -s /bin/bash dmdba
> grep dmdba /etc/passwd
dmdba:x:1001:1001::/home/dmdba:/bin/bash
> id dmdba
uid=1001(dmdba) gid=1001(dinstall) 组=1001(dinstall)
> passwd dmdba
更改用户 dmdba 的密码
新的 密码:#密码也为: dmdba
无效的密码: 密码少于 8 个字符
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新
备注:
不建议使用root用户
- 创建DM安装目录并授予目录权限
> mkdir -p /software/dm8
> chown -R dmdba:dinstall /software/dm8
> ll -ld /software/dm8
drwxr-xr-x 2 dmdba dinstall 6 8月 28 11:42 /software/dm8
- 修改文件打开句柄数
> vi /etc/security/limits.conf
dmdba soft nofile 102400
dmdba hard nofile 204800root soft nofile 102400
root hard nofile 204800
备注:
修改完成后退出并重新登录后生效:
> ulimit -n
102400
2、安装DM数据库
- 挂载安装镜像
> mkdir -p /mnt/dm
> unzip dm8_20220525_x86_rh6_64.zip -d /install/zip/
> mount /install/zip/dm8_20220525_x86_rh6_64_ent/dm8_20220525_x86_rh6_64.iso /mnt/dm
mount: /dev/loop0 写保护,将以只读方式挂载
> df -h|grep /mnt
/dev/loop0 911M 911M 0 100% /mnt/dm#下载DM安装手册
> sz '/mnt/dm/DM8 Install.pdf'
备注:
下载的这个安装手册适合于授权(购买License)用户从零开始安装搭建DM环境
- 切换到dmdba用户
> su -l dmdba
> cd /mnt/dm/
> ls
DM8 Install.pdf DMInstall.bin
- 安装DM数据库
> ./DMInstall.bin -i
请选择安装语言(C/c:中文 E/e:英文) [C/c]:
解压安装程序....是否输入Key文件路径? (Y/y:是 N/n:否) [Y/y]:n是否设置时区? (Y/y:是 N/n:否) [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=基里巴斯
请选择设置时区 [21]:安装类型:
1 典型安装
2 服务器
3 客户端
4 自定义
请选择安装类型的数字序号 [1 典型安装]:
所需空间: 1585M请选择安装目录 [/home/dmdba/dmdbms]:/software/dm8
可用空间: 36G
是否确认安装路径(/software/dm8)? (Y/y:是 N/n:否) [Y/y]:y安装前小结
安装位置: /software/dm8
所需空间: 1585M
可用空间: 36G
版本信息:
有效日期:
安装类型: 典型安装
是否确认安装? (Y/y:是 N/n:否):y
2022-08-28 13:18:41
[INFO] 安装达梦数据库...
2022-08-28 13:18:42
[INFO] 安装 基础 模块...
2022-08-28 13:18:46
[INFO] 安装 服务器 模块...
2022-08-28 13:18:47
[INFO] 安装 客户端 模块...
2022-08-28 13:18:52
[INFO] 安装 驱动 模块...
2022-08-28 13:19:00
[INFO] 安装 手册 模块...
2022-08-28 13:19:01
[INFO] 安装 服务 模块...
2022-08-28 13:19:01
[INFO] 移动日志文件。
2022-08-28 13:19:03
[INFO] 安装达梦数据库完成。请以root系统用户执行命令:
/software/dm8/script/root/root_installer.sh安装结束
- 查看安装结果
> ls /software/dm8/
bin bin2 desktop doc drivers include jar jdk license_en.txt license_zh.txt log samples script tool uninstall uninstall.sh web
- 按提示执行root用户下的安装脚本
#首先退出到root用户下
> exit
登出#再执行DM服务安装脚本
> /software/dm8/script/root/root_installer.sh
移动 /software/dm8/bin/dm_svc.conf 到/etc目录
修改服务器权限
创建DmAPService服务
Created symlink from /etc/systemd/system/multi-user.target.wants/DmAPService.service to /usr/lib/systemd/system/DmAPService.service.
创建服务(DmAPService)完成
启动DmAPService服务
3、数据库初始化
- 初始化数据库目录
#查看帮助信息
> ./dminit help#初始化(创建)数据库
> ./dminit PATH=/software/dm8/data PAGE_SIZE=16 SYSDBA_PWD=dameng123 DB_NAME=DMOA INSTANCE_NAME=DMOASERVER PORT_NUM=5238
initdb V8
db version: 0x7000c
file dm.key not found, use default license!
License will expire on 2023-05-25
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLLlog file path: /software/dm8/data/DMOA/DMOA01.loglog file path: /software/dm8/data/DMOA/DMOA02.logwrite to dir [/software/dm8/data/DMOA].
create dm database success. 2022-08-28 15:27:29
备注:
注意参数名是不区分大小写的;
PAGE_SIZE参数:
用于指定页的尺寸,单位是KB;DB_NAME参数用于指定数据库目录名称(即数据库名称)
INSTANCE_NAME参数:
用于指定数据库实例名称,PORT_NUM参数用于指定数据库实例的端口(默认值为5236)
SYSDBA_PWD参数:
用于指定管理员用户的密码,DM数据库中的预定义用户密码默认与用户名相同,即SYSDBA的密码也是SYSDBA
PATH参数:
用于指定数据库目录,执行dminit脚本时将在数据库目录下创建以数据库名称(由DB_NAME参数指定)为名字的文件夹,该文件夹下用来存放初始化此数据库的所有文件,即所有的数据文件存放到此数据库目录下,一个数据库对应一个文件夹
如果需要删除数据库则直接删除数据库目录即可:
rm -rf /software/dm8/data/DMOA
- 注册并启动数据库例程服务
#退出到root用户下
> exit#切换到服务安装脚本目录下
> cd /software/dm8/script/root/
#查看脚本帮助
> ./dm_service_installer.sh -h
#执行服务安装脚本
> ./dm_service_installer.sh -t dmserver -p DMOASERVER -dm_ini /software/dm8/data/DMOA/dm.ini
Created symlink from /etc/systemd/system/multi-user.target.wants/DmServiceDMOASERVER.service to /usr/lib/systemd/system/DmServiceDMOASERVER.service.
创建服务(DmServiceDMOASERVER)完成
备注:
DM数据库例程服务被注册后将被自动设置为开机启动;
从-dm_ini参数值可以看出,启动的服务是指向某个特定数据库例程的服务,而不是整个DM进程,可以认为每个DM的数据库例程都需要注册一个服务。
#启动数据库例程服务
> systemctl start DmServiceDMOASERVER
> lsof -itcp:5238
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
dmserver 47477 dmdba 4u IPv6 143255 0t0 TCP *:5238 (LISTEN)
备注:
-t参数:用于指定服务类型(DM官方约定的几种枚举类型)
-p参数:用于指定服务名后缀
-dm_ini参数:用于指定dm.ini配置文件位置
说明:
服务注册后将往数据库系统安装目录下的bin目录中写入服务启停脚本、DMAP备份服务脚本等,如果需要移除服务可以执行下面的脚本:
> ./dm_service_uninstaller.sh -n DmServiceDMOASERVER
4、客户端测试
- 安装rlwrap解决客户端工具组件的退格问题
#安装readline组件
> yum install -y readline readline-devel#安装rlwrap组件
> tar -zxvf rlwrap-0.37.tar.gz -C /install/tar/
> cd /install/tar/rlwrap-0.37
> ./configure
> echo $?
0
> make && make install
> echo $?
0#使用rlwrap组件
> cd /software/dm8/bin
> rlwrap ./disql sysdba/dameng123:5238
备注:
在每个要执行的命令之前增加一个rlwrap即可解决退格问题
- 使用bin工具连接数据库
> cd /software/dm8/bin/
> ./disql sysdba/dameng123@10.4.7.80:5238
服务器[10.4.7.80:5238]:处于普通打开状态
登录使用时间 : 6.307(ms)
disql V8
SQL> select * from v$database;
行号 NAME CREATE_TIME ARCH_MODE LAST_CKPT_TIME STATUS$ ROLE$ MAX_SIZE TOTAL_SIZE DSC_NODES
---------- ---- ------------------- --------- ------------------- ----------- ----------- -------------------- -------------------- -----------OPEN_COUNT STARTUP_COUNT LAST_STARTUP_TIME ----------- -------------------- -------------------
1 DMOA 2022-08-28 15:27:27 N 2022-08-28 16:51:50 4 0 0 12928 11 1 2022-08-28 16:09:55已用时间: 4.431(毫秒). 执行号:55200.
SQL> exit
- 使用tool连接数据库:
> cd /software/dm8/tool/
> ./disql #后面不带参数
disql V8
SQL> conn sysdba/dameng123:5238
服务器[LOCALHOST:5238]:处于普通打开状态
登录使用时间 : 2.679(ms)
SQL> select distinct para_type from v$dm_ini;
行号 PARA_TYPE
---------- ---------
1 READ ONLY
2 SYS
3 IN FILE
4 SESSION
已用时间: 6.821(毫秒). 执行号:600.
SQL> exit