普元数据资产管理平台 普元数据资产管理平台
产品简介
快速开始
安装指南
数据资产及目录
数据标准
数据模型
元数据管理
数据服务
数据安全
常见问题解答
开发指南
运维指南
更新日志
  • 数据资产部署至达梦数据库环境相关问题排查指南
  • 排查指南详细说明
  • 场景一:平台安装/启动问题
  • 场景二:数据源连接/配置问题
  • 场景三:功能模块使用异常
  • 场景四:SQL执行/语法错误
  • 场景五:大小写敏感相关问题
  • 场景六:数据迁移/初始化问题

# 数据资产部署至达梦数据库环境相关问题排查指南

# 排查指南详细说明

通用前置检查:

  • 确认版本:首先明确是 7.3 GA 还是 7.3.1 版本,不同版本的补丁不通用。
  • 确认达梦版本:确认达梦数据库版本(DM7/DM8),不同版本可能有不同的驱动要求。
  • 查阅补丁列表:在寻求复杂解决方案前,强烈建议先检索是否有官方发布的补丁。您可以通过以下链接访问官方补丁列表:
    • DAMP 7.3.1 补丁列表: DAMP7.3.1补丁列表 (opens new window)
    • DAMP 7.3 GA 补丁列表: DAMP7.3GA补丁列表 (opens new window)

# 场景一:平台安装/启动问题

  • 问题现象:

    1. 执行达梦脚本dam-all.sql时在disql执行失败。
    2. 平台启动时报表不存在。
    3. 启动时报权限错误。
  • 排查步骤:

    1. 第一步:检查脚本执行。

      • 操作:确认数据库脚本是否正确执行。
      • 排查项:
        • dam-all.sql执行时是否有语法错误。
        • dam-bps.sql是否需要单独处理。
        • disql执行脚本时是否需要输入参数。
      • 解决方案:
        • 脚本有问题时,联系技术支持获取修改后的dam-all.sql。
        • dam-bps不执行,参考文档通过导入par包方式导入流程。
        • 使用disql执行时,确保使用正确的用户登录。
    2. 第二步:检查表空间和用户。

      • 操作:确认数据库表空间和用户创建正确。

      • 排查项:

        • 表空间是否已创建且有足够空间。
        • 数据库用户是否有DBA权限或足够权限。
        • 用户默认表空间是否正确。
      • 解决方案:

        -- 创建表空间
        CREATE TABLESPACE DAMP DATAFILE 'DAMP.DBF' SIZE 1024M;
        
        -- 创建用户并指定表空间
        CREATE USER DAMP IDENTIFIED BY password DEFAULT TABLESPACE DAMP;
        
        -- 授予权限
        GRANT DBA TO DAMP;
        GRANT RESOURCE TO DAMP;
        GRANT CONNECT TO DAMP;
        
    3. 第三步:检查字符集。

      • 操作:确认数据库字符集为UTF-8。

      • 排查项:达梦数据库字符集要求一般为UTF-8。

      • 解决方案:

        -- 查询字符集
        SELECT * FROM V$NLS_PARAMETERS;
        
        -- 创建数据库时指定字符集
        -- 安装达梦时选择UTF-8字符集
        

# 场景二:数据源连接/配置问题

  • 问题现象:

    1. 在DAMP中添加达梦数据源时连接测试失败。
    2. 保存数据源后无法正常使用。
    3. 数据源连接报错“No suitable driver”。
  • 排查步骤:

    1. 第一步:排除产品BUG。

      • 操作:在官方补丁列表中,搜索关键词达梦、数据源。
      • 相关补丁:
        • DAMP 7.3.1: DAMP_7.3.1_SERVER_20250516_P1 (解决密码超长问题)
        • DAMP 7.3.1: DAMP_7.3.1_SERVER_20250610_P1 (解决海量数据库适配)
      • 解决方案:若找到描述匹配的补丁,则申请并应用。
    2. 第二步:检查JDBC驱动。

      • 操作:确认使用了正确的达梦JDBC驱动。
      • 排查项:
        • DAMP 7.3内置了达梦8驱动(DmJdbcDriver18.jar)。
        • 如果连接DM7,可能需要替换驱动。
        • 驱动文件是否完整,是否存在多个版本冲突。
      • 解决方案:
        • 从达梦安装目录的drivers目录下获取匹配的驱动。
        • 将驱动放入DAMP服务的lib目录,移除旧版本。
        • 重启服务后测试。
    3. 第三步:检查JDBC URL格式。

      • 操作:核对JDBC URL是否正确。

      • 正确格式:

        jdbc:dm://IP:端口/数据库名?参数1=值1&参数2=值2
        
      • 常用参数:

        • columnNameUpperCase=false:解决大小写敏感问题
        • schema=用户名:指定默认Schema
        • characterEncoding=UTF-8:指定字符编码
        • loginTimeout=30:登录超时时间
    4. 第四步:测试网络连通性。

      • 操作:测试DAMP服务器到数据库服务器的网络。
      • 命令:telnet 数据库IP 5236
      • 解决方案:确保防火墙开放5236端口。

