达梦
达梦数据库管理系统是达梦公司推出的基于客户/服务器方式的数据库管理系统,简称DM。下图为MapGIS使用达梦数据库的流程图:

其中,DM服务器端及客户端的安装步骤可参考DM数据库官方手册,这里就不做详细说明。下面会对配置DM数据源及创建DM数据库的操作步骤进行详细说明。
提示:
达梦数据库包括了数据库和客户端,一般安装数据库时会同时安装客户端,用户也可选择安装独立客户端。MapGIS在使用达梦数据库时,需要通过达梦客户端连接数据库。MapGIS所在的客户机上,必须安装达梦客户端,不要求和达梦数据库在同一台客户机上。
DM服务器优化配置
由于达梦数据库在安装完成后,会在服务器端生成一个服务器配置文件,该文件记录了服务器端数据库环境的一些配置参数。默认情况下,配置文件中各参数的值一般能够适应所有的计算机软硬件环境,但是对于软硬件配置较好的计算机来说,默认参数的值限制了数据库的性能,因此需要数据库管理员来调整该配置文件对应参数的值,以提高达梦数据库的性能。
通过如下命令,编辑dm.ini配置文件,其中/home/mapgis/dmdbms/data为DM数据库实例路径。修改如下几个参数信息:
cd /home/mapgis/dmdbms/data/DAMENG/
vim dm.ini
- 网络通讯
FETCH_PACKAGE_SIZE = 512或1024
网络通讯包大小,单位KB。缺省值512,在千兆网络环境下1024基本是最高值。
- 并发控制
MAX_SESSIONS = 1000
服务器最大并发会话量支持,服务启动时会根据此数值创建会话线程池,不宜过大(需考虑服务器CPU硬件条件),也不能过小(无法满足客户端并发会话------MapGIS 20191023起,进程启动时建立了达梦数据源会话连接池,默认32个会话)
- 内存缓存
BUFFER = 实际内存50%
服务器数据内存缓存大小,单位MB,服务启动时初始开辟的内存大小。
MAX_BUFFER = 实际内存50%
服务器数据最大内存缓存大小,单位MB,一般设置与BUFFER相等
BUFFER_POOLS = 101
内存缓存分片数量,降低并发冲突
客户端配置
配置环境变量
在安装完达梦数据库后,还不能立即使用达梦数据源,因为在适配达梦数据库引擎时需用到达梦数据库的相关动态库和包含文件,因此需要在系统的环境变量中添加达梦数据库安装路径,以便MapGIS在使用达梦数据源时能够找到达梦数据库的动态库和包含文件。
1. 切换到root账户,配置环境变量。使用root用户,修改/etc/profile文件:
su - root
vim profile
2. 在环境变量PATH中添加DM的bin目录(如/home/mapgis/dmdbms/bin)
export PATH="/home/mapgis/dmdbms/bin:$PATH"
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/home/mapgis/dmdbms/bin

3. 执行source命令使上述配置生效
source /etc/profile
4. 利用root账户,进入/etc文件夹,执行如下命令:
disql

若执行disql提示未找到命令,请检查PATH和LD_LIBRARY_PATH是否正确。
配置中文支持
1. 若希望DM数据库可支持中文,需修改dm_svc.conf配置文件,增加如下信息信息:
vim /etc/dm_svc.conf
TIME_ZONE=(480)
LANGUAGE=(cn)
CHAR_CODE=(PG_GBK)

提示:
如果不存在dm_svc.conf配置文件,可自行新建该文件,补充上述内容。
确认依赖信息
1. 进入program文件夹,执行如下命令,确认libssl.so的依赖
ldd -r /home/mapgis/dmdbms/bin/libdmdci.so
ldd -r /home/mapgis/dmdbms/bin/libssl.so
执行命令后,如出现如下情况,libcrypto.so.1.1 not found ,则会出现无法连接的情况,若可以找到相应的库,则可以连接。如果有,不执行2/3/4步骤。

