欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

搬迁达梦8dexp和dimp逻辑的解决方案

最编程 2024-01-09 19:57:31
...

 使用 dexp 和dimp 进行的备份还原属于逻辑备份还原。

逻辑备份还原是对数据库逻辑组件(如表、视图和存储过程等数据库对象)的备份还原。

逻辑导出(dexp)和逻辑导入(dimp)是 DM 数据库的两个命令行工具。逻辑备份和逻辑还原都是在联机方式下完成。

逻辑导出和逻辑导入数据库对象分为四种级别:数据库级、用户级、模式级和表级。

四种级别所提供的功能:

  数据库级(FULL):导出或导入整个数据库中的所有对象。

  用户级(OWNER):导出或导入一个或多个用户所拥有的所有对象。

  模式级(SCHEMAS):导出或导入一个或多个模式下的所有对象。

  表级(TABLES):导出或导入一个或多个指定的表或表分区。

一、数据准备

准备两套数据库,端口分别是5237和5239。

我是在windows上测试的,linux上和windows上方法一样。

我数据库管理系统安装在E盘,先进入到E:\dmdbms\bin,打开cmd

 

 

 

二、FULL 方式导入/导出整个数据库

用户(账号、密码)、角色、表、数据、索引、视图、约束等都能导入进来,但是表空间不能导入进来,所以正常是应该先在目的库创建表空间,在导出的时候加TABLESPACE=Y,默认是N,只有设置导出的对象定义中包含表空间,导入进去的时候,表、视图等才会存储在对应的表空间下。

1、 导出

5237库整库导出。

dexp  USERID=SYSDBA/SYSDBA:5237  FILE=full_dexp.dmp  LOG=full_dexp.log FULL=Y DIRECTORY=E:\dmdbms\test TABLESPACE=Y

导出效果如下

 

2、 导入

导入到5239。

在目的库创建表空间:

create tablespace "GRC" datafile 'E:\dmdbms\data\DAMENG4\GRC' size 32 autoextend on maxsize 16777215 CACHE = NORMAL;

dimp USERID=SYSDBA/SYSDBA:5239 FILE=E:\dmdbms\test\full_dexp.dmp LOG=full_dimp.log FULL=Y DIRECTORY=E:\dmdbms\test

注意:一定要提前创建表空间。

2021年九月的数据库版本支持case_sensitive不同的库之间的FULL迁移,但是我现在没有这么高版本的安装包,所以暂时先不测这种情况。

三、OWNER 方式导入/导出一个或多个用户拥有的所有对象

1、同名模式同表空间

必须先创建好表空间和用户,创建好用户后会自动创建和用户同名的模式。

1.1、导出

导出5237库的GRC用户的所有对象。

dexp  USERID=GRC/888888888:5237  FILE=user_dexp.dmp  LOG=user_dexp.log  OWNER=GRC DIRECTORY=E:\dmdbms\test TABLESPACE=Y

2.2、导入

导入到5239,先清空5239之前的测试数据。

在目的库创建表空间:

create tablespace "GRC" datafile 'E:\dmdbms\data\DAMENG4\GRC' size 32 autoextend on maxsize 16777215 CACHE = NORMAL;

在目的库创建用户:

create user "GRC" identified by "******" default tablespace "GRC";

grant "PUBLIC","VTI","SOI" to "GRC";

grant CREATE SESSION to "GRC";

dimp  USERID=SYSDBA/SYSDBA:5239  FILE=E:\dmdbms\test\user_dexp.dmp  LOG=user_dimp.log OWNER=GRC DIRECTORY=E:\dmdbms\test

注意:如果是在管理工具中导入,需要在【模式】上右键导入,并加模式映射。

2、不同模式

1.1导出

导出5237库的GRC用户的所有对象。

dexp  USERID=GRC/888888888:5237  FILE=user_dexp.dmp  LOG=user_dexp.log  OWNER=GRC DIRECTORY=E:\dmdbms\test

