当前位置:网站首页 > 数据科学与大数据 > 正文

数据库端口访问不了怎么办(数据库端口访问不了怎么办呢)



本章节主要对达梦数据库访问常见问题进行分析和处理,以下提供达梦数据库访问常见问题的分析和解决思路供用户参考。除此之外,用户还可前往达梦技术社区参与更多问题讨论。

  • 无法连接数据库,报错 6001 网络通信异常/socket 连接失败/ Create SOCKET connection failure
  • DM 数据库怎么设置/修改最大连接
  • 连接 DM 数据库时提示:未经授权的用户
  • 数据库会话不释放或者不重复利用;会一直申请到最大连接数后报错退出
  • 在不关闭防火墙的情况下管理工具如何远程连接数据库
  • 数据库会不会关闭空闲会话
  • 必须给字段加双引号,否则提示无效的列名 TRIGGER_TIME
  • 分区表(非堆表)是否能支持 global 索引/全局索引
  • 在 DM 数据库中并没有 DmJobMonitor 这个服务,但是在数据库中创建的作业也是能跑起来,有什么实际用途
  • DM 数据库如何删除主键索引
  • 怎么解决没有查询动态视图权限的问题?没有对象的查询权限
  • 创建用户失败要怎么解决
  • 快速获取表定义、详细信息的 SQL 语句
  • 报错:无效的用户名
  • 使用图形界面创建作业
  • 数据库登录密码问题
  • DM 数据库是否支持 navicat 连接
  • MANAGER 如何保存登录信息
  • MANAGER 如何执行 SQL
  • MANAGER 常用配置
  • MANAGER 写 SQL 时如何提示表名
  • 图形化界面处理自增参数
  • 使用 DM 管理工具更新表数据
  • 执行插入语句提示成功但数据并没有真正保存
  • 非法的基类名无效的列名
  • disql 连接工具的位置
  • 命令行终端工具的使用
  • disql 登录含特殊字符的密码
  • 运行 SQL 文件/执行 SQL 脚本
  • SYSDBA 用户名称能修改吗
  • SYSDBA 模式下带 的表不可以删除
  • 没有创建函数的权限/外部函数共享库加载失败
  • [-70070]: Init SSL context error
  • 客户端和服务端的通信协议
  • 能否在 Windows 连接 Linux 服务器上的达梦数据库
  • 达梦有没有生成 uuid 的函数
  • 查询时如何忽略值的大小写
  • 管理工具连接达梦数据库报错:argument cannot be null
  • 达梦管理工具有 Format/美化的功能吗
  • 批量执行任务的时候,执行几句就报错
  • Failure occurs in data_recv_inet_once
  • 如何启用/删除系统包?
  • 如何和 Oracle 一样 nvl 函数处理值
  • DM 如何将空字符串自动转换为 NULL
  • 如何在工具里可视化插入一条数据
  • 存储过程使用动态数组报错:标识符长度非法
  • 当指定列列表,且 SET IDENTITY_INSERT 为 ON 时,才能对自增列赋值
  • 用户账户锁定了,怎么解锁
  • 是否支持开启 cdc 或者类似 binlog 功能,提供实时监控采集数据到外部的功能么?比如实时到 kafka
  • DM8 是否支持 OLEDB 驱动
  • 服务启动后使用管理工具登录时会报系统错误
  • 管理工具执行 SQL 文件,出现乱码
  • 前台启动数据库显示乱码
  • 达梦事务/SQL 自动提交设置
  • 如何调出达梦的可视化管理工具
  • 报错:没有[CIPHERS]对象的查询权限
  • 达梦管理工具打开报错:faild to create the java virtual machine
  • DISQL 中设置了 set autocommit on; 但 manager 工具还是需要 commit, 数据才能入库
  • 客户端执行脚本时报错内存不足
  • 执行 SQL 脚本,报错 invalid file path 错误
  • 语句块/包/存储函数中的间隔分区如何支持自动扩展
  • 创建局部唯一索引或者 primary key, 必须包含分区列。全局索引不受此限制
  • 远程 linux 的数据库服务端,一定要关闭防火墙吗
  • 运行管理工具报错:screen for GtkWindow not set
  • 运行https://eco.dameng.com/document/dm/zh-cn/faq/manager 或者https://eco.dameng.com/document/dm/zh-cn/faq/dts 图形工具开启报错
  • 使用管理工具和 ddl 脚本修改表的注释之后,注释在管理工具中不显示
  • 表插入数据以后,重启服务或停止服务后开启服务,表里面的数据丢失
  • 用户名密码错误
  • linux 系统中,打开管理工具乱码
  • DM 集群中,通过 disql 无法连接数据库,manager 工具可以连
  • 访问达梦数据库报错:无效的 ip
  • 在达梦管理工具上怎么修改结果集?
  • 密码非明文登录 DISQL 方法
  • 指定 dm_svc.conf 非默认位置
  • 数据库设置手动提交模式,但执行新建表后,发现之前未提交事务已被自动提交
  • DM8 创建链接访问 Oracle 数据库报错:DBLINK 加载库文件失败
  • 使用 xmanger 等工具打开远程服务器上的管理工具报错
  • Manager 管理工具连接后没有模式等相关信息
  • 使用 disql 连接数据库报错:没有匹配的可登录服务器
  • 应用通过私网 IP 连接数据报错:网络通信异常
  • Manager 管理工具无法修改表、更新统计信息以及查看表属性
  • 使用 DM 客户端管理工具进行某些操作时,弹框报错:Java heap space
  • manager 工具关闭了对象导航栏后如何重新打开
  • 在 linux 环境下打开 SQL 命令行工具,按“Backspace”无法正常删除
  • 达梦如何设置某用户某些 IP 远程访问
  • DM 数据库使用 ODBC 方式创建 DBLINK 访问 Oracle 时报错 ​"[-70037]:字符串不完整​" 或者中文显示为问号
  • 达梦数据库如何使用 IPV6 连接
  • 登录数据库使用 127.0.0.1 或者 localhost 能在本服务器登录,不写则报创建 SOCKET 连接失败
  • dm 通过 dblink 查询 Oracle 表,报错:字符串截断
  • LINUX/UOS 环境,使用非 ROOT 用户启动管理工具时失败并报错:GLib-Gobject-Warming: 时间日期: invalid (NULL) pointer instance
  • 普通用户开启操作系统认证,用 root 用户登录数据库报错:未经授权的用户
  • 管理工具连接单机数据库时报错:服务器模式不匹配
  • 打开 manage 客户端工具无响应
  • 采用 GM 算法进行通信加密。
  • mpp 集群全局登录失败报错:”[-6024]:Remote node global login failed.”
  • disql 连接数据库报错 Segmentation fault (core dumped)
  • Linux 如何设置别名来快速访问达梦数据库
  • 如何实现使用 DM 保留字作为对象名

【问题描述】

连接数据库时出现报错:登录服务器失败。

  • 客户端管理工具连接数据库报错:错误号 6001,错误消息:网络通信异常。如下图所示:

