注册
【与达梦同行】从0到1—开启粒天与达梦的合作之路
技术分享/ 文章详情 /

【与达梦同行】从0到1—开启粒天与达梦的合作之路

梁丽 2022/12/29 1682 4 1

引言

1.1.编写目的

本文章详细阐述了达梦数据库在四川省德阳市综合治理项目安装实施、系统调优、日常运维、技术培训的应用情况。

1.2.背景和需求

德阳综合治理达梦数据库项目是德阳市针对智慧城市建设启动的一个大数据分析项目,该项目是从业务系统抓取综合治理业务相关数据,存储到达梦数据库中,再由大数据服务公司进行数据抽取,从而根据这些数据进行业务分析,达梦数据库在其中起到重要的数据中转作用。在该项目中我们需要搭建两台单机达梦数据库,并帮助业务人员梳理业务表结构,协助完成业务表的创建及其驱动连接配置,和达梦数据库日常操作培训等工作。

1.3.公司介绍

2021年3月在成都天奥科技开发有限公司(简称:天奥科技)的历时二年的孵化下,天奥旗下从事达梦数据库分销及服务的独立团队-成都粒天信息技术有限公司((简称:成都粒天))正式成立。天奥科技专注于IT服务领域20年有余,目前旗下共有7家子公司,分布于四川和云南,服务于近4000+合作伙伴。天奥科技一直秉承“客户满意优先,优质服务为本”实现”西南最优秀的云数据中心安全服务商”的愿景。专注于信创行业领域,从服务器、网络、网络安全、数据安全、数据库、中间件、操作系统基础软件等。天奥科技拥有专业的技术服务运维团队,为区域经销商、客户提供最优选的方案及最佳的服务。
成都粒天聚焦于数据安全领域,先后取得武汉达梦数据库股份有限公司、广州鼎甲计算机科技有限公司四川区域金牌总代理授权,并入围达梦数据库技术运维服务供应商,拥有有达梦数据库DCA工程师13名,同时也是鼎甲备份全国服务商。系国产数据库及国产数据备份与恢复系统坚实拥护者及推动者,产品拥有信息技术产品自主原创性测评证书、计算机软件著作权登记证书、涉密信息系统产品检测证书,真正做到安全可靠,自主可控。公司主要以提供产品和售后服务为主,自成立以来,公司项目已覆盖党政、军工、科研院所、金融、公检法司、医卫、教育等各行业。

2.实施情况

2.1.环境要求

2.1.1.系统软硬件需求

服务器硬件配置(2台) CPU:x86 内存:32g
本地存储:/dm8(挂载点,主要存放数据库软件和运行日志)
数据文件存储:/data/dmdata(挂载点为,主要存放数据库数据文件)
备份文件存储:/data/dmdata/bak (挂载点为,主要存放数据库备份文件)
网络配置 千兆及以上交换机
SAN存储光纤交换机
操作系统配置 Linux 64位
glibc2.3 以上,内核 2.6,已安装 KDE/GNOME 桌面环境,建议预先安装 UnixODBC 组件,sysstat,gdb
数据库配置 Dm8

2.1.2.数据库部署规划

单机数据库2台 服务器01 安装路径:/dm8
数据路径:/data/dmdata
归档路径:/data/dmdata/arch
备份路径:/data/dmdata/bak
端口号:5236
操作系统用户和组:dmdba:dinstall
服务器02 安装路径:/dm8
数据路径:/data/dmdata
归档路径:/data/dmdata/arch
备份路径:/data/dmdata/bak
端口号:5236
操作系统用户和组:dmdba:dinstall

2.1.3.防火墙需要放行的端口号

单机数据库2台 服务器01 5236
服务器02 5236

2.1.4.实例规划

单机数据库2台
服务器01
数据库名:
实例名:
端口号:
编码格式:
字符大小写敏感:

服务器02
数据库名:
实例名:
端口号:
编码格式:
字符大小写敏感:

2.1.5.管理规划

