达梦数据库(DM8)实战教程:从入门到问题排查

2024-06-21 超腾开源 495 次阅读 0 次点赞
本文是一份面向开发者和运维人员的达梦数据库(DM8)实用指南。内容涵盖达梦数据库的核心介绍、官方资源导航(官网、文档、社区)、详细的使用教程(包括CentOS安装、Java连接示例)、客户端工具说明,以及最实用的可重复执行SQL命令(如表创建、字段添加)。重点整理了六个典型常见问题及其解决方案,如特定JDBC驱动版本选择、Hibernate方言配置、空间数据库支持限制、管理工具密码保存等,均来源于实际项目经验,对进行Oracle到达梦的国产化迁移项目具有直接参考价值。

达梦数据库是国内武汉达梦数据库股份有限公司开发的一款完全独立自主的国产数据库,其SQL语句语句几乎跟Oracle完全兼容,非常便于国内基于Oracle数据库的项目进行国产化改造,推进国内信创工作。本文介绍了达梦数据库相关的网站、本人在使用达梦数据库过程中遇到的问题、常用的创建表及给数据库添加字段的SQL语句以及使用达梦数据库过程中遇到的常见问题,以供适配达梦数据库相关人员参考。

常用网站

官网:https://www.dameng.com/

下载:https://eco.dameng.com/download/

数据库管理系统DM8:https://eco.dameng.com/info/products/dm8

在线服务平台:https://eco.dameng.com/

技术文档:https://eco.dameng.com/document/dm/zh-cn/start/index.html

应用开发指南:https://eco.dameng.com/document/dm/zh-cn/app-dev/

社区问答:https://eco.dameng.com/community/question/

达梦仓库:https://central.sonatype.com/search?q=com.dameng

注册服务:注册服务 ~| 达梦技术文档 (dameng.com)

启动、停止数据库:启动、停止数据库 ~| 达梦技术文档 (dameng.com)

使用教程

CentOS安装达梦数据库

Java连接达梦数据库示例

Windows卸载达梦客户端找不到文件javaw.exe的解决方案

达梦报加载第三方库~[libgeos_c.dll~]失败,库文件缺失或版本太旧问题及解决方法

GeoServer适配达梦数据库的方法

客户端

DM管理工具

常用命令

1、创建表。(可以重复执行)

DECLARE
  num NUMBER;
BEGIN
  SELECT COUNT(1) INTO num from user_tab_columns where table_name = upper('GIS_ASSETS_CONFIG');
  IF num = 0 THEN
    EXECUTE IMMEDIATE 'CREATE TABLE GIS_ASSETS_CONFIG
    (
      ID          NUMBER(20,0) NOT NULL PRIMARY KEY,
      TENANT_ID   VARCHAR2(12),
      DEPT_ID     NUMBER(20,0),
      DEPT_CODE   VARCHAR2(100),
      DEPT_NAME   VARCHAR2(45),
      MATERIAL    VARCHAR2(100),
      DIAMETER    VARCHAR2(100),
      PRICE       NUMBER(12,7),
      CREATE_USER NUMBER(20,0),
      UPDATE_USER NUMBER(20,0),
      CREATE_TIME DATE,
      UPDATE_TIME DATE,
      IS_DELETED  NUMBER DEFAULT 0
    )';
    EXECUTE IMMEDIATE 'COMMENT ON TABLE GIS_ASSETS_CONFIG IS ''资产报表配置''';
    EXECUTE IMMEDIATE 'COMMENT ON COLUMN GIS_ASSETS_CONFIG.ID IS ''主键''';
    EXECUTE IMMEDIATE 'COMMENT ON COLUMN GIS_ASSETS_CONFIG.TENANT_ID IS ''租户ID''';
    EXECUTE IMMEDIATE 'COMMENT ON COLUMN GIS_ASSETS_CONFIG.DEPT_ID IS ''机构ID''';
    EXECUTE IMMEDIATE 'COMMENT ON COLUMN GIS_ASSETS_CONFIG.DEPT_CODE IS ''机构编码''';
    EXECUTE IMMEDIATE 'COMMENT ON COLUMN GIS_ASSETS_CONFIG.DEPT_NAME IS ''机构名称''';
    EXECUTE IMMEDIATE 'COMMENT ON COLUMN GIS_ASSETS_CONFIG.MATERIAL IS ''材质''';
    EXECUTE IMMEDIATE 'COMMENT ON COLUMN GIS_ASSETS_CONFIG.DIAMETER IS ''管径''';
    EXECUTE IMMEDIATE 'COMMENT ON COLUMN GIS_ASSETS_CONFIG.PRICE IS ''价格''';
    EXECUTE IMMEDIATE 'COMMENT ON COLUMN GIS_ASSETS_CONFIG.CREATE_USER IS ''创建用户''';
    EXECUTE IMMEDIATE 'COMMENT ON COLUMN GIS_ASSETS_CONFIG.UPDATE_USER IS ''更新用户''';
    EXECUTE IMMEDIATE 'COMMENT ON COLUMN GIS_ASSETS_CONFIG.CREATE_TIME IS ''创建时间''';
    EXECUTE IMMEDIATE 'COMMENT ON COLUMN GIS_ASSETS_CONFIG.UPDATE_TIME IS ''更新时间''';
    EXECUTE IMMEDIATE 'COMMENT ON COLUMN GIS_ASSETS_CONFIG.IS_DELETED IS ''是否删除''';
  END IF;