image.png

  • 或命令行连接数据库报错:socket 连接失败或 Create SOCKET connection failure。如下图所示:

命令行连接报错信息

【问题分析】

使用 DM 数据库时,有时会碰到登录失败的情况。根据使用的连接工具不同,问题具体可能表现为网络通信异常或者 socket 连接失败。

当出现网络通信异常报错时,先考虑客户端与数据库服务器之间网络通信问题;如果客户端与数据库服务器之间网络通信正常,则考虑数据库服务器是否已正常启动。如果网络和数据库服务都正常,则考虑数据库相关连接配置等。

【问题解决】

具体解决办法可参考 DM 数据库连接失败的排查方法。

【问题解决】

关于最大连接数,可参考《DM 系统管理员手册》dm.ini 章节(手册位于数据库安装路径 文件夹下),最大连接数参数如下:

参数值介绍

  • 主要修改 的值,根据用户自行赋值。建议值大小如下:

以主机 CPU 4 路 8 核内存 64 GB 为例,建议值大小如下:

 
   

修改参数在数据库实例路径下的 dm.ini 文件,修改完成后,重启数据库才生效。

  • /etc/security/limits.conf 的 open file 也要扩大。跟 Oracle 的 session 和 process 一样。

【问题描述】

新建实例,修改 max_session 为 1。

 
   

查询结果

报错复现: TEST 用户登录

用户登录

【问题解决】

修改 dm.ini 里面的 MAX_SESSIONS,,修改完重启数据库。

启动服务端的 console 工具查询 KEY 信息(工具在安装目录的 TOOL 目录下)。

控制台工具

如上图所示的最大并发数为 25,调整参数是无效的,需要找销售人员申请对应的 KEY。

再次验证 TEST 用户登录,登录成功,如下图所示:

验证登录

【问题分析】

其原因很有可能就是连接池没有做好相关配置,或者配置了却设置的值不对,那么超时的原因大概有以下几点:

  • 最大连接数大于数据库服务器端配置的最大连接数,多余的连接在被使用到的时候出现连接超时。
  • 网络抖动:每次连接的时候提交或维护大量数据,此时网络不稳定导致连接超时。
  • 占用的资源未被释放,一般只 Open 一次,获取一个 *DB,但是在使用 stmt,rows 或者是 tx 时候用完没有关闭,耗尽资源也有可能导致连接超时。

【问题解决】

对于出现的 3 种问题,可以试试下面的解决方法:

  • 对于最大连接数的问题,调用函数 设置值(小于数据库配置的最大连接)。
  • 对于维护大量数据,可以尝试采用事务操作,若失败,回滚。然后重试。
  • 使用 defer 关键字,在启用操作的时候直接在下一行加上 函数 return 的时候会执行相关的关闭函数。

如果尝试了以上的解决方法,还是发现偶尔会出现连接超时的错误的话,很可能是因为数据库本身对连接有一个超时时间的设置,如果超时时间到了数据库会单方面断掉连接,此时再用连接池内的连接进行访问就会出错,连接池中的每个连接都维护了一个创建时间,取连接的时候会自动检查的,可以试试调用 db 的 方法来给 db 设置一个超时时间,时间小于数据库的超时时间即可。

【问题解决】

配置服务器防火墙,以 root 身份编辑 文件,向文件中增加 部分信息。

 
   

重启 iptables 服务。

 
   

【问题描述】

创建线程时就连接数据库了,之后线程一直闲置中,过了一天后链接会话还在吗?数据库会不会把这个会话关闭?

【问题分析】

这个相当于长连接的问题,一天后连接还在,因为数据库不会把这个会话关闭。下面简单介绍下数据库的长连接和短连接。

  • 短连接操作步骤:连接-数据传输-关闭连接。
  • 长连接操作步骤:连接-数据传输-保持连接-数据传输-保持连接-…………-关闭连接。

这就要求长连接在没有数据通信时,定时发送数据包,以维持连接状态,短连接在没有数据传输时直接关闭就行了。

什么时候用长连接,短连接?

长连接主要用于在少数客户端与服务端的频繁通信,因为这时候如果用短连接频繁通信常会发生 Socket 出错,并且频繁创建 Socket 连接也是对资源的浪费。一般情况下应用和数据库直接的连接都是通过连接池实现,也就是采用长连接的方式。而一般连接到服务器查询某个数据时,这种情况采用的是短连接。

DM 数据库可以通过 查看会话连接情况。比如查询连接超过 7 天的会话,可以通过下面的 SQL 实现:

 
   

查询结果

如果要删掉超过 7 天的会话,可以通过下面的 SQL 先找过超过 7 天的会话,然后把里面的内容拿出来执行:

 
   

查询结果

假如结果是::直接在 manager 中执行即可删除该条连接。

查询结果

执行结果, 这个会话被关闭。

查询结果

因为测试机刚启动的没有超过 7 天的会话,执行的时候没加后面的 where 条件。

【问题分析】

可能与大小写敏感的设置有关:

  • 大小写敏感的情况下,字段会自动转换成大写。
  • 加引号是不让字段转换成大写,这个表里面的字段在创建时应该是小写的。
  • 从 MySQL 迁移到 DM,最好在迁移到之前,设置 DM 数据库初始化大小写不敏感。

大小写设置方法:

大小写敏感设置在初始化实例中可以设置大小写敏感参数。

初始化参数

查看大小写敏感的方式:

  • 链接数据库右键数据库管理服务器页面。可以看到当前数据库是否是大小写敏感设置。

系统概览

  • 命令行的方式查看
 
   

【问题分析】

DM 数据库支持对水平分区表建立普通索引、唯一索引、聚集索引和函数索引。创建索引时若未指定 GLOBAL 关键字则建立的索引是局部索引,即每一个表分区都有一个索引分区,并且只索引该分区上的数据。如果指定了 GLOBAL 关键字则建立的索引是全局索引,即每个表分区的数据都被索引在同一个 B 树中。

详见《DM8 系统管理员手册》第 15 章节内容。(手册位于数据库安装路径 文件夹下)

DmJobMonitor 是监控作业的服务,监控作业是否正常,一般是在 DM 管理工具里点击【作业】-【查看历史作业信息】即可获取作业的运行情况。

作业历史信息

遇到 DM 数据库主键索引无法删除的情况不要着急,可以先将表的主键约束去除,再执行删除即可。

主键约束

【问题描述】

用户查询报错:

报错信息

【解决方法】

  • 使用 SYSDBA 用户,给没有权限的用户赋权(赋予 VTI 角色):
 
   
  • 或者直接赋予相应视图的查询权限(比如查询 v$dm_ini 视图的权限):
 
   

创建用户失败的原因可能有多,具体问题要具体分析,遇到错误时首先查看报错的详细信息,这样才能快速的定位和解决问题,下面列举几种常见的错误:

  • 用户名已经存在该用户

用户已存在

  • 密码复杂度不符合要求

复杂度不符合

  • 授权不正确,如下授权,选择的是【ALL】,有些权限是不能分配给普通用户的,如下图所示:

权限分配

如果是在 windows 操作界面,可以直接用管理工具-单击表然后右键查看。