单机数据库
服务器01
服务器ip地址:xxx.xxx.xxx.xxx
系统管理员账号密码:root/xxxxxx
达梦用户密码:SYSDBA/SYSDBA
服务器02
服务器ip地址:xxx.xxx.xxx.xxx
系统管理员账号密码:root/xxxxxx
达梦用户密码:SYSDBA/SYSDBA

2.1.6.数据库版本

单机数据库
服务器01 达梦版本:dm8
详细版本编号:xxx
授权登记:xxx
服务器02 达梦版本:dm8
详细版本编号:xxx
授权登记:xxx

2.2.安装数据库前准备

2.2.1.获取系统位数

#登录root用户

su-root

#输入命令,查询操作系统位数

getconf LONG_BIT

2.2.2.查询操作系统release信息

#输入命令,查询操作系统的release信息

lsb_release –a

2.2.3.查询系统信息

#输入命令,查询系统信息

cat  /etc/issue	

2.2.4.查询系统名称

#输入命令,查询系统名称

uname  –a

2.2.5.修改最大文件打开数

#使用 vim 文本编辑器对/etc/security/limits.conf 文件进行修改,这里主要修改的参数是 open file 参数的值。
#加上语句:

vim /etc/security/limits.conf
* soft nofile 65536
* hard nofile 65536

#重启系统:reboot
#输入命令检查 open file 参数:

ulimit -a

2.2.6.创建安装用户组和安装用户

创建安装用户组:groupadd dinstall
创建安装用户:useradd -g dinstall -m -d /home/dmdba -s /bin/bash dmdba
设置安装用户密码:passwd dmdba
查看安装用户是否创建成功:cat /etc/passwd

2.3.安装数据库

2.3.1.挂载镜像文件

mount -o loop dm8_20201107_x86_rh7_64_ent_8.1.1.144.iso /mnt/

2.3.2.执行安装程序

1、执行安装文件
[dmdba@server-1920ab31-89df-431e-9794-1a5661fbfc25 ~]$ ./DMInstall.bin -i
Please select the installer's language (E/e:English C/c:Chinese) [E/e]: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) 63457
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) 4096
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

可打开文件数过少,建议至少设置为65536或更多。
欢迎使用达梦数据库安装程序

是否输入Key文件路径? (Y/y:是 N/n:否) [Y/y]:y
请输入Key文件的路径地址 [dm.key]:/home/dmdba/dm.key

有效日期: 无限制
服务器颁布类型: 企业版
发布类型: 正式版
用户名称: 德阳市政务服务和大数据管理局
授权用户数: 无限制
并发连接数: 无限制