# 场景三:功能模块使用异常

  • 问题现象:

    1. 资产编目:提交失败,找不到表。
    2. 标准管理:标准导入报错,代码map取值失败。
    3. 模型开发:点击数据源展开无子项,无法逆向生成模型。
    4. 数据服务:服务测试报错,TEXT字段问题。
    5. 系统管理:导出excel内容为空。
  • 排查步骤:

    子场景3.1:资产编目问题

    • 现象:基于元数据编目无法提交。
    • 排查:大小写敏感导致表名不匹配。
    • 解决方案:
      • JDBC URL添加columnNameUpperCase=false
      • 统一使用大写表名

    子场景3.2:标准管理问题

    • 现象:标准导入报错,代码标准导入失败。
    • 排查:达梦大小写敏感导致。
    • 解决方案:
      • 申请补丁 DAMP_7.3.1_SERVER_20240731_P2
      • JDBC URL添加columnNameUpperCase=false

    子场景3.3:模型开发问题

    • 现象:点击项目数据源展开无子项。

    • 排查:dm_db_vendor表中配置错误。

    • 解决方案:

      -- 修改数据库供应商配置
      UPDATE dm_db_vendor SET name = 'dm' WHERE name = 'dameng8';
      UPDATE dm_db_type SET name = 'dm' WHERE name = 'dameng';
      
      -- 修改后重启服务
      

    子场景3.4:数据服务问题

    • 现象:TEXT字段测试报错。
    • 解决方案:
      • 申请补丁 DAMP_7.3.1_DATAENGINE_20250730_P1
      • 临时方案:SQL中CAST为VARCHAR

    子场景3.5:系统管理问题

    • 现象:导出的excel内容是空的。
    • 排查:达梦驱动问题。
    • 解决方案:
      • 更换达梦数据库驱动
      • JDBC URL添加必要参数

# 场景四:SQL执行/语法错误

  • 问题现象:

    1. 执行SQL报“表或视图不存在”。
    2. 报“字段不在查询表中”。
    3. 报语法错误,如“near 'xxx'”。
    4. 分页查询报错或不生效。
  • 排查步骤:

    1. 第一步:在disql中验证SQL。

      • 操作:将SQL复制到disql中执行。
      • 目的:确认是SQL本身问题还是DAMP处理问题。
    2. 第二步:检查分页语法。

      • 解决方案:

        -- 达梦分页语法
        
        -- 方式1:LIMIT OFFSET(推荐)
        SELECT * FROM table LIMIT 10 OFFSET 20;
        
        -- 方式2:ROWNUM
        SELECT * FROM (
          SELECT t.*, ROWNUM rn FROM (
            SELECT * FROM table ORDER BY id
          ) t WHERE ROWNUM <= 30
        ) WHERE rn > 20;
        
    3. 第三步:检查日期函数。

      • 解决方案:

        -- MySQL风格 vs 达梦风格
        -- CURDATE() -> CURRENT_DATE
        SELECT CURRENT_DATE FROM DUAL;
        
        -- NOW() -> SYSDATE
        SELECT SYSDATE FROM DUAL;
        
        -- DATE_FORMAT() -> TO_CHAR()
        SELECT TO_CHAR(SYSDATE, 'YYYY-MM-DD') FROM DUAL;
        
    4. 第四步:检查字符串函数。

      • 解决方案:

        -- CONCAT支持
        SELECT CONCAT('A', 'B') FROM DUAL;
        
        -- 正则表达式使用REGEXP_LIKE
        SELECT * FROM table WHERE REGEXP_LIKE(column, '^[0-9]+$');
        