如果是在 Linux 界面可通过以下方法查看。

  • 方法一

调用 DM 存储系统过程 ,获得表的定义,如下图所示:

系统存储过程

参数说明:

 
   

这个存储过程,直接 call 调用或者写在匿名块中调用均可。

比如,查询 DMHR 模式下 EMPLOYEE 表定义:

 
   

调用系统存储过程

 
   

执行结果

这个存储过程是 DM 数据库独有的,Oracle 并没有这个存储过程。但是它存在一个缺点,只能查询表,不能查询其他类型的对象。

所以这里推荐第二种方法,也是笔者最常用的查询表定义的方法。

  • 方法二

,DBMS_METADATA 系统包包含了许多实用的函数,有兴趣可以查看 DM 官方文档慢慢了解,这里就不一一赘述了,介绍一下 GET_DDL,如下图所示:

介绍信息

我们再测试一下这个包:

执行结果

GET_DDL 功能非常强大,可以用于获取数据库对表、视图、索引、全文索引、存储过程、函数、包、序列、同义词、约束、触发器等的 DDL 语句。

  • 建立用户的时候,会建个同名的模式,如果模式已存在就会报错,如下图所示:

模式信息

  • 所登录的用户名就没有建立。
  • 搭建 dsc 的时候,asm 环境初始化报的 ,检查一下 DMDCR_CFG.INI 里面的 ,如下图所示:

描述信息

首次使用时,需要先创建代理环境,如下图,在代理上右键,选择【创建代理环境】,如下图所示:

启动代理

然后在作业上右键新建作业,出现右边的方框中选择【添加】,如下图所示:

新建作业

常规设置

选择作业调度之后,在右下方选择【新建】,然后出现调度频率和时间的选项。

  • 忘记密码怎么办?

如果是系统用户 SYSDBA、SYSSSO 忘记密码,是没有办法找回来的。

如果是自定义的用户密码丢失了,可以通过 SYSDBA 来更改密码。

  • 数据库是否有默认密码/用户口令?

DM 数据库密码默认是和用户一样的,大写 SYSDBA。

  • 密码中含有 @/等特殊字符怎么办?

需要通过转义符来处理。disql 转义符使用如下:

linux 环境,需要使用双引号将密码包含进来,同时外层再使用单引号进行转义,具体例子如下:

 
   

windows 环境,需要使用双引号将密码包含进来,同时对双引号使用进行转义,具体例子如下:

 
   
  • Manager 客户端登录保存密码为什么还是需要输入密码?

需要注册连接。

  • SYS 用户密码是多少,SYS 能登录吗?

SYS 是不能登录的?

  • 数据库更改密码策略,对以前建立的用户不生效?

删除重建。

  • SYSSSO 用户密码是多少?

DM 数据库初始化时设置 SYSSSO 的密码,默认为 SYSSSO,仅在安全版本下可见和可设置。

  • 用户密码过期及修改用户登录失败次数超过限制怎么办?

用 SYSDBA 登录来修改用户的配置,先修改密码再修改资源。

 
   
  • DM 数据库的密码策略是什么?

通过 DM.INI 里的参数: 设置系统默认口令策略。

 
   

若为其他数字,则表示配置值的和,如 3=1+2,表示同时启用第 1 项和第 2 项策略。

当 INI 参数 COMPATIBLE_MODE=1 时,PWD_POLICY 的实际值均为 0。

  • 怎么查看密码策略?

可以通过如下视图查询系统策略情况:

 
   
  • 怎么设置或修改密码?

通过如下命令设置系统密码策略,该参数为动态参数,修改后即时生效,不需要重启数据库。

 
   

设置策略成功后,对新创建的用户有效。原来的用户需要通过 alter user 修改用户的密码策略:

 
   

更多关于设置密码相关问题,请参考《DM_SQL 语言使用手册》管理用户-用户定义语句。(手册位于数据库安装路径 文件夹下)

Navicat 工具暂不支持 DM 数据库,DM 数据库的连接可以使用数据库自身的 DM 管理工具进行连接。

DM 数据库管理工具存放在安装目录 dmdbms 下的 tool 文件夹中打开 manager.exe 进行连接即可。

目录地址

DM 管理工具 MANAGER,在打开以后,可以通过注册连接按钮新建连接,该方法新建的连接会保存到左侧的连接导航栏中。

新建服务器连接

DM 管理工具 MANAGER,在登录以后,右侧 SQL 窗口输入 SQL 语句后,可以点击工具栏上对应的绿色三角按钮执行,完成后需要点击后面的【提交】或者【回滚】按钮完成事务的提交和回滚。

管理工具

  • 打开管理工具-选项

选项

  • 在选项下有一些设置,DM 管理工具-窗口-选项。可以根据实际需求进行一些配置的调整。
  • 消息区-显示的最大字符数

会影响使用语句块进行批量循环 PRINT 信息,需要调大。如果过小,消息区显示的 SQL 内容不全,PRINT 的信息也显示不全。

  • 大小写敏感

如果不是必须大小写敏感,建议将管理工具上保持大小写敏感配置取消,这样后台全部转换成大写,就不会造成表名、字段名等由于大小写缘故出现无效的字段或者表名之类的错误。

  • 出错后继续执行

生产环境要关闭自动提交和出错后继续运行的配置,避免出现错误后,无法挽回。

选项

  • 显示的最大字符数

选项

选项

选项

DM 数据库中可以模糊提示表名,在 DM 管理工具中右键【选项】,把编辑器中需要的选项全部勾选上。

编译器

根据需要勾选好就可以达到自己想要的设置了。

DM 支持 INT 和 BIGINT 两种数据类型的自增列,并提供以下函数查看表上自增列的当前值、种子和增量等信息:

 
   

在新建表的时候,选中表-修改-把对应列设置为自增列。

自增列

登录用户,找到【模式】,找到相关的表,点击右键,选择【浏览数据】,将列表中的数据拉到最底下,点击【not null】输入数据,然后点击保存。

浏览数据

保存

管理工具默认是非自动提交的(窗口—选项),在执行 insert、update 等对数据进行修改的语句以后,需要执行 commit 命令进行提交。

如需修改成自动提交模式,可以在管理工具的对应选项中进行勾选,如下图所示:

自动提交

使用 DM 管理工具访问 DM 数据库,在使用图形化工具查看数据库对象时,报错:非法的基类名/无效的列名等。

  • 这种情况一般发生在客户端工具与服务器的版本差别较大的时候,需要更新客户端,并与服务器版本保持一致。
  • 需要启动系统包,比如 ,启动相应的系统包,具体方法参考《DM 系统包使用手册》(手册位于数据库安装路径 文件夹下)。

数据库 disql 连接工具的存放位置,在 Linux 环境下假设数据库安装目录在 /opt/dmdbms/ 目录下,进入 /opt/dmdbms/bin 下执行 输入对应的用户名和密码即可访问数据库。

disql