是否设置时区? (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=基里巴斯
请选择设置时区 [21]:21

安装类型:
1 典型安装
2 服务器
3 客户端
4 自定义
请选择安装类型的数字序号 [1 典型安装]:1
所需空间: 1178M
请选择安装目录 [/home/dmdba/dmdbms]:
可用空间: 86G
是否确认安装路径(/home/dmdba/dmdbms)? (Y/y:是 N/n:否)  [Y/y]:y
安装前小结
安装位置: /home/dmdba/dmdbms
所需空间: 1178M
可用空间: 86G
版本信息: 企业版
有效日期: 无限制
安装类型: 典型安装
是否确认安装? (Y/y:是 N/n:否):y
2021-08-17 15:14:23 
[INFO] 安装达梦数据库...
2021-08-17 15:14:24 
[INFO] 安装 基础 模块...
2021-08-17 15:14:25 
[INFO] 安装 服务器 模块...
2021-08-17 15:14:25 
[INFO] 安装 客户端 模块...
2021-08-17 15:14:26 
[INFO] 安装 驱动 模块...
2021-08-17 15:14:26 
[INFO] 安装 手册 模块...
2021-08-17 15:14:26 
[INFO] 安装 服务 模块...
2021-08-17 15:14:27 
[INFO] 移动日志文件。
2021-08-17 15:14:27 
[INFO] 安装达梦数据库完成。

请以root系统用户执行命令:
/home/dmdba/dmdbms/script/root/root_installer.sh
安装结束

2.3.3.选择授权文件

image.png

2.4.实例与服务

2.4.1.按照要求创建数据库实例

#在两台服务器上分别用dminit初始化实例

su dmdba
cd /home/dmdba/dmdbms/bin
./dminit PATH=/home/dmdba/dmdbms/data PAGE_SIZE=16 CASE_SENSITIVE=1
db_name=**  instance_name=**  port_num=**
#在二台台服务器上分别开停库一次
./dmserver /dmdata/ZHWG/DAMENG/dm.ini
Exit

2.4.2.为实例创建服务

#注册服务:

su root 
cd /home/dmdba/dmdbms/script/root/ 
./dm_service_installer.sh 
-t dmserver 
-dm_ini /home/dmdba/dmdbms/data/DAMENG/dm.ini 
-p 后缀名
-n 服务全名

配置作业备份(两台服务器相同)
备份机制为:每周天晚上23点00分全量备份 除周天外每天晚上1点进行增量备份
每天2点清理30天前的备份。

call SP_CREATE_JOB('JOB1',1,0,'',0,0,'',0,'');

call SP_JOB_CONFIG_START('JOB1');

call SP_ADD_JOB_STEP('JOB1', 's1', 6, '00000000/dmdata/ZHWG/DAMENG/bak', 0, 0, 0, 0, NULL, 0);

call SP_ADD_JOB_SCHEDULE('JOB1', 's2', 1, 2, 1, 1, 0, '23:00:00', NULL, '2021-06-17 17:52:14', NULL, '');

call SP_JOB_CONFIG_COMMIT('JOB1');

call SP_CREATE_JOB('incbak',1,0,'',0,0,'',0,'');

call SP_JOB_CONFIG_START('incbak');

call SP_ADD_JOB_STEP('incbak', 'c1', 6, 		'11000000/dmdata/ZHWG/DAMENG/bak|/dmdata/ZHWG/DAMENG/bak', 0, 0, 0, 0, NULL, 0);

call SP_ADD_JOB_SCHEDULE('incbak', 'c2', 1, 2, 1, 126, 0, '01:00:00', NULL, '2021-06-22 23:07:55', NULL, '');

call SP_JOB_CONFIG_COMMIT('incbak');

2.5.参数调优(两台服务器相同)

运行脚本进行参数调优
–修改调整基础参数

declare
v_mem_mb int;
v_cpus int;
mem_per int:=95;
MEMORY_POOL int;
MEMORY_TARGET int;
BUFFER INT;
MAX_BUFFER INT;
RECYCLE int;
CACHE_POOL_SIZE int;
BUFFER_POOLS int;
RECYCLE_POOLS int;
SORT_BUF_SIZE int;
SORT_BUF_GLOBAL_SIZE INT;
DICT_BUF_SIZE  INT;
SESS_POOL_SIZE INT;
HJ_BUF_SIZE INT;
HAGR_BUF_SIZE INT;
HJ_BUF_GLOBAL_SIZE INT;
HAGR_BUF_GLOBAL_SIZE INT;
TASK_THREADS INT;
SORT_FLAG INT;
SORT_BLK_SIZE INT;

begin

SELECT TOP 1 N_CPU,TOTAL_PHY_SIZE/1024/1024 INTO v_cpus,v_mem_mb FROM V$SYSTEMINFO;

print v_cpus;
print v_mem_mb;

v_mem_mb=round(v_mem_mb,-3);
print v_mem_mb;

IF v_mem_mb <= 2000  THEN
  return;
END IF;


IF v_mem_mb > 512000 THEN  
   v_mem_mb :=v_mem_mb*0.8;
END IF;

TASK_THREADS :=8;
--修改线程数
IF v_cpus < 8  THEN   
  TASK_THREADS :=4;
END IF;

IF v_cpus >= 64 THEN 
   v_cpus := 64; 
   TASK_THREADS :=16;
END IF;

SP_SET_PARA_VALUE(2,'WORKER_THREADS',v_cpus);
SP_SET_PARA_VALUE(2,'TASK_THREADS',TASK_THREADS);

BUFFER := round(cast(v_mem_mb * 0.5 as int),-3);
MAX_BUFFER := BUFFER;
MEMORY_TARGET :=round(cast(v_mem_mb * 0.1 as int),-3);
RECYCLE :=LEAST(cast(v_mem_mb * 0.125 as int),50000);


IF v_mem_mb < 70000 THEN

--设置根据内存情况BUFFER_POOLS参数
   with t as
    (
            select rownum rn from dual connect by level <= 100
    ) ,
    t1 as
    (
            select * from t where rn > 1 minus
            select
                    ta.rn * tb.rn
            from
                    t ta,
                    t tb
            where
                    ta.rn <= tb.rn
                and ta.rn  > 1
                and tb.rn  > 1
    )
  select top 1 rn into BUFFER_POOLS from t1 where rn > v_mem_mb/800 order by 1;
  
  PRINT 'BUFFER_POOLS ' || BUFFER_POOLS;
   PRINT 'MEMORY_TARGET ' || MEMORY_TARGET;

  --设置根据内存情况RECYCLE_POOLS参数
	with t as
    (
            select rownum rn from dual connect by level <= 100
    ) ,
    t1 as
    (
            select * from t where rn > 1 minus
            select
                    ta.rn * tb.rn
            from
                    t ta,
                    t tb
            where
                    ta.rn <= tb.rn
                and ta.rn  > 1
                and tb.rn  > 1
    )
  select top 1 rn into RECYCLE_POOLS from t1 where rn > v_mem_mb/800/3 order by 1;
  
  PRINT 'RECYCLE_POOLS ' || RECYCLE_POOLS;
  
    
ELSE
   BUFFER_POOLS := 101;
   RECYCLE_POOLS := 41;
END IF;

--修改内存池
IF v_mem_mb >= 16000  THEN 
   MEMORY_POOL := 2048;
   CACHE_POOL_SIZE := 1024;
   
   SORT_FLAG = 0;
   SORT_BLK_SIZE=1;
   SORT_BUF_SIZE := 10;
   SORT_BUF_GLOBAL_SIZE := 2000;
   SESS_POOL_SIZE := 16;
   
   HJ_BUF_GLOBAL_SIZE := LEAST(cast(v_mem_mb * 0.0625 as int),10000);
   HAGR_BUF_GLOBAL_SIZE := LEAST(cast(v_mem_mb * 0.0625 as int),10000);
   HJ_BUF_SIZE  :=500;
       HAGR_BUF_SIZE :=500;
   
   IF v_mem_mb >= 64000 THEN
      CACHE_POOL_SIZE := 2048;
      SORT_FLAG = 1;
      SORT_BLK_SIZE=1;
      SORT_BUF_SIZE=512; 
      SORT_BUF_GLOBAL_SIZE=5120 ;
      SESS_POOL_SIZE := 32;  
      
      HJ_BUF_GLOBAL_SIZE := LEAST(cast(v_mem_mb * 0.0625 as int),15000);
      HAGR_BUF_GLOBAL_SIZE := LEAST(cast(v_mem_mb * 0.0625 as int),15000);
      HJ_BUF_SIZE  :=1000;
                  HAGR_BUF_SIZE :=1000;
   END IF;
   
   DICT_BUF_SIZE := 500;

       HJ_BUF_GLOBAL_SIZE :=round(HJ_BUF_GLOBAL_SIZE,-3);
       HAGR_BUF_GLOBAL_SIZE :=round(HAGR_BUF_GLOBAL_SIZE,-3);
       RECYCLE :=round(RECYCLE,-3);
ELSE
   MEMORY_POOL :=GREAT(cast(v_mem_mb * 0.0625 as int),100);
   CACHE_POOL_SIZE := 200;
   SORT_BUF_SIZE := 10;
   SORT_BUF_GLOBAL_SIZE := 500;
   DICT_BUF_SIZE := 50;
   SESS_POOL_SIZE =16;
   SORT_FLAG = 0;
   SORT_BLK_SIZE=1;
   
   HJ_BUF_GLOBAL_SIZE := GREAT(cast(v_mem_mb * 0.0625 as int),500);
   HAGR_BUF_GLOBAL_SIZE := GREAT(cast(v_mem_mb * 0.0625 as int),500);
       HJ_BUF_SIZE := GREAT(cast(v_mem_mb * 0.00625 as int),50);
       HAGR_BUF_SIZE :=GREAT(cast(v_mem_mb * 0.00625 as int),50);
END IF;	

v_mem_mb := v_mem_mb * (mem_per/100.0);
--修改内存
SP_SET_PARA_VALUE(2,'MAX_OS_MEMORY',       mem_per);
SP_SET_PARA_VALUE(2,'MEMORY_POOL',         MEMORY_POOL);	
SP_SET_PARA_VALUE(2,'BUFFER',              BUFFER);
SP_SET_PARA_VALUE(2,'MAX_BUFFER',          MAX_BUFFER);
SP_SET_PARA_VALUE(2,'BUFFER_POOLS',        BUFFER_POOLS);--7,11,19,37,67,101 (4G-128G)
SP_SET_PARA_VALUE(2,'RECYCLE',        	   RECYCLE);
SP_SET_PARA_VALUE(1,'MEMORY_TARGET',        	   MEMORY_TARGET);	
SP_SET_PARA_VALUE(2,'RECYCLE_POOLS',       RECYCLE_POOLS);

SP_SET_PARA_VALUE(2,'HJ_BUF_GLOBAL_SIZE',  HJ_BUF_GLOBAL_SIZE);
SP_SET_PARA_VALUE(2,'HJ_BUF_SIZE',        HJ_BUF_SIZE );
SP_SET_PARA_VALUE(2,'HAGR_BUF_GLOBAL_SIZE',HAGR_BUF_GLOBAL_SIZE);
SP_SET_PARA_VALUE(2,'HAGR_BUF_SIZE',     HAGR_BUF_SIZE  );

SP_SET_PARA_VALUE(2,'SESS_POOL_SIZE',      SESS_POOL_SIZE);
SP_SET_PARA_VALUE(2,'CACHE_POOL_SIZE',     CACHE_POOL_SIZE);--SQL缓冲池大小,以兆为单位。	
SP_SET_PARA_VALUE(2,'DICT_BUF_SIZE',       DICT_BUF_SIZE); --字典缓冲区大小,以兆为单位

SP_SET_PARA_VALUE(2,'SORT_FLAG',SORT_FLAG);
SP_SET_PARA_VALUE(2,'SORT_BLK_SIZE',SORT_BLK_SIZE);
SP_SET_PARA_VALUE(2,'SORT_BUF_SIZE',       SORT_BUF_SIZE);--数据量大,且排序sql较多,可调大该参数,单位Mb
SP_SET_PARA_VALUE(2,'SORT_BUF_GLOBAL_SIZE',       SORT_BUF_GLOBAL_SIZE);--数据量大,且排序sql较多,可调大该参数,单位Mb

SP_SET_PARA_VALUE(2,'USE_PLN_POOL',        1); --启用执行计划缓存,默认开启
SP_SET_PARA_VALUE(2,'OLAP_FLAG',           2); --统计分析型库设置为1
SP_SET_PARA_VALUE(2,'VIEW_PULLUP_FLAG',    1); --视图上拉优化
SP_SET_PARA_VALUE(2,'ENABLE_MONITOR',      0); --性能监视设置为0
SP_SET_PARA_VALUE(2,'SVR_LOG',             0); --关闭SQL日志记录
SP_SET_PARA_VALUE(2,'TEMP_SIZE',           1024);--默认创建的临时表空间大小,以兆为单位
SP_SET_PARA_VALUE(2,'TEMP_SPACE_LIMIT',    20480); --设置临时表空间最大限制,以兆为单位

SP_SET_PARA_VALUE(2,'MAX_SESSIONS',        1000); --最大会话连接数
SP_SET_PARA_VALUE(2,'MAX_SESSION_STATEMENT', 20000); --单个会话上允许同时打开的语句句柄最大数
--SP_SET_PARA_VALUE(2,'BATCH_PARAM_OPT',   1);
SP_SET_PARA_VALUE(1,'PK_WITH_CLUSTER',		0); 
SP_SET_PARA_VALUE(2,'ENABLE_ENCRYPT',0); --关闭通讯加密  
SP_SET_PARA_VALUE(2,'OPTIMIZER_MODE',1); --设置使用新优化器
--SP_SET_PARA_VALUE(2,'COMPATIBLE_MODE',		2);  --开启oracle兼容性

end;
执行完成后重启生效

2.6.日常维护管理

2.6.1.启动dlsql

#进入到安装路径的 bin 目录下。

cd /home/dmdba/dmdbms/bin 

#输入命令打开 DIsql

./disql

2.6.2.创建表空间

CREATE TABLESPACE TBS1 DATAFILE '/home/dmdba/dmdbms/data/DAMENG/ TBS1_01.dbf' SIZE 128;

2.6.3.创建用户

达梦数据库中,创建用户的同时会自动创建一个同名的模式。
#创建用户 U1,密码为 DAMENG123,有自己的独立表空间 TBS1。
(此时会自动生成一个模式 U1)

CREATE USER U1 IDENTIFIED BY DAMENG123 DEFAULT TABLESPACE TBS1;

2.6.4.给用户授权

#赋给用户 U1 角色 DBA 的权限。

GRANT DBA TO DMDBA;

2.6.5.登录用户

#登录用户 U1

CONN U1/DAMENG123;

2.6.6.创建表

创建表的时候,要在表名前面加上该用户的模式名:”模式名.表名”。然后在
后面括号内填写列名和列定义)。
#创建表 UTB。

