数据迁移 | dexp & dimp工具

本文参考:
https://eco.dameng.com/docs/zh-cn/pm/dexp-dimp-function-introduction.html

概要

若某种表被误删了,如何还原这张表?能够实现数据库对象级别的备份和还原吗?(物理备份恢复是文件级别的恢复)

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

逻辑备份还原的工具?

  • 逻辑导出(dexp)和逻辑导入(dimp)是 DM 数据库的两个命令行工具,分别用来实现对 DM 数据库的逻辑备份和逻辑还原

逻辑导出导入对象的四大级别

  • 数据库级(FULL)
    导出 / 导入整个数据库中的所有对象
  • 用户级(OWNER)
    导出 / 导入一个(或多个用户)所拥有的全部对象
  • 模式级(SCHEMAS)
    导出 / 导入一个(或多个模式)下的所有对象
  • 表级(TABLES)
    导出 / 导入一个(或多个)指定表 / 表分区

本文命令运行环境介绍:

  • 源库与目标库都安装在同一台计算机上
  • 源库: 实例名为dmserver,端口为5236
  • 目标库: 实例名为dmserver2,端口为5237

数据库级

导出 / 导入整个数据库中的所有对象

FULL=Y

全库导出

dexp SYSDBA/SYSDBA\@localhost:5236 file=full01.dmp log=exp_full01.log directory=/dmpdir full=y

全库导入

dimp SYSDBA/SYSDBA\@localhost:5237 file=full01.dmp log=imp_full01.log directory=/dmpdir full=y

用户级

导出 / 导入一个(或多个)用户中的所有schemas

OWNER=<用户名>{,<用户名>}

注意:(仅在DM8中测试过)
此处仅导出schemas中的所有对象,并不导出用户
也就是说,导入时,目标端需要创建好用户,dimp会将导出文件中的所有schemas都导入到此用户中

导出单个用户

导出test1用户下的所有schemas

dexp SYSDBA/SYSDBA\@localhost:5236 file=owner01.dmp log=exp_owner01.log directory=/dmpdir owner=test1

导入单个用户

将源端test1用户的所有schemas导入目标端的test1用户中(前提是目标端有test1用户,因为导出文件只导出了schems,并没有导出源端的用户和权限)

SQL> drop user test1 cascade;
$ dimp SYSDBA/SYSDBA\@localhost:5237 file=owner01.dmp log=imp_owner01.log directory=/dmpdir owner=test1

模式级

导出 / 导入一个(或多个模式)下的所有对象

SCHEMAS=<模式名>{,<模式名>}

导出单个模式

导出模式test1_sch2下的所有对象,由于模式名为小写,故写法比较特殊

dexp SYSDBA/SYSDBA\@localhost:5236 file=schema01.dmp log=exp_schema01.log directory=/dmpdir schemas="\"test1_sch2\""

导入单个模式

将源库的模式test1_sch2,导入到目标库中,模式名不变(仍为test1_sch2)

SQL> drop schema "test1_sch2" cascade;
$ dimp SYSDBA/SYSDBA\@localhost:5237 file=schema01.dmp log=imp_schema01.log directory=/dmpdir schemas="\"test1_sch2\""

映射

可以修改源端和目标端的schema映射关系,实现将源端的sch1.tab1导入到目标端的sch2.tab1

REMAP_SCHEMA=<SOURCE_SCHEMA>:<TARGET_SCHEMA>	

将源库的模式test1_sch2,导入到目标库中,模式名更改(映射)为test2_sch2

dimp SYSDBA/SYSDBA\@localhost:5237 file=schema01.dmp log=imp_schema01.log directory=/dmpdir schemas="\"test1_sch2\"" remap_schema="\"test1_sch2\"":"\"test2_sch2\""

表级

导出 / 导入一个(或多个)指定表 / 表分区,导入所有数据行、约束、索引等信息

TABLES=<表名>{,<表名>}

导出单张表

导出表test1_sch2.TABLE_2,小写字母需要转义

dexp SYSDBA/SYSDBA\@localhost:5236 file=table01.dmp log=exp_table01.log directory=/dmpdir tables="\"test1_sch2\"".TABLE_2

导入单张表

SQL> drop table "test1_sch2"."TABLE_2" restrict;
$ dimp SYSDBA/SYSDBA\@localhost:5237 file=table01.dmp log=imp_table01.log directory=/dmpdir tables="\"test1_sch2\"".TABLE_2

其他

还有其他可选参数:控制导出导入的速度、表行数、模式对象、导出文件是否加密、压缩等

更多详情可参阅:
https://eco.dameng.com/docs/zh-cn/pm/dexp-logical-export.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值