DM 命令行工具位于数据库安装目录的 bin 下,图形化工具位于数据库安装目录的 tool 下。我们以 Linux 环境为例,假设 DM 数据库安装目录为 /opt/dmdbms 下,则命令行工具都在 /opt/dmdbms/bin 下,常用的命令行工具包括并不限于:

 
   

DM 数据库提供了类似于 Oracle 的 sqlplus 的终端工具,即 DM 命令行客户端工具 disql,工具的路径在安装路径下的 https://eco.dameng.com/document/dm/zh-cn/dmdbms/bin/ 下,格式:

Linux 环境基本使用方法如下(路径以实际环境为准):

 
   

登录

Windows 环境使用和 Linux 环境类似。

登录

当密码后面不跟 时,则默认为 。

更多功能的详细使用方法请参考《DM_disql 使用手册》。(手册位于数据库安装路径 文件夹下)。

详细描述型可以帮助您更了解 DM SQL 语言处理特殊字符转义字符,如果您急需解决问题,请往下查看“简单描述型”。

举例 1:window 操作系统:

创建用户,如下所示:

 
   

使用 disql 登录报错如下:

登录报错

disql 正确的登录如下:

正确登录

  • disql 的关键字符,disql 的要求对连接串的特殊字符需要使用双引号括起来"aaaa/aaaa",操作系统的要求需要再在最外加双引号和转义"""aaaa/aaaa"""。例如:用户名为 user01,密码为 aaaa/aaaa,那么连接串要写成:
  • 空格,需要使用双引号括起来作为一个整体(这是操作系统的要求)。例如:用户名为 user01,密码为 aaaa aaaa,那么连接串要写成:。
  • 双引号:disql 要求对双引号需要使用双引号括起来,同时双引号需要转义"aaaa""aaaa";操作系统要求再对双引号转义和最外层加双引号那 么 连 接 串 要 写 成 : 。

举例 2:Linux 操作系统:

创建用户,如下所示:

 
   

disql 登录报错如下:

报错信息

Linux 登录输入反斜杠结果显示 如下。

错误信息

原因是字体选择问题导致。

Linux,shell 输入反斜杠显示 。

solution:字体必须为 。

正确的登录方式如下:

正确登录

bash 的引号设计为:在单引号中,所有的特殊字符都失去其特殊含义;在双引号中,特殊字符包括:美元符($)、反引号(`)、转义符()、感叹号(!)。

如果密码中没有单引号的,应该都只有外面加单引号就可以解决了;如果密码只有单引号,那么可以将单引号用双引号括起来;如果既有单引号又有美元符($)、反引号(`)、转义符()、感叹号(!)四个特殊字符,那么在特殊字符之前全部加转义即可。举例如下:

 
   

其次,在操作系统要求的基础上,增加 disql 对关键字和双引号的要求。

  • disql 的关键字符,disql 的要求对连接串的特殊字符需要使用双引号括起来。

例如:密码为 aaaaaaaa,使用双引号括起来“aaaaaaaa”,因为此密码中不含有单引号,根据操作系统的要求直接在最外面加单引号。

例如:用户名为 user01,密码为 aaaa/aaaa,那么连接串要写成:

  • 双引号, disql 要求对双引号需要使用双引号括起来,同时双引号需要转义。例如:密码为 aaa”aaaa,那么根据 disql 的要求加双引号同时转义。

为”aaa””aaaa”,因为没有单引号,根据操作系统的要求直接加单引号。例如:用户名为 user01,密码为 aaa”aaaa,那么连接串要写成:

  • 单引号,根据操作系统的要求,只能将单引号放入双引号中。

例如:用户名为 user01,密码为 aaaa'aaaa,那么连接串要写成:

  • 单引号 + 操作系统下的特殊字符,根据操作系统的要求,因为单引号只能放在双引号内,同时双引号中还有一些特殊字符不能被识别需要加反斜杠转义。

例如: 用户名为 user01,密码为 ,使用双引号括起来,同时对 $ 加反斜杠转义。那么连接串要写成:

  • 单引号 + 双引号,根据操作系统的要求,单引号需要放在双引号中,在双引号中表示双引号则使用反斜杠转义双引号。

例如: 用户名为 user01,密码为 aaa”'aaaa,根据 disql 的要求双引号作为特殊字符,需要使用双引号在括起来,同时使用双引号对双引号转义”aaa””'aaaa”;同时考虑操作系统的要求,因为含有单引号,只能将整个密码放入双引号中,同时对双引号使用反斜杠转义,

那么连接串要写成:

如何转义双引号?

disql 的要求使用双引号对双引号内的双引号转义。

  • Windows 命令行,使用双引号或者反斜杠对双引号内的双引号转义。
  • Linux 命令行,使用反斜杠对双引号内的双引号转义

简单描述型:

有时候密码包含了 等特殊字符导致 disql 无法直接连接和运行。需要通过转义符来处理。disql 转义符使用如下:

  • Linux 环境下,需要使用双引号将密码包含进来,同时外层再使用单引号进行转义,具体例子如下:
 
   
  • windows 环境下,需要使用双引号将密码包含进来,同时对双引号使用进行转义,具体例子如下:
 
   
  • Windows 环境

启动 disql 时,运行脚本如下:

 
   

启动 disql 之后,运行脚本如下:

 
   
  • Linux 环境
 
   

具体使用方式,参考《DM_Disql 使用手册》第 5 章节-如何在 Disql 中使用脚本。(手册位于数据库安装路径 文件夹下)。

SYSDBA 是超级管理员,无法修改。

此为系统表,一般有两张,。不可删除。

【问题描述】

执行创建外部 Java 函数的操作,提示没有权限/没有创建函数的权限/"外部函数共享库加载失败"

【解决方法】

根据以下步骤进行排查:

  • 检查参数 ENABLE_EXTERNAL_CALL 是否等于 1,在 dm.ini 里面修改 重启数据库服务才能创建外部函数。
  • 检查 jar 包所在绝对路径是否正确;
  • 检查 dmagent 配置是否正确,自建的 jar 包能否正常调用。
  • 检查 jar 包打包方式,若 jar 包中存在多个主类,使用 Maven 进行打包会导致依赖不全,外部函数无法调用。正确打包方式应使用 Build Artifacts 打包,指定好主类集所有依赖包在项目中打包成一个 jar,这样能确保 jar 包能正常调用。打包方式如下图所示。
    (1)点击 文件--> 项目结构---> 工件,添加 jar。
    jar 包打包
    (2)指定好主类。
    jar 包打包
    (3)左上角菜单栏 构建---> 构建工件,即可完成多主类 jar 包的打包。
    jar 包打包
















  • 更多外部函数正确调用过程,请参考《DM_SQL 语言使用手册》第 10 章节。(手册位于数据库安装路径 文件夹下)。

【问题描述】

【问题解决】

检查初始化参数 ENABLE_ENCRYPT 是否设为 1,如果为 1,说明所有的通信都已经 SSL 加密了,同时任何用户连接数据库都需要 SSL 证书。安全版中默认开启了 SSL 加密。

如果链接的时候不需要 SSL 证书 ,可将 ENABLE_ENCRYPT 设置为 0。执行以下语句将其关闭:

 
   

