Oracle Data Pump(数据泵)

Oracle Data Pump(数据泵):概述

作为用于高速数据和元数据移动的基于服务器的工具,Oracle Data Pump 具有:
可通过DBMS_DATAPUMP调用
提供以下工具:
expdp
impdp

Oracle Data Pump: 优点

Oracle Data Pump是Oracle数据库提供的一种数据导入导出工具,它可以快速地将数据从一个Oracle数据库实例复制到另一个实例。以下是Oracle Data Pump的一些主要优点:

高效性:通过多线程并行导出、压缩和导入数据,可以显著提高数据迁移的速度和效率。
灵活性:可以选择要导入或导出的数据和表,以满足不同的需求。同时支持对细粒度数据进行导入,提供了重映射等能力。
安全性:数据在传输和存储过程中进行了加密,以保证数据的安全性。
重启能力:如果在迁移过程中发生中断,Oracle Data Pump具有重新启动作业的能力,可以从上次中断的地方继续执行。
并行执行:支持并行处理,这可以进一步提高大数据量迁移的效率。
估算空间需求:该工具具有估算空间需求的能力,有助于提前规划和分配足够的资源。
网格方式操作:Oracle Data Pump支持网格计算,这使得它能够在分布式环境中更有效地利用资源。
关联运行作业:允许用户关联多个作业,以便按顺序或并行执行它们,从而提高了操作的便利性。

在这里插入图片描述

Oracle数据库导入导出的基本概念
exp/imp EXPDP/IMPDP的基本概念
EXPDP和IMPDP叫做数据泵(Oracle Data Pump),是ORACLE10G开始出现的导入导出工具,相对于数据泵EXP和IMP叫做传统导入导出工具(the original Export and Import utilities),一般来说,ORACLE建议使用数据泵,因为他支持ORACLE10G之后的所有新特性,而传统导入导出工具不支持。这两种类型的导入导出工具都支持跨操作系统平台和跨ORACLE版本。

exp/imp EXPDP/IMPDP的主要区别

1)EXPDP/IMPDP数据泵是服务端的工具,它只能在服务端使用而不能在客户端使用,也不能在DG库上使用
2)exp/imp可以在服务端和客户端使用,也可以在只读的DG库上使用

数据泵由三部分组成:

1、命令行客户端(expdp和impdp)
2、 DBMS_DATAPUMP包 (也就是Data Pump API)
3、 DBMS_METADATA包 (也就是Metadata API)
命令行客户端与传统的exp和imp非常相似,但它是通过使用DBMS_DATAPUMP包提供的过程执行导入导出命名。所有的数据泵执行过程都是在服务器端进行的,这意味着所有的非授权用户,需要让DBA创建一个DIRECTORY来读写数据泵文件。对于授权用户,有一个默认的DIRECTORY可以用。DBMS_DATAPUMP 和DBMS_METADATA包可以独立于expdp、impdp而独立使用,就像ORACLE的其他包一样。

导入导出前应检查确认的信息

1、字符集检查,检查源库、目标库的字符集字符集是否一致

select userenv('language') from dual;
AMERICAN_AMERICA.AL32UTF8
echo $NLS_LANG
AMERICAN_AMERICA.AL32UTF8

需要保证源库上的字符集和目标库上的字符集一样,否则expdp/impdp (exp/imp) 容易报告错误,并且丟数据。

另外,需要保证环境变量NLS_LANG和数据库字符集一样,如不一致,需在导入之前先设置字符集
如:如果数据库字符集是AL32UTF8
export nls_lang=AMERICAN_AMERICA.AL32UTF8,而且需要重新登录后生效,可以使用env|grep NLS检查确认

2、数据库版本检查,检查源库和目标库的数据库版本是否都是同一版本,不同版本需要考虑的情况不同。默认从低版本到高版本可以兼容,从高版本到低版本需要注意。

select * from v$version;

3、存储容量检查,主要检查目标库存储大小是否满足
asm
lsdg

Linux
df -h

4、表空间检查

select df.tablespace_name tbs,
       totalspace total_mb,
       decode(maxbytes,
              0,
              freespace,
              freespace + df.auto_totalspace - df.totalspace) free_mb,
       decode(maxbytes,
              0,
              round((1 - freespace / totalspace) * 100, 2),
              round((1 - (freespace + df.auto_totalspace - df.totalspace) /
                    auto_totalspace) * 100,
                    2)) used_rate
  from (select tablespace_name,
               round(sum(bytes) / 1024 / 1024) totalspace,
               round(sum(decode(AUTOEXTENSIBLE, 'YES', maxbytes, bytes)) / 1024 / 1024) auto_totalspace
  • 25
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值