# 场景五:大小写敏感相关问题

  • 问题现象:

    1. DAMP各功能模块频繁报“表或视图不存在”。
    2. 明明表存在,但查询不到。
    3. 导入数据时匹配失败。
  • 排查步骤:

    1. 第一步:确认达梦大小写敏感配置。

      • 操作:查询达梦数据库配置。
      SELECT * FROM V$DM_INI WHERE PARA_NAME = 'CASE_SENSITIVE';
      -- 1: 大小写敏感
      -- 0: 大小写不敏感
      
    2. 第二步:针对大小写敏感模式的解决方案。

      方案A:修改JDBC URL(推荐)

      • 在所有达梦数据源的JDBC URL中添加参数:

        jdbc:dm://127.0.0.1:5236/数据库名?columnNameUpperCase=false
        
      • 影响范围:所有通过该数据源的查询。

      方案B:SQL中使用双引号

      • 在SQL中用小写表名/字段名时,必须加双引号:

        SELECT "columnName" FROM "tableName" WHERE "columnName" = 'value';
        

      方案C:统一使用大写

      • 创建表时统一使用大写表名和字段名。
      • 所有SQL中使用大写。
    3. 第三步:针对大小写不敏感模式的说明。

      • 无需特殊处理。
      • 但建议统一使用大写或小写,保持一致性。

# 场景六:数据迁移/初始化问题

  • 问题现象:

    1. 从其他数据库迁移到达梦后功能异常。
    2. 重新初始化数据库后平台启动失败。
    3. 数据导入导出乱码。
  • 排查步骤:

    1. 第一步:检查字符集。

      • 操作:确认数据库字符集为UTF-8。
      • 排查项:字符集不一致可能导致乱码和排序问题。
      • 解决方案:
        • 创建数据库时选择UTF-8字符集。
        • 已创建的数据库无法修改字符集,需重建。
    2. 第二步:检查表空间。

      • 操作:确认表空间创建正确且有足够空间。

      • 解决方案:

        -- 查看表空间使用情况
        SELECT 
            tablespace_name,
            total_space/1024/1024 total_mb,
            free_space/1024/1024 free_mb
        FROM (
            SELECT 
                tablespace_name,
                SUM(bytes) total_space,
                SUM(DECODE(autoextensible, 'YES', maxbytes, bytes)) max_space,
                SUM(bytes - blocks*8192) free_space
            FROM dba_data_files
            GROUP BY tablespace_name
        );
        
        -- 扩展表空间
        ALTER TABLESPACE DAMP ADD DATAFILE 'DAMP02.DBF' SIZE 1024M;
        
    3. 第三步:检查用户权限。

      • 操作:确认DAMP数据库用户有足够权限。

      • 解决方案:

        -- 授予必要权限
        GRANT CONNECT, RESOURCE TO DAMP_USER;
        GRANT CREATE TABLE TO DAMP_USER;
        GRANT CREATE VIEW TO DAMP_USER;
        GRANT CREATE PROCEDURE TO DAMP_USER;
        GRANT CREATE SEQUENCE TO DAMP_USER;
        GRANT CREATE TRIGGER TO DAMP_USER;
        
    4. 第四步:数据迁移注意事项。

      • 从Oracle迁移:
        • 注意rownum、sysdate等函数的差异。
        • 注意VARCHAR2与VARCHAR的差异。
      • 从MySQL迁移:
        • 注意LIMIT语法的兼容性。
        • 注意AUTO_INCREMENT与IDENTITY的差异。
      • 从SQL Server迁移:
        • 注意TOP语法的兼容性。
        • 注意GETDATE()与SYSDATE的差异。
上次更新: 2026/3/12下午1:52:20

← 数据资产编目问题 元数据采集与同步问题 →