达梦DM8之逻辑备份恢复(dexp/dimp)跨模式、跨多个表空间的数据迁移

1.概述

        本文主要测试如何使用逻辑备份恢复(dexp/dimp)实现跨模式、跨多个表空间的数据迁移。

1.1 测试版本

达梦数据库的版本是:2023年4月之后的版本。

1.2 测试内容

  1. 跨模式、跨多个表空间数据迁移(多个数据表空间,多个索引表空间)。

2.测试过程

 2.1 测试数据准备

1)创建测试用户TESTA、TESTB 

2)创建4个数据表空间/索引表空间
CREATE TABLESPACE "TBS_TESTC" DATAFILE 'TBS_TESTC1.DBF' SIZE 128 AUTOEXTEND ON NEXT 128;
CREATE TABLESPACE "TBS_TESTD" DATAFILE 'TBS_TESTD1.DBF' SIZE 128 AUTOEXTEND ON NEXT 128;
CREATE TABLESPACE "TBS_TESTE" DATAFILE 'TBS_TESTE1.DBF' SIZE 128 AUTOEXTEND ON NEXT 128;
CREATE TABLESPACE "TBS_TESTF" DATAFILE 'TBS_TESTF1.DBF' SIZE 128 AUTOEXTEND ON NEXT 128;

CREATE TABLESPACE "IDX_TESTC" DATAFILE 'IDX_TESTC1.DBF' SIZE 128 AUTOEXTEND ON NEXT 128;
CREATE TABLESPACE "IDX_TESTD" DATAFILE 'IDX_TESTD1.DBF' SIZE 128 AUTOEXTEND ON NEXT 128;
CREATE TABLESPACE "IDX_TESTE" DATAFILE 'IDX_TESTE1.DBF' SIZE 128 AUTOEXTEND ON NEXT 128;
CREATE TABLESPACE "IDX_TESTF" DATAFILE 'IDX_TESTF1.DBF' SIZE 128 AUTOEXTEND ON NEXT 128;
2) 创建测试数据
--创建测试表
CREATE TABLE TESTA.A2(ID INT) tablespace TBS_TESTC;
CREATE TABLE TESTA.A3(ID INT) tablespace TBS_TESTD;
CREATE TABLE TESTA.A4(ID INT) tablespace TBS_TESTA;
--创建测试索引
CREATE INDEX TESTA.IDX_A2 ON TESTA.A2(ID) tablespace IDX_TESTC;
CREATE INDEX TESTA.IDX_A3 ON TESTA.A3(ID) tablespace IDX_TESTD;
CREATE INDEX TESTA.IDX_A4 ON TESTA.A4(ID) tablespace IDX_TESTA;

3)导入数据
begin
  for i in 1..100 loop
    insert into TESTA.A2 values(DBMS_RANDOM.VALUE(1,100));
    insert into TESTA.A3 values(DBMS_RANDOM.VALUE(1,100));
    insert into TESTA.A4 values(DBMS_RANDOM.VALUE(1,100));    
  end loop;
  Commit;
end;
/
4)检查测试数据
--检查表信息
SELECT OWNER AS 模式, 
       TABLE_NAME AS 表名, 
       NUM_ROWS AS 行数, 
       TABLESPACE_NAME AS 所属表空间 
  FROM ALL_TABLES 
 WHERE OWNER IN ('TESTA', 'TESTB');
 
--检查索引信息
SELECT OWNER AS 模式, 
       INDEX_NAME AS 索引名, 
       TABLESPACE_NAME AS 所属表空间 
  FROM DBA_INDEXES 
 WHERE OWNER IN ('TESTA', 'TESTB') and INDEX_NAME like 'IDX_%';

 2.2 迁移测试

1)导出dmp文件

2)导入dmp文件

D:\app\dmdbms\bin\dimp.exe SYSDBA/SYSDBA@LOCALHOST:15236 DIRECTORY=D:\app\dmdbms\data\DAMENG\bak FILE=exp_TESTA.dmp IGNORE=N COMPILE=Y INDEXFIRST=N TABLE_FIRST=N COMMIT_ROWS=5000 FAST_LOAD=N REMAP_SCHEMA="TESTA":"TESTB" REMAP_TABLESPACE=TBS_TESTA:TBS_TESTB,TBS_TESTC:TBS_TESTE,TBS_TESTD:TBS_TESTF,IDX_TESTA:IDX_TESTB,IDX_TESTC:IDX_TESTE,IDX_TESTD:IDX_TESTF  LOG=imp_TESTB_2023_11_03_10_29_33.log LOG_WRITE=N

3)查看表空间 
--检查表信息
SELECT OWNER AS 模式, 
       TABLE_NAME AS 表名, 
       NUM_ROWS AS 行数, 
       TABLESPACE_NAME AS 所属表空间 
  FROM ALL_TABLES 
 WHERE OWNER IN ('TESTA', 'TESTB');
 
--检查索引信息
SELECT OWNER AS 模式, 
       INDEX_NAME AS 索引名, 
       TABLESPACE_NAME AS 所属表空间 
  FROM DBA_INDEXES 
 WHERE OWNER IN ('TESTA', 'TESTB') and INDEX_NAME like 'IDX_%';

 2.3 迁移总结

  1. 当用户/模式下包含多个数据表空间/索引表空间时,dexp导出时:参数TABLESPACE=Y(手动设置/图形化勾选:定义包含表空间),dimp导入时需要指定:REMAP_SCHEMA参数设置模式映射,REMAP_TABLESPACE参数设置表空间映射(支持多表空间映射,比如REMAP_TABLESPACE=TBS_TESTA:TBS_TESTB,TBS_TESTC:TBS_TESTE…),即可实现:跨用户/跨模式 对应 跨多个表空间的数据导入;
  2. 当用户/模式包含多个数据表空间/索引表空间时,dexp导出时:参数TABLESPACE=N(默认设置),dimp导入时只需要指定REMAP_SCHEMA参数设置模式映射,即可实现:跨用户/跨模式的对应默认表空间的数据导入(其他数据表空间/索引表空间也会导入至默认的数据表空间/索引表空间中);  注:就算指定了REMAP_TABLESPACE参数设置多个表空间映射,也不生效。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值