2. 执行如下命令,确认是否存在此文件。
find / -name libcrypto.so
ls /home/mapgis/dmdbms/bin | grep libcrypto
3. 随后,利用如下命令查看其 soname
readelf -d /home/mapgis/dmdbms/bin/libcrypto.so

4. 此时通过建立软连接,使DM可以找到正确的库
ln -s /home/mapgis/dmdbms/bin/libcrypto.so /home/mapgis/dmdbms/bin/libcrypto.so.1.1
5. 执行如下命令确认依赖是否已经正确:
ldd -r /home/mapgis/dmdbms/bin/libssl.so

配置MapGIS启动脚本
1. 配置完达梦数据库客户端后,编辑MapGIS脚本desktop.sh或者desktop-developer.sh。以下以desktop-developer.sh为例。
vim desktop-developer.sh
在PATH和LD_LIBRARY_PATH后加上达梦数据库安装后的bin目录路径,以冒号为分隔符与其他路径分隔。
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/mapgis/dmdbms/bin
export PATH="$PATH:/home/mapgis/dmdbms/bin"
配置DM数据源
功能说明
在客户机上安装配置DM客户端后,可在MapGIS中配置DM数据源,用来管理DM数据库。
操作说明
1. 在MapGISCatalog面板,启动"添加数据源" 功能,弹出如下所示对话框:

2. 选择“DM数据源”,服务名称格式为:"[IP]"或"[IP]:[端口号]",如192.168.23.115,点击"确定",在MapGISCatalog中可添加改DM数据源节点信息:


初始化地理数据库
功能说明
在MapGIS中配置DM数据源后,第一次使用时需初始化地理数据库"MPDBMASTER"数据库,此数据库用于存储MapGIS数据库各种表信息。用户可继续创建数据库,用于数据的存储管理。
操作说明
1. 在MapGIS Catalog中连接达梦数据源后,右键"创建地理数据库",即可新建DM地理数据库:

常见错误
- 数据库安装错误

安装达梦数据库后,创建数据库实例时出现如上错误。请确认产品安装包和key是否匹配,与操作系统,cpu架构等是否匹配,或者key是否过期。
- MapGIS连接DM数据源直接死机
需正确配置环境变量,请参考"配置环境变量"章节。
- 在DM数据库中创建简单要素类失败
MapGIS启动脚本中没有达梦安装路径的bin目录,请参考"配置MapGIS启动脚本"章节,配置完成后续重新创建DM数据库。
- DM数据库中所有中文乱码
需要配置 dm_svc.conf,请参考"配置中文支持"章节。
- MapGIS Desktop连接DM数据源时出现创建socket失败的错误
a.请检查DM服务器是否已经开机。
b.如已经开机,请检查达梦的服务是否开启,命令如下:
systemctl status DmServiceDMSERVER
c.若服务未开启,可以参考该命令启动/关闭达梦服务:
systemctl start DmServiceDMSERVER
systemctl stop DmServiceDMSERVER
- IGServer(九州)发布服务时无法找到GDB数据源
IGServer(九州)发布服务的时候,选择发布DM数据库中矢量图层,会出现在GDB列表为空的情况。这是因为在starall.sh脚本中,source了set-env.sh脚本,而set-env.sh中将LD_LIBRARY_PAHT中原本的达梦的dbms/bin目录给去掉了。导致无法找到相应的库。
a、进入"MapGIS10安装目录",执行如下命令停止IGServer服务:
bash stopall.sh
b、进入"MapGIS10安装目录/igserver_for_java/bin/",修改set-env.sh文件。将其中的LD_LIBRARY_PATH修改为DM客户端的bin目录(用户根据自己的安装目录进行设置):

c、保存编辑。执行如下source命令:
source set-env.sh
d、进入"MapGIS10安装目录",再次重启IGServer服务,即可解决问题。
bash starall.sh