DM数据库导入/导出

一 物理备份与恢复(推荐离线/冷迁移)

物理备份直接复制表空间的物理文件(数据文件、控制文件等),适用于离线环境(如停机维护时)或需要快速恢复的场景。达梦提供 DMRMAN 工具(数据库恢复管理器)完成此操作。

1. 物理备份表空间

前提条件
表空间需处于脱机(OFFLINE)态(避免备份过程中数据不一致)。
确保有足够的存储空间存放备份文件。
操作步骤

  • 将表空间脱机
    登录达梦数据库(通过 disql 或管理工具),执行以下命令使表空间离线:
      ALTER TABLESPACE 表空间名 OFFLINE;
    若提示“无法脱机”,需先终止该表空间中所有活跃的事务。
  • 使用 DMRAN 备份表空间
    启动 DMRMAN 工具(需以数据库管理员 SYSDBA 身份执行),连接目标数据库的控制文件(或实例):
      dmrman CTLIB=/路径/数据库控制文件目录  # 或直接指定控制文件路径
    执行备份命令(备份单个表空间):
      BACKUP TABLESPACE 表空间名 TO '/备份路径/表空间备份名' FULL;  -- FULL 表示全量备份
    TO 指定备份文件存储路径及名称(可自定义)。
    若需增量备份,可添加 INCREMENTAL LEVEL=1(需基于之前的全量备份)。
2. 物理恢复表空间

适用于表空间损坏、误删除或需要迁移到新环境的场景。

前提条件
目标库需与原库版本兼容(或通过补丁升级到一致版本)。
目标库需有足够的存储空间放置恢复后的表空间文件。
操作步骤

  • 将表空间设为脱机(可选)
    若目标库中已存在同名表空间,需先删除或重命名;若不存在,可直接恢复。
    (若目标库表空间已存在且需覆盖,建议先脱机:ALTER TABLESPACE 表空间名 OFFLINE;)
  • 使用 DMRAN 恢复表空间
    启动 DMRMAN 并连接目标库控制文件,执行恢复命令:
      RESTORE TABLESPACE 表空间名 FROM '/备份路径/表空间备份名';  -- 从备份文件恢复
  • 恢复后验证并联机
    恢复完成后,检查表空间文件是否完整,然后联机:
      ALTER TABLESPACE 表空间名 ONLINE;

二、逻辑迁移(推荐在线/跨平台迁移)

逻辑迁移通过导出表空间的元数据和数据为逻辑格式(如 SQL 脚本或二进制文件),再导入目标库。适用于跨版本、跨平台或需要部分数据迁移的场景。达梦提供 dexp(导出)和 dimp(导入)工具。

1. 导出表空间数据(dexp)

dexp 支持按用户、表空间或表导出数据,若需导出特定表空间,需结合表空间与用户的关联关系(表空间中的对象属于某个用户)。

操作步骤

  • 确定表空间对应的用户
    表空间中的对象(如表、索引)由特定用户(模式)拥有,需先查询表空间关联的用户:
      SELECT OWNER FROM DBA_TABLESPACES WHERE TABLESPACE_NAME = '表空间名';  -- 实际需替换为具体表空间名
    或通过 DBA_SEGMENTS 查看表空间内的对象所属用户:
      SELECT OWNER, SEGMENT_NAME, SEGMENT_TYPE 
      FROM DBA_SEGMENTS 
      WHERE TABLESPACE_NAME = '表空间名';
  • 使用 dexp 导出表空间数据
    执行 dexp 命令时,通过 USERID 指定连接信息,SCHEMAS 指定用户(即表空间关联的对象所有者),TABLESPACES 指定表空间(可选):
      dexp USERID=sysdba/SYSDBA@localhost:5236 FILE=/路径/导出文件.dmp LOG=/路径/导出日志.log SCHEMAS=用户1,用户2 TABLESPACES=表空间名
    USERID:数据库连接信息(用户名/密码@实例:端口)。
    FILE:导出文件路径(.dmp 格式)。
    LOG:导出日志路径(记录详细过程)。
    SCHEMAS:需导出的用户(需与表空间关联的对象所有者一致)。
    TABLESPACES:指定仅导出该表空间内的对象(可选,但建议明确指定以避免冗余)。
2. 导入表空间数据(dimp)

将 dexp 导出的 .dmp 文件导入目标库,需注意目标库的表空间是否存在,或是否需要新建。

操作步骤

  • 准备目标库环境
    若目标库无同名表空间,需提前创建(大小、路径可调整):
      CREATE TABLESPACE 目标表空间名 DATAFILE '/目标路径/数据文件.dbf' SIZE 100M AUTOEXTEND ON;
    若目标库已有同名表空间,需确保空间足够(可通过 ALTER TABLESPACE 表空间名 ADD DATAFILE 扩展)。
  • 使用 dimp 导入数据
    执行 dimp 命令时,通过 USERID 连接目标库,SCHEMAS 指定用户(与导出时一致),TABLESPACES 指定目标表空间(可选):
      dimp USERID=sysdba/SYSDBA@目标库:5236 FILE=/路径/导出文件.dmp LOG=/路径/导入日志.log SCHEMAS=用户1,用户2 TABLESPACES=目标表空间名
    TABLESPACES:若目标表空间与原库名称不同,需指定映射(如 原表空间名:目标表空间名)。
三、注意事项

物理备份限制
物理备份依赖数据库版本和平台一致性(跨平台需注意字节序,达梦支持通过 DMRMAN CONVERT 转换字节序)。
备份期间表空间需脱机,可能影响业务(适合离线迁移)。
逻辑迁移限制
dexp/dimp 导出的是逻辑元数据,不包含物理存储细节(如数据文件路径),适合跨平台迁移。
大对象(LOB)、触发器、存储过程等需确保目标库兼容(版本差异可能导致对象无法导入)。
权限要求
物理备份需 SYSDBA 或具有 BACKUP_ADMIN 权限的用户。
逻辑导出/导入需 EXP_FULL_DATABASE 或 IMP_FULL_DATABASE 角色(或对应用户权限)。
通过以上方法,可根据业务需求选择物理备份恢复(快速、离线)或逻辑迁移(灵活、跨平台)完成表空间的导入导出。

文档更新时间: 2025-06-13 15:02   作者:方杰