CREATE TABLE U1.UTB (id int,name varchar(15)); 

#在表 UTB 中插入数据。

INSERT U1.UTB VALUES(1,’Bob’),(2,’Tom’); 

#查询表 UTB 的信息。

SELECT * FROM U1.UTB;

2.6.7.查询用户下的表

#查询用户 U1 下所有表的表名和注释。

SELECT * FROM ALL_TAB_COMMENTS WHERE OWNER=’U1’; 

#查询当前登录用户下所有表的详细信息。

SELECT * FROM USER_ALL_TABLES; 

#查询数据库下所有的表。

SELECT * FROM DBA_TABLES;

2.7.项目沟通协调

项目推进过程中,通过技术人员面对面、远程等反复多次沟通,主要进度通过邮件、微信进行,包含方案沟通设计、问题跟进、技术培训等多方面保证整个项目过程沟通顺畅,充分做到了急用户之所急、想用户之所想。为项目上线及技术培训的进度掌控,加班加点完成工作任务。

3.客户收益

在该项目中我们不仅提供了数据库的安装服务,也根据客户的实际情况,为客户提供了数据表结构的梳理服务,根据客户的业务系统,梳理出27张数据表,并且将每一张表的字段和数据类型进行了明确的标记,最后提供了数据表的初始化脚本,以及达梦数据库的常用语句的整理培训,为客户节省了大量的时间和精力,同时也得到了客户的高度认可。

4.经验总结

4.1.数据库建设方面

在信息技术应用创新产业规划的大背景下,我们与达梦充分沟通配合合作,充分利用达梦数据库的性能特性,保证数据库平台的高效稳定。

4.2.与厂商的协作

在该项目的实施过程中,我们了解用户的实际生产环境,并解决了很多现实的问题,比如了解用户业务需求,并协助用户解决业务过程中遇到的与数据库有关的技术问题,在该项目汇中除了安装数据库外,还结合用户的实际情况,为用户提供达梦数据库的培训服务,以及数据库的连接驱动相关的问题。
在我们与达梦的技术服务团队密切合作下,技术团队高效解决了客户的驱动连接遇到的问题,在国产数据库发展的进程中,除了常规的部署,数据库相关的技术服务起到决定性的作用,达梦技术服务支撑方面质效很高。同时也感谢达梦数据库为我司培养了一支既精通技术又懂运维的DBA技术人员,以德阳项目为突破口,深入到四川省的国产化项目中,协助客户实现系统的建设、运维、管理以及数据库的自主可控。衷心希望达梦数据库发展的越来越好!团结一切力量,传递达梦的价值,讲达梦好故事,讲好达梦故事是粒天人前行的动力。

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服