exp/imp与expdp/impdp区别是什么

60次阅读
没有评论

共计 2820 个字符,预计需要花费 8 分钟才能阅读完成。

exp/imp 与 expdp/impdp 区别是什么,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

在平常备库和数据库迁移的时候,当遇到大的数据库的时候在用 exp 的时候往往是需要好几个小时,耗费大量时间。oracle10g 以后可以用 expdp 来导出数据库花费的时间要远小于 exp 花费的时间,而且文件也要小很多。

     

1. 使用 expdp 要先在数据库中创建 directory, 并给相应的用户 read,write 权限.

SQL create dexp 和 empdp 的区别 irectory dmpdir as‘/u01/dmdir’;

SQL grant read,write on directory to test;

     

2. 常用导出方法

$expdp scott/tiger DUMPFILE=scott.dmp DIRECTORY=dmpdir SCHEMAS=test

$expdp
scott/tiger DUMPFILE=tmp_dump.dmp DIRECTORY=dmpdir
TABLES=(tmp_test:p1,tmp_test:p2) JOB_NAME=tmp_dump LOGFILE=tmp_dump.log

$expdp scott/tiger DUMPFILE=full.dmp DIRECTORY=dmpdir FULL=Y JOB_NAME=full

$expdp
scott/timer DUMPFILE=tmp_200703.dmp DIRECTORY=dmpdir TABLES=tmp
QUERY=\”where to_char\(create_time,\’yyyy-mm-dd\’\)\ \ 2007-04\ \

常用一些参数说明:

SCOTT/TIGER: 用户 / 密码(*)

DUMPFILE: 导出后的文件名(*)

DIRECTORY: 导出文件存放位置(位于服务器端)(*)

CONTENT: 导出文件中包含的内容(默认为:ALL, 可选 DATA_ONLY/METADATA_ONLY)

FILESIZE: 指定导出文件大小(单位为 bytes).

JOB_NAME: 此次导出进程使用的名称, 方便跟踪查询(可选)

LOGFILE: 日志文件名(默认为:export.log)

INCLUDE: 导出时包含指定的类型

(例:INCLUDE=TABLE_DATA,

INCLUDE=TABLE: LIKE TAB%

INCLUDE=TABLE:”NOT LIKE‘TAB%’”…)

EXCLUDE: 导出时排除的数据类型(例:EXCLUDE=TABLE:EMP)

FULL: 全库导出时使用(同 EXP 的 FULL, 默认为 N)

SCHEMA: 导出某一个 SCHEMA 下的所有数据

TABLES: 按表导出(这里的方法和 EXP 一样)

TABLESPACE: 指定一个表空间导出.

QUERY: 按表导出时, 使用条件语句限定导出范围(同 exp 中的 QUERY)

TRANSPORT_FULL_CHECK:

TRANSPORT_TABLESPACES:

FLASHBACK_SCN:

FLASHBACK_TIME:

PARALLEL: 并行操作

PARFILE:

NETWORK_LINK:

当 Data Pump Export (DPE) 运行时,按 Control-C;它将阻止消息在屏幕上显示,但不停止导出进程本身。相反,它将显示 DPE 提示符(如下所示)。进程现在被认为处于“交互式”模式:

Export

这种方法允许在这个 DPE 作业上输入命令查询及控制当前作业。

3. 您可以通过 PARALLEL 参数为导出使用一个以上的线程来显著地加速作业。每个线程创建一个单独的转储文件,因此参数 dumpfile 应当拥有和并行度一样多的项目。您可以指定通配符作为文件名,而不是显式地输入各个文件名,例如:

expdp ananda/abc123 tables=CASES directory=DPDATA1 dumpfile=expCASES_%U.dmp parallel=4 job_name=Cases_Export

注意:dumpfile 参数拥有一个通配符 %U,它指示文件将按需要创建,格式将为 expCASES_nn.dmp,其中 nn 从 01 开始,然后按需要向上增加。

在并行模式下,状态屏幕将显示四个工作进程。(在默认模式下,只有一个进程是可见的)所有的工作进程同步取出数据,并在状态屏幕上显示它们的进度。

分离访问数据文件和转储目录文件系统的输入 / 输出通道是很重要的。否则,与维护 Data Pump 作业相关的开销可能超过并行线程的效益,并因此而降低性能。并行方式只有在表的数量多于并行值并且表很大时才是有效的。

 4.exp/imp 与 expdp/impdp 区别:

(1)
把用户 usera 的对象导到用户 userb, 用法区别在于 fromuser=usera touser=userb
,remap_schema=’usera’: usera’。例如:imp system/passwd fromuser=usera
touser=userb file=/oracle/exp.dmp log=/oracle/exp.log;

impdp system/passwd directory=expdp dumpfile=expdp.dmp remap_schema=’usera’: userb’logfile=/oracle/exp.log;

(2) 更换表空间,用 exp/imp 的时候,要想更改表所在的表空间,需要手工去处理一下,

如 alter table xxx move tablespace_new 之类的操作。

用 impdp 只要用 remap_tablespace=’tabspace_old’: tablespace_new’

(3) 当指定一些表的时候,使用 exp/imp 时,tables 的用法是 tables=(‘table1′,’table2′,’table3′)。

expdp/impdp 的用法是 tables=’table1′,’table2′,’table3′

(4) 是否要导出数据行

exp(ROWS=Y 导出数据行,ROWS=N 不导出数据行)

expdp content(ALL: 对象+导出数据行,DATA_ONLY:只导出对象,METADATA_ONLY:只导出数据的记录)

(5) expdp 是 [10g] 的新特性而且只能在服务器执行。而 exp/imp 是通用的。

(6)
oracle11g 中有个新特性,当表无数据时,不分配 segment,以节省空间, 所以 exp 导不出空表。解决的办法是用 expdp,
当然也可以设置 deferred_segment_creation 参数 或者 insert 一行,再 rollback,但是这样很麻烦。

关于 exp/imp 与 expdp/impdp 区别是什么问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注丸趣 TV 行业资讯频道了解更多相关知识。

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-07-17发表,共计2820字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)