执行完后重启数据库才能生效。

ENABLE_ENCRYPT 参数是在 DM.INI 配置文件里面设置,其他设置方法参考《DM 系统管理员手册》第 2.1 小节(手册位于数据库安装路径 文件夹下)。

在确认使用 SSL 加密的情况下,有以下几种可能的原因:

  • 输入的 SSL 验证密码不正确:
    如果是通过 jdbc 接口来加密访问数据库,是使用的.keystore 文件,所以 SSL 认证密码是 keystore 文件的密码;
    如果是通过 ODBC 或者其他方式加密访问数据库,那么是使用 ca-cert.pem、client-cert.pem 和 client-key.pem 三个文件,所以 SSL 密码为客户端私钥密码。




  • 证书文件可能存在问题;
  • 当前操作系统用户无访问客户端证书的权限;

对应的处理方法为:

  • 检查验证客户端私钥密码或者 keystore 文件密码是否正确,或者直接重新生成客户端证书等文件;
  • 使用多种方式登录测试验证,比如使用 disql 和 jdbc 两种方式进行测试验证;
  • 检查当前用户是否有访问客户端证书的权限,或者将证书目录权限设置为 777,比如:chmod 777 -R client_ssl;

TCP/IP 协议,可以通过 SSL 加密。

如果想拥有审计 SQL 语句的功能,建议通过 ,配合修改 sqllog.ini 生成 SQL 日志(详见《DM 系统管理员手册》-2.1.1 章节,手册位于数据库安装路径 文件夹下),对生成的日志文件进行审计。如果是希望在网络层通过截取消息包进行解析,从而获取 SQL,建议通过商务联系,进行产品适配。

使用 DM 数据库客户端工具可以实现在 Windows 上连接 Linux 服务器。

使用 guid() 函数查询:

  1. 初始化数据库实例的时候,“大小写敏感”参数设置成“N”。
  2. 用函数进行查询。

客户端和服务端版本不匹配,比如高版本连接低版本等。

使用快捷键 或使用右键菜单-->SQL 脚本--> 格式化

数据库日志有这个错误,批量执行任务的时候,执行几句就报错:Database P0000024537 main_thread cmd 13 validate error

可以把 dm.ini 参数配置文件里面的参数 COMM_VALIDATE(是否对消息进行校验。0:不检验;1:检验) 设置成 0。

这是通信中产生的告警信息,错误代码是操作系统返回的,107 Transport endpoint 传输终点没有连接,在系统繁忙的时候会刷这个,通常可以忽略。

 
   

可以参考《DM 系统包使用手册》,手册位于数据库安装路径 文件夹。

【问题描述】

Oracle 中 nvl 函数处理的值,达梦数据库用 ifnull/isnull/nvl 处理,我看数据库值是 NULL 才处理了,’’就不能处理,怎么和 Oracle 一样处理?

【问题解决】

将 dm.ini 的参数 COMPATIBLE_MODE 改成 2,处理 NULL 的方式就和 Oracle 一样了。

将 dm.ini 的参数 COMPATIBLE_MODE 改成 2。

在 DM 管理工具中,右键点击【表】,浏览数据:

浏览数据

直接在结果集进行编辑,然后点击右键选择【保存】:

修改、保存数据

检查 dm.ini 参数 COMPATIBLE_MODE,如果值为 3,达梦数据库为兼容 SQL Server 的模式,则不支持数组,可以选择改变兼容模式或使用动态表改写。

这个是会话级的,而且同一会话只能有一个表 set,当插入数据并且要指定自增列的值时,必须要通过语句将 IDENTITY_INSERT 设置为 ON 时,插入语句中必须指定“PERSON_ TYPEID ”(举例)中要插入的列。对自增列插入指定数据时候,先执行一下 SET IDENTITY xxx 就行了。

  1. .SET IDENTITY_INSERT 表名 ON :表示开启对标识列显示值插入模式,允许对标识列显示值进行手动插入数据。
  2. .SET IDENTITY_INSERT 表名 OFF:表示关闭对标识列显示值的插入操作,标识列不允许手动插入显示值。

使用系统管理员登录执行:

 
   

也可以使用管理工具进行可视化处理:

浏览数据

浏览数据

可通过达梦数据实时同步软件 DMHS,来进行处理同步推送。

DM8 不支持 OLEDB 驱动,请用达梦的 ODBC 驱动代替。

  1. 重启下数据库,看问题是否解决。若重启后解决,可能是旧版本 BUG,建议升级数据库版本彻底解决此问题,或者定期重启数据库。
  2. 如果重启数据库后还是报错,可能是客户端与数据库版本不匹配导致的,需要将客户端和服务端版本换成一致的。

需要确保操作系统、数据库、SQL 文本三者字符集一致,避免出现乱码。

更改连接工具字符集,确保同服务器字符集一致。

  1. 默认非自动提交
  2. 管理工具设置自动提交方式:窗口-选项-查询分析器-自动提交,请参考执行插入语句提示成功但数据并没有真正保存

进入到安装目录的 tool 目录下:

  • Windows 系统:可以直接双击运行
  • Linux 系统:https://eco.dameng.com/document/dm/zh-cn/faq/manager

修改用户所属角色,勾选授予 VTI 权限,或者用 sysdba 给账号权限:

 
   
  1. 可能是和其他软件冲突了。先关闭掉其他软件,再打开管理工具试试。
  2. 服务器内存不够。

需要设置选择管理工具-窗口-选项-查询分析器-自动提交。请参考执行插入语句提示成功但数据并没有真正保存

  1. 分段执行 SQL 脚本;
  2. 点击客户端右下角垃圾收集,缩小堆大小,释放空间。

垃圾收集

  1. 检查 SQL 脚本路径是否正确,要脚本的绝对路径。
  2. start d:/test.sql 注意,在该语句后面不要加";"结束符。

可以设置 dm.ini 参数:DEL_HP_OPT_FLAG 取值为 4,允许语句块中的间隔分区表自动扩展。

执行下列语句:

 
   

如果不关闭防火墙的话 要把相关端口加入到策略里。

【问题描述】

dmdba 用户在 /home/dmdba/dmdbms/tool 路径下,执行 https://eco.dameng.com/document/dm/zh-cn/faq/manager 报错。

 
   

dmdba 用户执行 xhost + 可以正常出来 access control disabled, clients can connect from any host.

【问题解答】:

这个是图形化界面打不开的问题,建议咨询操作系统技术人员。或者改用命令行方式进行数据库操作。

【问题描述】

数据库用命令行的方式可以正常启动。

用 dmdba 的用户在 tool 目录下运行https://eco.dameng.com/document/dm/zh-cn/faq/manager 或者https://eco.dameng.com/document/dm/zh-cn/faq/dts 会报错:/usr/share/themes/kylin-black-theme/gtk-2.0/gtkrc:817: 找不到包含文件:“apps/caja.rc”

【问题解决】

这个是图形化界面打不开的问题,建议咨询操作系统技术人员。或者改用命令行方式进行数据库操作。

  1. 在管理工具中修改表的注释,如图所示:

修改注释

  1. 如果使用 SQL 脚本修改表的注释,执行结束后需要执行 commit 提交操作:

SQL 语句修改注释

也可以设置管理工具的菜单:窗口--> 选项--> 查询分析器--> 自动提交 进行勾选。如下图:

自动提交

默认是手动提交的方式,执行数据插入语句后,需要执行 commit 进行提交,否则会回滚。类似问题请参考 执行插入语句提示成功但数据并没有真正保存

  1. 注意大小写敏感
    修改密码语句中密码未加双引号,登录需要把小写字母全部改为大写;

  2. 注意不要用操作系统的用户名和密码输入,用数据库的用户名密码登录 ,默认是 SYSDBA/SYSDBA;
  3. 注意登录端口是否正确,可以试着添加 IP 和端口号来登录;
  4. 如果是全库备份还原,注意在目的库上,再次登录的时候,用户名密码要用源库的。

回答:可能是因为操作系统缺少中文字库,确保操作系统、数据库的字符集一致。

【问题说明】

主备集群中,通过 disql 无法连接数据库,manager 工具可以连。报没有匹配的可登录服务器。查看 dm_svc.conf 如下:

 
   

【问题解决】

服务名中配置的 LOGIN_MODE 为全局模式,需要把 LOGIN_MODE 配置在 OA 服务名下,如下:

 
   
  • 检查防火墙状态,关闭防火墙
 
   
  • 查看用户和用户状态
 
   
  • 查看用户 访问 ip 限制和资源限制,看 IP 是否设置在资源限制里。
 
   
  • 修改用户 资源限制条件
 
   

修改结果集

默认 DISQL 登录数据库密码是明文,以下登录方式可以不显示密码:

https://eco.dameng.com/document/dm/zh-cn/faq/disql /nolog 登录 DISQL 后,输入 login 登录数据库,按照提示填写 IP 号、用户名、密码、端口号等选项;

DISQL 登录

如果想要不用每次登录都输入端口,可以在配置文件 dm_svc.conf 中配置

端口配置

 
   

【问题描述】

在 MANAGER 管理平台执行完一些新增记录事务后未提交,后面新建表后,发现之前的未提交事务已被自动提交。例如:在同一会话中依次执行以下 3 条语句,且均不提交:

 
   

在另一会话中查询 SYSDBA.TEST 表,得到如下结果

查询 SYSDBA.TEST 表结果

发现可以查到会话 1 插入的语句,说明 insert 语句已经提交。

【问题解决】

在手动提交模式下,当遇到 DDL 语句时,DM 数据库会自动提交前面的事务,然后开始一个新的事务执行 DDL 语句,这种事务提交被称为隐式提交。DM 数据库在遇到以下 SQL 语句时会自动提交前面的事务:

  • CREATE;
  • ALTER;
  • TRUNCATE;
  • DROP;
  • GRANT;
  • REVOKE;
  • 审计设置语句。

【问题描述】

【问题解决】

 
   

然后,使用 find 命令查找系统上对应的动态库文件,查找到之后加入到 LD_LIBRARY_PATH 系统环境变量,或者添加到 /etc/ld.so.conf.d 目录下指定的配置文件中。如下:

 
   
 
   

然后需要重启 DM 数据库(前提是 LD_LIBRARY_PATH 或者 ldconfig 配置正确),重启服务后数据库会加载 Oracle OCI 驱动,之后就可以正常使用 DBLINK 访问 Oracle 数据库。

 
   

【问题描述】

使用 xmanger 等工具打开远程服务器上的 manager 图形工具报错,如下图:

报错信息

依据提示查看 https://eco.dameng.com/document/dm/zh-cn/workspace/manager/.metadata/.log 日志文件,提示缺少库文件 libgtk-x11-2.0.so.0,而无法打开图形窗口,如下图:

.log 日志报错信息

【问题解决】

使用 yum 命令查找提供这个库文件的软件包,如下图:

查找软件包

安装 gtk2 这个软件包:

 
   

【问题分析】

出现这种情况一般有如下两种原因:

  • 检查数据库启动状态,若是以 mount 方式启动,修改为 open 状态即可。
  • 客户端版本和数据库服务的版本相差太多的问题,请使用服务版本下客户端,或者重新下载对应的安装包安装对应版本客户端。

【问题描述】

数据库服务处于启动状态,通过数据库服务本地登录 disql 登录数据库用户,显示报错:-70019:没有匹配的可登录服务器。

【问题分析】

出现该报错可能是由于以下几种原因:

  1. 数据库连接会话数超过 MAX_SESSIONS 设定值。
  2. 因为 Linux 环境中 ulimit 配置中的 max open files 参数配置过小或者配置未生效。
  3. dm_svc.conf 配置了全局的 login_mode 参数。

【问题解决】

可根据以下思路进行排查:

  1. 明确数据库服务处于启动状态,通过如下命令查看进程是否存在。
 
   
  1. 检查 disql 连接数据库的端口是否正确,可以通过命令 或者 查看,参考登录命令:https://eco.dameng.com/document/dm/zh-cn/faq/disql 用户名/密码 @IP:端口号 。
  2. 检查是否由数据库连接会话数超过 MAX_SESSIONS 设定值引发。检查方法有两种:

  (1)排查数据库服务本地日志中是否存在类似于“Reached the max session limit” 的 ERROR 错误,如果存在,则说明数据库连接的会话数超过了 MAX_SESSIONS 设定值。可以调整 dm.ini 中的 MAX_SESSIONS 参数值,重启数据库服务生效(MAX_SESSIONS 原则上应综合考虑数据库架构、业务需求、应用代码层数据库连接设计逻辑等方面进行设置)。

  (2)通过 dmserver 服务的线程连接情况判断,比如:通过 获取 dmserver 的进程号,比如为 5009,然后通过命令: 查看达梦服务的线程数是否超过 MAX_SESSIONS 的值。

  1. 排查日志是否存在报错:“warning: Couldn't set socket option for set timeout: 5000, err_code: 88, which:0,r:-1”。如果存在该报错则是因为 Linux 环境中 ulimit 配置中的 max open files 参数过小或者配置未生效导致。重新配置 max open files 参数为 65536,然后重启数据库服务即可。可参考如下方法处理:

  (1)通过如下命令获取数据库服务进程 PID 值:

 
   

  (2)通过如下命令查看当前服务进程的 ulimit 资源限制情况:

 
   

  (3)通过命令 ulimit -a 查看当前操作系统配置的 ulimit 资源限制情况,如果配置不对可参考如下命令单独修改 ulimit 配置:

 
   

  (4)修改完后可通过如下命令查看当前进程 open files 数量:

 
   

  (5)确认无误后,重启数据库服务,让新的进程按照配置后的 ulimit 资源限制情况生效即可,重启后复核进程的资源限制情况。

  1. 检查 dm_svc.conf,是否配置了全局的 login_mode 参数,如果是,删除全局的 login_mode 参数,配置为局部参数。

【问题描述】

