Oracle expdp/impdp 及 exp/imp 命令详解

一、基础环境

操作系统:Windows 或 Linux

数据库版本:Oracle Database 11.2.0.1.0 及以上版本

二、命令简介

我们在使用Oracle 数据库的过程中会经常对数据进行导入导出。Oracle 数据库提供 expdp / impdp (Data Pump,数据泵)以及 exp / imp 两种工具进行数据的导入导出,可以对数据库进行逻辑备份。

A、expdp / impdp 是Oracle 10g 开始引入的全新的用于快速迁移数据的工具。提供了一种用于在 Oracle 数据库之间传输数据对象的机制。是服务端的工具程序,它们只能在数据库服务端使用,不可以在客户端使用。expdp 导出的数据文件只能使用 impdp 命令进行导入。优点如下:

1、导出 / 导入的速度快,效率高。

2、可以在不实际执行导出的情况下,估计需要的磁盘空间和所需时间。

3、可以只处理某些对象,不处理某些对象,或者只处理某些对象中满足条件的数据。

4、通过 db link 将远程数据库导出到转储文件。

5、通过 db link,直接将远程数据库中的数据导入到当前数据库。

6、导入时可以修改数据所在的 schema 名称,表空间名称以及数据文件名称。

7、导出模式:数据库 、表空间 、对象模式 、表 。

8、通过采样,导出部分数据。

9、只导出元数据。

10、并行操作。

B、exp / imp 是客户端的工具程序,它们既可以客户端使用,也可以在服务器端使用。exp 导出的数据文件只能使用 imp 命令进行导入。

三、命令详解

A、expdp

关键字 说明 [ 默认值 ]

userid 用户名/口令,必须为第一个参数,且不能省略。

directory 用于转储文件和日志文件的目录对象。[ data_pump_dir]

dumpfile 指定目标转储文件名的列表 [expdat.dmp]

logfile 指定日志文件名 [export.log]。

schemas 要导出的方案的列表 [登录的方案,即 userid 的那个用户]。

tables 标识要导出的表的列表。例如, tables=hr.employees,sh.sales:sales_1995。

nologfile 不写入日志文件 [N]。

query 用于导出表的子集的谓词子句。例如, query=employees:"WHERE department_id > 10"。

reuse_dumpfiles 覆盖目标转储文件 (如果文件存在) [N]

compression 减少转储文件大小。有效的关键字值为: all, data_only, [matadata_only] 和 none。

content 指定要卸载的数据。[ ALL ] 即:元数据(表结构等)和数据。DATA_ONLY 即:仅导出数据不导出元数据(表结构)。 METADATA_ONLY 即:仅导出元数据(表结构等)不导出数据。

encryption 加密某个转储文件的一部分或全部。 有效的关键字值为: ALL 即:加密元数据(表结构等)和数据。 DATA_ONLY,即:仅加密数据部分,不加密元数据(表结构等)。ENCRYPTED_COLUMNS_ONLY, 即:仅加密列。METADATA_ONLY,即:仅加密元数据(表结构等)。NONE,即不加密元数据(表结构等)和数据。

encryption_algorithm 指定加密的方式。有效的关键字值为: [ AES128 ], AES192 和 AES256。

encryption_mode 生成加密密钥的方法。有效的关键字值为: dual, password和 [TRANSPARENT]。

encryption_password 用于在转储文件中创建加密数据的口令密钥。

network_link 源系统的远程数据库链接的名称。即dblink的名称,用于导出远程数据库。(性能受网络限制)

version 要导出的对象版本。有效的关键字值为: [COMPATIBLE], latest 或任何有效的数据库版本。在不同版本数据库导入导出数据时,必须指定此参数,否则会导入失败。

full 导出整个数据库 [N]。

estimate_only 计算作业估计值而不执行导出。

estimate 计算作业估计值。 有效的关键字值为: [blocks] 和 STATISTICS。

help 显示帮助消息 [N]。

常用导出语句:

1、导出用户 scott 和 HR 的所有对象,目录对象为:默认,转储文件名称为:默认[EXPDAT.DMP], 日志文件为:默认[export.log]

expdp userid=system/oracle schemas=SCOTT,HR

2、导出用户 scott 的 emp 表和 HR 的 jobs 表,目录对象为:默认,转储文件名称为:默认[EXPDAT.DMP], 日志文件为:默认[export.log]

expdp system/oracle tables=scott.emp,hr.jobs

3、导出远程用户的scott

expdp userid=system/oracle network_link='test' schemas=scott,hr

4、生产环境单实例数据库备份命令

expdp userid=帐号/密码@实例名 schemas=方案名列表 reuse_dumpfiles=y compression=all encryption=data_only encryption_mode=password encryption_password=密码

特别说明:为了保证数据安全,导出时对转储文件进行加密(密码可以动态生成),防止未授权人员获取此转储文件,导致数据泄露。