END;

2、给数据表添加字段。(可以重复执行)

DECLARE
  num NUMBER;
BEGIN
  SELECT COUNT(1) INTO num from user_tab_columns where table_name = upper('GIS_LAYER_DATA') and column_name = upper('DISPLAY_FIELD');
  IF num = 0 THEN
    execute immediate 'ALTER TABLE IES_POMP_MASTER.GIS_LAYER_DATA ADD (DISPLAY_FIELD VARCHAR2(255))'; 
    execute immediate 'COMMENT ON COLUMN IES_POMP_MASTER.GIS_LAYER_DATA.DISPLAY_FIELD IS ''展示字段''';
  execute immediate 'UPDATE IES_POMP_MASTER.GIS_LAYER_DATA SET DISPLAY_FIELD = '''''; 
  END IF;
END;

常见问题

1、TEXT或CLOB类型字段存超长文本Java驱动获取数据报错:index out of range。

不同版本的Dm8JdbcDriver会报不同的错误,改驱动版本为8.1.2.141即可。

8.1.1.193:正常
8.1.2.79:index out of range
8.1.2.141:正常
8.1.2.192:网络通信异常,Cannot assign requested address: connect
8.1.3.62:无效的模式名[ies_pomp_master_v2]
<!-- https://mvnrepository.com/artifact/com.dameng/DmJdbcDriver18 -->
<dependency>
    <groupId>com.dameng</groupId>
    <artifactId>DmJdbcDriver18</artifactId>
    <version>8.1.2.141</version>
</dependency>

2、启动微服务报错:dm.jdbc.driver.DMException: 第1 行附近出现错误,无效的模式名[INFORMATION_SCHEMA]。

在项目中添加包:DmDialect-for-hibernate5.4,然后修改spring.jpa.database-platform为org.hibernate.dialect.DmDialect即可。

<!-- https://central.sonatype.com/artifact/com.dameng/DmDialect-for-hibernate5.4 -->
<dependency>
    <groupId>com.dameng</groupId>
    <artifactId>DmDialect-for-hibernate5.4</artifactId>
    <version>8.1.3.62</version>
</dependency>
spring:
  jpa:
    database-platform: org.hibernate.dialect.DmDialect

3、错误号: -2106,无效的表或视图名[V$HUGE_TABLESPACE_PATH]。

4、DM管理工具无法记住密码。

点击对象导航右侧工具栏上的注册连接,填写主机名、端口、用户名、口令,一定要勾选 保存口令 和 添加到连接组,点击确定即可。

5、在data文件夹中没有DAMENG文件夹。

使用以下命令创建达梦实例。

./dminit PATH=/dm/data/  PAGE_SIZE=32 EXTENT_SIZE=32 CASE_SENSITIVE=N CHARSET=0 LENGTH_IN_CHAR=Y DB_NAME=DAMENG LOG_SIZE=2048 INSTANCE_NAME=DMSERVER PORT_NUM=5236

6、 执行 SP_INIT_GEO_SYS(1) 报错:[HY000] 加载第三方库[libgeos_c.dll]失败,库文件缺失或版本太旧 (-2870)。

达梦标准版不支持空间数据库,需要购买企业版或安全版,参考:https://eco.dameng.com/document/dm/zh-cn/start/dm-version-differences.html

最后更新于1天前
本文由人工编写,AI优化,转载请注明原文地址: 达梦数据库使用指南:常用命令、安装教程与常见问题解决方案

评论 (4)

登录 后发表评论

赵日天赵日天2025-12-04 19:04:38

感谢作者整理这份实用的指南,尤其是常用命令和问题解决方案,对我们正在进行的Oracle迁移项目帮助很大。请问关于性能调优部分,后续会补充更多案例吗?

陈小咪陈小咪2025-11-27 19:02:35

感谢作者整理的实用指南!特别是常用命令和问题解决方案,对我们做Oracle迁移帮助很大。请问文档后续会更新更多性能优化相关的内容吗?

托尼陈托尼陈2025-11-16 14:49:38

非常实用的指南!整理的常用命令和问题解决方案,对我们做Oracle迁移项目帮助很大。感谢作者分享!

小草莓小草莓2025-11-09 18:07:28

感谢作者整理,最近正好在做Oracle到DM8的迁移,这份指南里的命令和问题解决方案帮了大忙!