应用和数据分别部署在两台虚拟机上,但应用通过虚拟机配置的私网 IP 连接报网络通信异常,且实际用私网 IP 可以 ping 通。

【问题解决】

考虑将私网 IP 改为绑定的弹性 IP 进行连接。在虚拟环境下,可能网络需要进行多次测试。

【问题分析】

【问题解决】

考虑是否是客户端版本与连接的数据库服务端版本时间跨度太大,建议使用与 DM 服务端版本一致的客户端重新安装。查看数据库版本方法:

 
   

【问题解决】

在管理工具上方导航栏中,选择:窗口--> 视图--> 对象导航,即可重新开启对象导航栏。

打开对象导航

【问题描述】

利用 disql 打开 SQL 命令行工具,在输入 SQL 命令时,发现按“Backspace”无法正常删除,如下图所示:

执行 Backspace 出现 ^H

【问题解决】

  • 方法一:在 dmdba 用户的 .bash_profile 文件中添加 stty erase ^h,再执行 source .bash_profile 使修改生效。如下图:

执行 Backspace 出现 ^H

  • 方法二:按住 Ctrl + Backspace 进行删除。

【问题解决】

方法 1:通过达梦客户端 manager 工具进行设置,如下图所示:

管理工具执行步骤

方法 2:通过 sql 语句修改。相关语法参考以下 sql:

 
   

【问题描述】

有如下两种情况:

情况一:DBLINK 使用 ODBC 方式访问目的表时,中文显示为问号。如下图:

报错信息

isql 直接访问:

报错信息

情况二:DBLINK 使用 ODBC 方式创建,重启数据库之后,访问目的端表报错 "[-70037]:字符串不完整"。

报错信息

【问题原因】

出现以上两种情况的报错均与配置 NLS_LANG 环境变量有关,以下方法以情况一为例,但同样适用于解决情况二的报错。

可以看到上面,isql 直接访问 Oracle ,以及达梦通过 ODBC 数据源访问创建 DBLINK 访问 Oracle 时,中文会显示乱码,一般是与客户端字符集环境有关,可以通过设置 NLS_LANG 环境变量指定客户端字符集。如下:

  • 配置与 Oracle 数据库相同的 NLS 环境

报错信息

  • 配置 NLS_LANG 环境变量,添加到.bash_profile 中
 
   
  • 生效后,再次使用 isql 进行查询正常,但是 DBLINK 中还是乱码,
    这是由于 DM 数据库启动时未将 NLS_LANG 环境变量加载导致。
    如果在 DM 数据库启动时未加载到 NLS_LANG 环境变量,即使是 disql 窗口配置了 NLS_LANG 环境变量并生效也是无法正常显示中文的,所以在配置 NLS_LANG 环境变量生效后,需要在当前会话窗口重启 DM 数据库后才能正常显示中文。




  • 此时可能会出现两种异常情况:
    1.配置 NLS_LANG 生效后启动 DM 数据库,然后 disql 窗口未配置 NLS_LANG,isql 查询中文显示问号,disql 查询结果正常;
    2.DM 数据库启动会话窗口未配置 NLS_LANG,disql 窗口配置了 NLS_LANG 之后,isql 查询正常看,disql 查询中文显示问号。




  • 以上异常情况有两种解决办法:
    方法 1:使用 Oracle OCI 的方式创建 DBLINK。如果数据库启动时未加载 Oracle OCI 驱动,需要重启数据库加载 Oracle OCI 驱动。

OCI 方式进行连接

方法 2:配置好 NLS_LANG 环境变量并生效后,在当前窗口重启 DM 数据库服务。

【问题解决】

  • 检查 IPv6 是否启用
    默认 Centos 7 启用了 IPv6,Windows(win10 win11)也默认启用了 IPv6。简单查看系统是否启用 IPv6:

 
   
  • 测试机器之间 IPv6 地址是否能正常通信
    假如 Linux 数据库服务器为 A 机,Linux 客户端机器为 B 机,Windows 客户端机器为 C 机
    B 机 telnet A 机:telnet -6 A 机 ipv6 地址 %B 机使用的网络接口名称 端口号 (Linux-Linux,网络接口名称比如 ens32)
    C 机 telnet A 机:telnet A 机 ipv6 地址 %C 机对应地址的 scopeid 端口号 (Windows-Linux,scopeid 为 Windows IPv6 地址那里显示的"ipv6 地址 %scopeid"中的 scopeid)
    例如:Linux 数据库服务器的 IPv6 地址为 fe80::1a2d:8be9:91f6:6b51 , IPv4 地址为:192.168.15.71。客户端机器地址:为 fe80::89b7:a6c4:d5cc:d905,测试结果如下图表示测试结果正常:










客户端 IPV6 查询

Linux 间 telnet 测试

  • 使用 disql 进行连接测试
    1.Linux 客户机使用 disql 连接

 
   

2.Windows 客户机使用 disql 连接

 
   
  • 使用 DM 管理工具进行连接测试
    Linux 客户机和 Windows 客户机使用 DM 管理工具进行连接方法相同,如下图所示:

DM 管理工具连接

DM 管理工具连接

  • 使用 dm_svc.conf 中服务名方式连接测试
    dm_svc.conf 文件配置内容如下:

 
   
  • 简单的 JAVA 代码测试
    1.直接使用 IPv6 地址连接,操作数据库成功
    JAVA 测试连接




【问题描述】

disql 登录数据库出现:使用 127.0.0.1 或者 localhost 能在本服务器登录,不写则报创建 SOCKET 连接失败。如下图:

disql 连接数据库

【问题解决】

请检查 /etc/hosts 配置,配置 127.0.0.1 的主机名配置,如下所示:

主机名配置

【问题描述】

  • 环境描述
  • 问题重现

(1)在 Oracle 端创建用户、建表和插入数据语句如下:

 
   

(2)在 win 平台使用管理工具 SYSDBA 登录,创建 dblink,并通过 dblink 查询 Oracle 端数据,报“字符串截断”(没有放 Oracle 的 oci 可以直接创建 oracle 的 dblink,也可以直接替换掉附件中的 bin 目录升级到 70 版本)。

 
   

报错截图

【问题解决】

【问题描述】

LINUX/UOS 环境安装了达梦客户端工具,使用非 ROOT 用户启动 DM 管理工具时失败,提示"GLib-Gobject-Warming: 时间日期: invalid (NULL) pointer instance……"。

报错截图

【问题解决】

 
   

变量赋值后,重新启动 DM 管理工具即可。

方法三:永久解决所有用户在本地启动图形化工具的显示问题,可以通过在/etc/profile 文件最后一行添加赋值语句:

 
   

【问题描述】

Windows 环境下操作系统用户 dameng 基于 OS 的身份验证登录数据库。普通用户开启操作系统认证,用 root 登录数据库报错:未经授权的用户。详情如下:

1、在数据库中创建一个操作系统的同名用户,并修改 INI 参数。

 
   

2、重启数据库后,参数生效。

 
   

3、在操作系统中创建 dmusers 用户组,并将操作系统用户 dameng 添加到 dmusers 用户组。

 
   