B、impdp

关键字 说明 [ 默认值 ]

userid 用户名/口令,必须为第一个参数,且不能省略。

directory 用于转储文件, 日志文件和 SQL 文件的目录对象。[ data_pump_dir]

dumpfile 要从中导入的转储文件的列表,可以有多个。[expdat.dmp]

logfile 日志文件名 [import.log]

schemas 要导入的方案的列表。

encryption_password 用于访问转储文件中的加密数据的口令密钥。

full 导入源中的所有对象 [Y]

remap_schema 将一个方案中的对象加载到另一个方案。(修改用户名)

remap_tablespace 将表空间对象重新映射到另一个表空间。(修改表空间)

reuse_datafiles 如果表空间已存在, 则将其初始化 [N]。

tables 标识要导入的表的列表。

help 显示帮助消息 [N]。

常用的导入语句:

1、将用户 scott 的 emp 用户表删除,从备份文件 EXPDAT.DMP 中恢复 emp 表。(提前将 EXPDAT.DMP 放入 DATA_PUMP_DIR 对应的目录)

impdp userid=system/oracle tables=scott.emp

2、将备份文件 expdat.dmp 中所有对象导入到数据库中,密码为123456。(提前将 expdat.dmp 放入 DATA_PUMP_DIR 对应的目录)

impdp userid=system/oracle full=y encryption_password=123456

C、exp

关键字 说明[ 默认值 ]

userid 用户名/口令,必须为第一个参数,且不能省略。

owner 所有者用户名列表,多个用英文逗号隔开。

file 输出文件。 [ expdat.dmp ]

log 屏幕输出的日志文件,没有默认值,建议指定,否则不产生日志文件。

rows 导出数据行 [Y],如果只想导出元数据,不导出数据,请将此关键字设置为N

query 用于导出表的子集的 select 子句

tables 表名列表。不同的用户可以设置为:用户名1.表名1,用户名2.表名2

buffer 数据缓冲区大小。建议设置为64000,可以加快导出速度。

direct 直接路径 [N]。建议设置为Y ,可以加快导出速度。

recordlength IO 记录的长度。建议设置为65535,可以加快导出速度。

grants 导出权限 [ Y ]

indexs 导出索引 [ Y ]

help 显示帮助消息 [N]

常用的导出语句:

1、将 SCOTT 的 EMP 和 DEPT 表每个表导出 10 行。(不足10行的按照实际导出行数导出)

exp userid=scott/tiger log=export.log tables=emp,dept query="'WHERE ROWNUM <= 10'"

2、将 scott 的 emp 和 dept 表导出,最高效率(导出文件名为默认的expdat.dmp)

exp userid=scott/tiger log=export.log tables=emp,dept direct=y buffer=64000 recordlength=65535

D、imp

关键字 说明[ 默认值 ]

userid 用户名/口令,必须为第一个参数,且不能省略。

file 输入文件。 [ expdat.dmp ]

log 屏幕输出的日志文件,没有默认值,建议指定,否则不产生日志文件。

fromuser 所有者用户名列表

touser 用户名列表

tables 表名列表。前面可以加用户名,如:scott.emp,scott.dept

grants 导入权限 [Y]

indexes 导入索引 [Y]

rows 导入数据行 [Y]

full 导入整个文件。[N]

help 显示帮助消息 [N]

常用的导入语句:

1、将 scott.dmp 导入数据库。(需要提前将 emp,dept 表删除)

imp userid=scott/tiger file=scott.dmp log=scott.log tables=emp,dept

四、参考资料

1、Oracle 自带的命令:expdp -help 、impdp -help 、exp -help 、imp -help

文章知识点与官方知识档案匹配,可进一步学习相关知识

MySQL入门技能树首页概览84232 人正在系统学习中


版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原文链接:https://blog.csdn.net/u011046671/article/details/103540758

相关推荐
月光水岸New1 小时前
Ubuntu 中建的mysql数据库使用Navicat for MySQL连接不上
数据库·mysql·ubuntu
狄加山6751 小时前
数据库基础1
数据库
我爱松子鱼1 小时前
mysql之规则优化器RBO
数据库·mysql
chengooooooo2 小时前
苍穹外卖day8 地址上传 用户下单 订单支付
java·服务器·数据库
Rverdoser3 小时前
【SQL】多表查询案例
数据库·sql
Galeoto3 小时前
how to export a table in sqlite, and import into another
数据库·sqlite
人间打气筒(Ada)3 小时前
MySQL主从架构
服务器·数据库·mysql
leegong231113 小时前
学习PostgreSQL专家认证
数据库·学习·postgresql
喝醉酒的小白3 小时前
PostgreSQL:更新字段慢
数据库·postgresql
敲敲敲-敲代码3 小时前
【SQL实验】触发器
数据库·笔记·sql