前言 近期,由于越来越多的国有企业都有国产化的需要,所以使用国产服务器系统和国产化的数据库的国有企业也越来越多了,其中国产达梦DM数据库就是其中用于替代Oracle或MySQL的主要产品。
恰逢此时,有国有企业项目其中之一的需求就是将Oracle数据库迁移到国产达梦DM数据库中。要验证迁移Oracle数据库到国产达梦DM数据库就必须要有国产达梦DM数据库环境,故而在这篇文章里我们研究为记录下在CentOS7.9这个系统下静默安装(非图形界面)达梦DM数据库8.0的过程。之后有时间再补充一些达梦的安装和迁移过程。
在阅读本文前,我默认你熟悉Linux系统,并知道一些简单的命令,同时也知道如何使用shell客户端工具连接到Linux系统中进行操作,本文就不再做额外的说明了。
一、安装前准备 1、本文适用范围与环境、软件 [root@alye1 ~] Linux alye1 3.10.0-1160.119.1.el7.x86_64 [root@alye1 ~] NAME="CentOS Linux" VERSION="7 (Core)" ID="centos" ID_LIKE="rhel fedora" VERSION_ID="7" PRETTY_NAME="CentOS Linux 7 (Core)" ANSI_COLOR="0;31" CPE_NAME="cpe:/o:centos:centos:7" HOME_URL="https://www.centos.org/" BUG_REPORT_URL="https://bugs.centos.org/" CENTOS_MANTISBT_PROJECT="CentOS-7" CENTOS_MANTISBT_PROJECT_VERSION="7" REDHAT_SUPPORT_PRODUCT="centos" REDHAT_SUPPORT_PRODUCT_VERSION="7" [root@alye1 ~] total used free shared buff/cache available Mem: 1756 389 327 0 1039 1195 Swap: 0 0 0
提示:本文使用了阿里云的ECS云服务器,配置为:2个X86架构CPU核心、2G内存、3M带宽、40G系统盘。
达梦数据库8.0版本与下载(建议使用迅雷等P2P下载工具下载)
Linux X64:https://download.dameng.com/eco/adapter/DM8/202407/dm8_20240712_x86_rh7_64.zip
Windows X64:https://download.dameng.com/eco/adapter/DM8/202407/dm8_20240710_x86_win_64.zip
如有需要可到达梦的官网中查看:产品下载-达梦数据 (dameng.com)
注意:需要下载的是 DM8开发版
2、新建 dmdba 用户 安装前必须创建 dmdba 用户,禁止使用 root 用户安装数据库。在root身份下,按以下命令操作即可。
[root@alye1 ~] [root@alye1 ~] [root@alye1 ~] Changing password for user dmdba. New password: Retype new password: passwd: all authentication tokens updated successfully.
3、修改文件打开最大数 在 Linux、Solaris、AIX 和 HP-UNIX 等系统中,操作系统默认会对程序使用资源进行限制。如果不取消对应的限制,则数据库的性能将会受到影响。继续在root身份下,按以下命令操作即可。
[root@alye1 ~] dmdba soft nofile 65536 dmdba hard nofile 65536
注意:我这里截图的内容可能会与你的有出入,可自行找地方插入内容,也可将内容放到最后亦可。修改保存后需要生效可重新切换身份用户,或使用 reboot 命令重启操作系统。
4、目录规划与权限 可根据实际需求规划安装目录,本示例使用默认配置 DM 数据库安装在 /app/dmdb8/appData/ 文件夹下,数据库实例安装在 /app/dmdb8/dbData/ 文件夹下。继续在root身份下,按以下命令操作。
[root@alye1 ~] [root@alye1 ~] [root@alye1 ~]
5、 防火墙开放对应的端口 继续在root身份下,按以下命令操作。
[root@alye1 ~] [root@alye1 ~] success [root@alye1 ~] [root@alye1 ~] 80/tcp 443/tcp 8080/tcp 8081/tcp 3306/tcp 22/tcp 5236/tcp
二、数据库命令行安装 1、挂载镜像 继续 root 用户身份下,将1.1中下载的 DM 数据库的安装文件:dm8_20240712_x86_rh7_64.zip 安装包保存在任意位置,例如 /root 目录下,执行如下命令挂载镜像:
[root@alye1 ~] [root@alye1 ~] total 1713912 -rw-r--r-- 1 root root 1086108981 Aug 31 09:49 dm8_20240712_x86_rh7_64.zip [root@alye1 ~] Archive: dm8_20240712_x86_rh7_64.zip inflating: dm8_20240712_x86_rh7_64.README inflating: dm8_20240712_x86_rh7_64.iso inflating: dm8_20240712_x86_rh7_64.iso_SHA256.txt [root@alye1 ~] total 2791872 -rw-r--r-- 1 root root 1103818752 Jul 26 17:36 dm8_20240712_x86_rh7_64.iso -rw-r--r-- 1 root root 100 Jul 26 17:37 dm8_20240712_x86_rh7_64.iso_SHA256.txt -rw-r--r-- 1 root root 240 Jul 26 17:36 dm8_20240712_x86_rh7_64.README -rw-r--r-- 1 root root 1086108981 Aug 31 09:49 dm8_20240712_x86_rh7_64.zip [root@alye1 ~] [root@alye1 ~] mount: /dev/loop0 is write-protected, mounting read-only [root@alye1 ~]
此时使用 root 身份的前期所有准备工作已完成。
2、命令行安装数据库 切换至 dmdba 用户下,在 /mnt/iso 目录下使用命令行安装数据库程序,依次执行以下命令安装 DM 数据库。
[root@alye1 ~] [dmdba@alye1 ~]$ cd /mnt/iso [dmdba@alye1 iso]$ ll total 1077886 -r-xr-xr-x 1 root root 2853242 Jun 17 14:26 DM8 Install.pdf -r-xr-xr-x 1 root root 1100901663 Jul 12 13:28 DMInstall.bin [dmdba@alye1 iso]$ ./DMInstall.bin -i Installer Language: [1]: 简体中文 [2]: English Please select the installer's language [2]:1 解压安装程序......... 硬件架构校验通过! 欢迎使用达梦数据库安装程序 ## 我们暂时没有key,所以这里选择n先试用1年 是否输入Key文件路径? (Y/y:是 N/n:否) [Y/y]:n ## 输入y需要设置时区,默认直接回车亦可 是否设置时区? (Y/y:是 N/n:否) [Y/y]:y 设置时区: [ 1]: (GTM-12:00) 日界线西 [ 2]: (GTM-11:00) 萨摩亚群岛 [ 3]: (GTM-10:00) 夏威夷 [ 4]: (GTM-09:00) 阿拉斯加 [ 5]: (GTM-08:00) 太平洋时间(美国和加拿大) [ 6]: (GTM-07:00) 亚利桑那 [ 7]: (GTM-06:00) 中部时间(美国和加拿大) [ 8]: (GTM-05:00) 东部部时间(美国和加拿大) [ 9]: (GTM-04:00) 大西洋时间(美国和加拿大) [10]: (GTM-03:00) 巴西利亚 [11]: (GTM-02:00) 中大西洋 [12]: (GTM-01:00) 亚速尔群岛 [13]: (GTM) 格林威治标准时间 [14]: (GTM+01:00) 萨拉热窝 [15]: (GTM+02:00) 开罗 [16]: (GTM+03:00) 莫斯科 [17]: (GTM+04:00) 阿布扎比 [18]: (GTM+05:00) 伊斯兰堡 [19]: (GTM+06:00) 达卡 [20]: (GTM+07:00) 曼谷,河内 [21]: (GTM+08:00) 中国标准时间 [22]: (GTM+09:00) 首尔 [23]: (GTM+10:00) 关岛 [24]: (GTM+11:00) 所罗门群岛 [25]: (GTM+12:00) 斐济 [26]: (GTM+13:00) 努库阿勒法 [27]: (GTM+14:00) 基里巴斯 ## 选择 [21]: (GTM+08:00) 中国标准时间 请选择时区 [21]:21 安装类型: 1 典型安装 2 服务器 3 客户端 4 自定义 ## 这里选择 典型安装,默认回车即可 请选择安装类型的数字序号 [1 典型安装]: 所需空间: 2284M ## 这里选择安装目录,我们更改为我们的规划的目录:/app/dmdb8/appData 请选择安装目录 [/home/dmdba/dmdbms]:/app/dmdb8/appData 可用空间: 27G 是否确认安装路径(/app/dmdb8/appData)? (Y/y:是 N/n:否) [Y/y]: 安装前小结 安装位置: /app/dmdb8/appData 所需空间: 2284M 可用空间: 27G 版本信息: 有效日期: 安装类型: 典型安装 是否确认安装? (Y/y:是 N/n:否):y 2024-08-31 11:35:05 [INFO] 安装达梦数据库... 2024-08-31 11:35:05 [INFO] 安装 基础 模块... 2024-08-31 11:35:40 [INFO] 安装 服务器 模块... 2024-08-31 11:35:45 [INFO] 安装 客户端 模块... 2024-08-31 11:36:03 [INFO] 安装 驱动 模块... 2024-08-31 11:36:08 [INFO] 安装 手册 模块... 2024-08-31 11:36:09 [INFO] 安装 服务 模块... 2024-08-31 11:36:10 [INFO] 移动日志文件。 2024-08-31 11:36:10 [INFO] 安装达梦数据库完成。 请以root系统用户执行命令: /app/dmdb8/appData/script/root/root_installer.sh 安装结束 [dmdba@alye1 iso]$
数据库安装完成后,需要切换至 root 用户执行上图中的命令 /app/dmdb8/appData/script/root/root_installer.sh 创建 DmAPService,否则会影响数据库备份。
[dmdba@alye1 iso]$ su root Password: [root@alye1 iso] 移动 /app/dmdb8/appData/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服务 [root@alye1 iso]
另外数据库安装完成后还需注册实例才能使用数据库,本步骤完成后仅完成了达梦8数据库程序的安装。
3、静默方式初始化实例 DM 数据库在 Linux 环境支持命令行配置实例以及图形化配置实例,但需要使用 dmdba 用户配置实例,进入到 DM 数据库安装目录下的 bin 目录中。
[root@alye1 iso] [dmdba@alye1 ~]$ cd /app/dmdb8/appData/bin [dmdba@alye1 bin]$ ./dminit path=/app/dmdb8/dbData SYSDBA_PWD=30hwHyKi SYSAUDITOR_PWD=30hwHyKi PAGE_SIZE=32 EXTENT_SIZE=32 CASE_SENSITIVE=n CHARSET=1 DB_NAME=DMDB INSTANCE_NAME=DMDBINS PORT_NUM=5236 initdb V8 db version: 0x7000c file dm.key not found, use default license! License will expire on 2025-07-03 Normal of FAST Normal of DEFAULT Normal of RECYCLE Normal of KEEP Normal of ROLL log file path: /app/dmdb8/dbData/DMDB/DMDB01.log log file path: /app/dmdb8/dbData/DMDB/DMDB02.log write to dir [/app/dmdb8/dbData/DMDB]. create dm database success. 2024-08-31 11:48:07 [dmdba@alye1 bin]$
至此服务器中的数据库程序和实例均已安装完成,但由于数据库服务尚未启动我们暂时不能从其它系统中访问服务器的数据库。使用以上命令安装后置,服务器中的达梦数据库连接用户与密码信息如下表:
用户名
用户密码
SYSDBA
30hwHyKi
SYSAUDITOR
30hwHyKi
提示1:如果您对 dminit 命令需要更多的参数与应用可以参考其帮助命令:
[dmdba@alye1 bin]$ ./dminit help initdb V8 db version: 0x7000c file dm.key not found, use default license! License will expire on 2025-07-03 version: 03134284194-20240703-234060-20108 Pack1 格式: ./dminit KEYWORD=value 例程: ./dminit PATH=/public/dmdb/dmData PAGE_SIZE=16 关键字 说明(默认值) -------------------------------------------------------------------------------- INI_FILE 初始化文件dm.ini存放的路径 PATH 初始数据库存放的路径 CTL_PATH 控制文件路径 LOG_PATH 日志文件路径 EXTENT_SIZE 数据文件使用的簇大小(16),可选值:16, 32, 64,单位:页 PAGE_SIZE 数据页大小(8),可选值:4, 8, 16, 32,单位:K LOG_SIZE 日志文件大小(2048),单位为:M,范围为:256M ~ 8G CASE_SENSITIVE 大小敏感(Y),可选值:Y/N,1/0 CHARSET/UNICODE_FLAG 字符集(0),可选值:0[GB18030],1[UTF-8],2[EUC-KR] SEC_PRIV_MODE 权限管理模式(0),可选值:0[TRADITION],1[BMJ],2[EVAL],3[ZB] SYSDBA_PWD 设置SYSDBA密码(SYSDBA) SYSAUDITOR_PWD 设置SYSAUDITOR密码(SYSAUDITOR) DB_NAME 数据库名(DAMENG) INSTANCE_NAME 实例名(DMSERVER) PORT_NUM 监听端口号(5236) BUFFER 系统缓存大小(8000),单位M TIME_ZONE 设置时区(+08:00) PAGE_CHECK 页检查模式(3),可选值:0/1/2/3 PAGE_HASH_NAME 设置页检查HASH算法 EXTERNAL_CIPHER_NAME 设置默认加密算法 EXTERNAL_HASH_NAME 设置默认HASH算法 EXTERNAL_CRYPTO_NAME 设置根密钥加密引擎 RLOG_ENCRYPT_NAME 设置日志文件加密算法,若未设置,则不加密 RLOG_POSTFIX_NAME 设置日志文件后缀名,长度不超过10。默认为log ,例如DAMENG01.log USBKEY_PIN 设置USBKEY PIN PAGE_ENC_SLICE_SIZE 设置页加密分片大小,可选值:0、512、4096,单位:Byte ENCRYPT_NAME 设置全库加密算法 BLANK_PAD_MODE 设置空格填充模式(0),可选值:0/1 SYSTEM_MIRROR_PATH SYSTEM数据文件镜像路径 MAIN_MIRROR_PATH MAIN数据文件镜像 ROLL_MIRROR_PATH 回滚文件镜像路径 MAL_FLAG 初始化时设置dm.ini中的MAL_INI(0) ARCH_FLAG 初始化时设置dm.ini中的ARCH_INI(0) MPP_FLAG Mpp系统内的库初始化时设置dm.ini中的mpp_ini(0) CONTROL 初始化配置文件(配置文件格式见系统管理员手册) AUTO_OVERWRITE 是否覆盖所有同名文件(0) 0:不覆盖 1:部分覆盖 2:完全覆盖 USE_NEW_HASH 是否使用改进的字符类型HASH算法(1) ELOG_PATH 指定初始化过程中生成的日志文件所在路径 AP_PORT_NUM 分布式环境下协同工作的监听端口 HUGE_WITH_DELTA 是否仅支持创建事务型HUGE表(1) 1:是 0:否 RLOG_GEN_FOR_HUGE 是否生成HUGE表REDO日志(1) 1:是 0:否 PSEG_MGR_FLAG 是否仅使用管理段记录事务信息(0) 1:是 0:否 CHAR_FIX_STORAGE CHAR是否按定长存储(N),可选值:Y/N,1/0 SQL_LOG_FORBID 是否禁止打开SQL日志(N),可选值:Y/N,1/0 DPC_MODE 指定DPC集群中的实例角色(0) 0:无 1:MP 2:BP 3:SP,取值1/2/3时也可以用MP/BP/SP代替 USE_DB_NAME 路径是否拼接DB_NAME(1) 1:是 0:否 MAIN_DBF_PATH MAIN数据文件存放路径 SYSTEM_DBF_PATH SYSTEM数据文件存放路径 ROLL_DBF_PATH ROLL数据文件存放路径 TEMP_DBF_PATH TEMP数据文件存放路径 ENC_TYPE 数据库内部加解密使用的加密接口类型(1), 可选值: 1: 优先使用EVP类型 0: 不启用EVP类型 HELP 打印帮助信息 [dmdba@alye1 bin]$
提示2:若使用dminit命令中没有设置SYSDBA_PWD和SYSAUDITOR_PWD两个参数,则数据库实例安装后,默认初始密码如下表所示。
用户名
用户密码
SYSDBA
SYSDBA
SYSAUDITOR
SYSAUDITOR
三、注册服务及开机自启动 DM 提供了将 DM 服务脚本注册成操作系统服务的脚本,同时也提供了卸载操作系统服务的脚本。注册和卸载脚本文件所在目录为安装目录的“/script/root”子目录下。
注册服务脚本为 dm_service_installer.sh,用户可以使用注册服务脚本将服务脚本注册成为操作系统服务。注册服务需使用 root 用户进行注册,使用 root 用户进入数据库安装目录的 /script/root 下,命令如下所示:
[dmdba@alye1 bin]$ su root Password: [root@alye1 bin] [root@alye1 root] Created symlink from /etc/systemd/system/multi-user.target.wants/DmServiceDMDB.service to /usr/lib/systemd/system/DmServiceDMDB.service. 创建服务(DmServiceDMDB)完成 [root@alye1 root] [root@alye1 root] [root@alye1 root] ● DmServiceDMDB.service - DM Instance Service(DmServiceDMDB). Loaded: loaded (/usr/lib/systemd/system/DmServiceDMDB.service; enabled; vendor preset: disabled) Active: active (running) since Sat 2024-08-31 12:10:43 CST; 9s ago Main PID: 16516 (dmserver) CGroup: /system.slice/DmServiceDMDB.service └─16516 /app/dmdb8/appData/bin/dmserver path=/app/dmdb8/dbData/DMDB/dm.ini -noconsole Aug 31 12:10:28 alye1 systemd[1]: Starting DM Instance Service(DmServiceDMDB).... Aug 31 12:10:43 alye1 DmServiceDMDB[16493]: [35B blob data] Aug 31 12:10:43 alye1 systemd[1]: Started DM Instance Service(DmServiceDMDB).. [root@alye1 root]
因为我们在防火墙中提前开放了5236端口,至此已经可以在其它系统中使用达梦管理工具连接服务器中的数据库了,在服务器中的所有操作完成。
四、测试在Windows中连接达梦数据库 1、安装达梦客服端软件 本文中使用 Windows 11 64位操作系统。将在1.1中下载的 dm8_20240710_x86_win_64.zip 文件解压,双击打开 dm8_20240710_x86_win_64.iso 文件会自动挂载这个iso映像(Windows10操作系统也可自动挂载iso映像)。
双击 setup.exe 安装程序,一步步进行安装程序。
我们没有key,直接进入下一步 >>>
到这一步,我们在Windows中只做连接刚在CentOS7中安装的达梦数据库服务器使用,所以这里只需要安装客户端即可。当然如果你有需要,也可以在你本地Windows电脑中再安装一个服务器(选择典型安装)。
这里设置安装目录后,直接一直下一步,直到安装完成。
2、测试链接Centos7安装的达梦客服端器 按下Windows键,在弹出的菜单中选择应用,再输入 DM 搜索刚安装的 DM 程序,选择 DM管理工具 打开。
按图上的步骤进行连接测试。
测试已可以通信,可在右侧输入SQL语句执行了。总体的使用虽说不如ORA或MSSQL的客户端方便,但总体是可以使用了,其它的使用习惯问题估计要等待厂商在后续版本更进一步优化了。
至此全部完工。