4、操作系统用户 dameng 基于 OS 的身份验证登录数据库,报错:“未经授权的用户”。

 
   

image.png

【问题解决】

1、电脑切换到 dameng 用户下。

点击当前用户,切换到 dameng 用户。

image.png

2、打开 cmd 重新登录。

批注 2022-09-09 100350.png

【问题分析】

此类错误往往因为 dm_svc.conf 配置出错导致。

【问题解决】

  1. 检查是否配置了不存在的参数,或者其他参数配置有误;
  2. 检查集群相关参数是否配置成全局,如 LOGIN_MODE 参数。

dm_svc.conf 正确配置如下:

 
   

dm_svc.conf 部分参数说明:

参数 缺省值 描述 TIME_ZONE 操作系统当前时区 指明客户端的默认时区,设置范围为:-779~840M,如 60 对应 +1:00
时区。
LANGUAGE 操作系统语言 当前数据库服务器使用的语言,会影响帮助信息错误和提示信息。支
持的选项为:CN(表示中文)和 EN(表示英文)。可以不指定,若
不指定,系统会读取操作系统信息获得语言信息,建议有需要才指定。

LOGIN_MODE 4 指定优先登录的服务器模式。0:优先连接 PRIMARY 模式的库,
NORMAL 模式次之,最后选择 STANTBY 模式;1:只连接主库;
2:只连接备库;3:优先连接 STANDBY 模式的库,PRIMARY 模式
次之,最后选择 NORMAL 模式;4:优先连接 NORMAL 模式的库,
PRIMARY 模式次之,最后选择 STANDBY 模式。



RW_SEPARATE 0 是否启用读写分离。0:不启用;1:启用;2:启用,备库由客户端
进行选择,且只会选择服务名中配置的节点。
RW_PERCENT 25 读写分离分发比例,有效值范围 0~100。 SWITCH_TIMES 1 以服务名连接数据库时,若未找到符合条件的库成功建立连接,
将尝试遍历服务名中库列表的次数。有效值范围:
1~。

SWITCH_INTERVAL 200 在服务器之间切换的时间间隔,单位为毫秒,有效值范围:
1~。






















此外在全局服务中还可以配置服务名,用于数据库登录。例如:在全局服务配置中配置服务名为 DMRW 的服务

名词解释:

服务名:用于连接的服务名,参数值格式为:服务名=(IP[:PORT],IP[:PORT],......)。IP 为数据库所在的 IP 地址,如果是 IPV6 地址,为了区分端口,需要用[]封闭 IP 地址。PORT 为数据库使用的 TCP 连接端口,可选配置,不配置则使用默认的端口。

更多详细参数说明请参考数据库安装目录的 doc 下《DM8 系统管理员手册》。

【问题描述】

manage 客户端工具,前期打开了某个大文件导致卡死,任务管理器中结束后重新打开或者重启电脑打开后仍然无响应。

image.png

【问题解决】

删除 manage 工具元数据中缓存文件即可,如:C:bigprogramdmdbms oolworkspacedatamanager.metadata.plugins,删除该路径中所有文件后重新打开后即可恢复。对于 manage 客户端界面位置调整混乱后需要恢复默认界面的,该方式也适用。

【问题描述】

如何采用 GM 算法进行通信加密?

【问题解决】

可以采用基于应用层消息包的方式开启 GM 算法的通信加密,具体方法如下:

  1. 通过以下命令修改数据库参数。
 
   
  1. 重启数据库。
  2. 应用服务器创建自定义路径如:D:\dmdbms_94dm8__x86_win_64sourcessl。
  3. 拷贝数据库 bin/external_crypto_libs/openssl1.1.1_crypto.dll(Windows 操作系统)或 libopenssl_crypto.so (Linux 操作系统),bin/cyt_java.dll(Windows 操作系统)或 bin/libcyt_java.so(Linux 操作系统)至应用服务器自定义的路径 D:\dmdbms_94dm8__x86_win_64sourcessl 下。

image.png

  1. 调整 url 连接串,添加参数 cipherPath

image.png

cipherPath :第三方加密算法动态链接库位置。

  1. 应用配置 VM option,加载动态库。

image.png

至此基于应用层消息包的方式开启 GM 算法的通信加密配置完成。

【问题描述】

mpp 集群本地登录正常,但是全局登录失败报错:“[-6024]:Remote node global login failed.”

 
   

【问题解决】

需要检查 mpp 集群中每个节点的运行情况,若存在某一个节点服务异常无法访问的情况,mpp 集群将无法全局模式登录。

【问题描述】

disql 一直登录数据库正常,升级 ssh 服务后,执行 disql 报错:“Segmentation fault (core dumped)”。

【问题分析】

  1. disql 依赖分析,通过 ldd disql 查看是否有依赖包缺失,和正常机器的 ldd disql 进行对比,对比发现没有缺依赖。
  2. 通过 strace 命令追踪程序调用,并将结果输出到文件,分析文件里面存在报错。
 
   

从上面可以看到调用 /usr/lib64/libcrypto.so.1.1 报错权限拒绝。

【问题解决】

授予 /usr/lib64/libcrypto.so.1.1 755 权限。

 
   

授权后,disql 登录数据库正常。

【问题解决】

可通过设置环境变量来实现:

  1. 配置环境变量。
 
   
  1. 使环境变量生效。
 
   
  1. 验证别名。
 
   

image.png

【问题描述】

可通过在 dm_svc.conf 文件中增加 keywords 参数来标识。

【问题解决】

以使用关键字 select 作为对象名来举例:

修改 dm_svc.conf 文件,增加 keyword 参数。

 
   

创建表 select。

image.png

注意:

Keywords 后的列表,需要用英文括号包起来,并且多个值之间使用英文逗号分隔,否则配置无法生效,Keywords 正确配置如下:

 
   

Keywords 参数说明:标识用户关键字,所有在列表中的字符串,如果以单词的形式出现在 sql 语句中,则这个单词会被加上双引号。该参数主要用来解决用户需要使用 DM8 中的保留字作为对象名使用的状况。

到此这篇数据库端口访问不了怎么办(数据库端口访问不了怎么办呢)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • tidb数据库教程(tidb数据库原理)2025-09-01 11:00:10
  • 小米手机数据迁移到苹果手机(小米手机数据迁移到苹果手机上)2025-09-01 11:00:10
  • 大数据培训大数据(大数据培训大数据分析)2025-09-01 11:00:10
  • 数据库端口号可以改吗(数据库的端口号在哪可以看到)2025-09-01 11:00:10
  • springboot数据源加密(springboot数据库配置加密)2025-09-01 11:00:10
  • 自动驾驶数据安全算法(自动驾驶 数据安全)2025-09-01 11:00:10
  • sundb数据库 达梦(达梦数据库blob)2025-09-01 11:00:10
  • druid数据库连接池(druid数据库连接池原理)2025-09-01 11:00:10
  • spss23.0数据分析教程(spss24.0数据分析教程)2025-09-01 11:00:10
  • bs4解析网页(bs4数据解析)2025-09-01 11:00:10
  • 全屏图片