1.2导入

dimp  USERID=SYSDBA/SYSDBA:5239  FILE=E:\dmdbms\test\user_dexp.dmp  LOG=user_dimp.log OWNER=GRC DIRECTORY=E:\dmdbms\test REMAP_SCHEMA="GRC":"DMHR"

注意:DMHR模式一定要存在。

导入到不同模式,发现导入的部分视图好像会有问题,这种操作慎用。

四、SCHEMAS 方式的导入/导出一个或多个模式下的所有对象

1、同名模式同表空间

1.1导出

导出5237库GRC模式下的所有对象。

dexp USERID=GRC/888888888:5237  FILE=schemas_dexp.dmp  LOG=schemas_dexp.log SCHEMAS=GRC DIRECTORY=E:\dmdbms\test TABLESPACE=Y

2.2、导入

导入到5239,先清空5239之前的测试数据。

在目的库创建表空间:

create tablespace "GRC" datafile 'E:\dmdbms\data\DAMENG4\GRC' size 32 autoextend on maxsize 16777215 CACHE = NORMAL;

在目的库创建用户:

create user "GRC" identified by "******" default tablespace "GRC";

grant "PUBLIC","VTI","SOI" to "GRC";

grant CREATE SESSION to "GRC";

dimp  USERID=SYSDBA/SYSDBA:5239  FILE=E:\dmdbms\test\schemas_dexp.dmp  LOG=schemas_dimp.log SCHEMAS=GRC DIRECTORY=E:\dmdbms\test

注意:如果是在管理工具中导入,需要在【模式】上右键导入,并加模式映射。

 

2、不同模式

1.1导出

导出5237库GRC模式下的所有对象。

dexp USERID=GRC/888888888:5237  FILE=schemas_dexp.dmp  LOG=schemas_dexp.log SCHEMAS=GRC DIRECTORY=E:\dmdbms\test TABLESPACE=Y

1.2导入

导入到5239库的DMHR模式下

dimp  USERID=SYSDBA/SYSDBA:5239  FILE=E:\dmdbms\test\schemas_dexp.dmp  LOG=schemas_dimp.log SCHEMAS=GRC DIRECTORY=E:\dmdbms\test REMAP_SCHEMA="GRC":"DMHR"

注意:DMHR模式一定要存在。

五、TABLES 方式导入一个或多个指定的表或表分区

导入所有数据行、约束、索引等信息。

1、同名模式同表空间

1.1导出

dexp userid=GRC/888888888:5237 directory=E:\dmdbms\test file=table_dexp.dmp log=table_dexp.log tables=DM_TEST TABLESPACE=Y

1.2、导入

在目的库创建表空间:

create tablespace "GRC" datafile 'E:\dmdbms\data\DAMENG4\GRC' size 32 autoextend on maxsize 16777215 CACHE = NORMAL;

在目的库创建用户:

create user "GRC" identified by "******" default tablespace "GRC";

grant "PUBLIC","VTI","SOI" to "GRC";

grant CREATE SESSION to "GRC";

dimp USERID=SYSDBA/SYSDBA:5239  FILE=E:\dmdbms\test\table_dexp.dmp LOG=table_dimp.log DIRECTORY=E:\dmdbms\test

注意:不能加tables=DM_TEST,不然会报错,因为导出用户和导入用户不是同一个。

2、不同模式

1.1导出

dexp userid=GRC/888888888:5237 directory=E:\dmdbms\test file=table_dexp.dmp log=table_dexp.log tables=DM_TEST

1.2、导入

dimp USERID=SYSDBA/SYSDBA:5239  FILE=E:\dmdbms\test\table_dexp.dmp LOG=table_dimp.log DIRECTORY=E:\dmdbms\test REMAP_SCHEMA="GRC":"DMHR"

注意:不能加tables=DM_TEST,不然会报错,因为导出用户和导入用户不是同一个。

 

 

 

更多资讯请上达梦技术社区了解: https://eco.dameng.com