数据泵

一:数据泵提供的主要特性:

1. 支持并行处理导入、导出任务

2. 支持暂停和重启动导入、导出任务

3. 支持通过Database Link的方式导出或导入远端数据库中的对象

4. 支持在导入时通过Remap_schema、Remap_tablespace,重定向用户和表空间

5. EXPDP和IMPDP是服务端的工具程序,他们只能在ORACLE服务端使用,不能在客户端使用。

6. IMP只适用于EXP导出的文件,不适用于EXPDP导出文件;IMPDP只适用于EXPDP导出的文件,而不适用于EXP导出文件。


二:Directory对象

Directory指向操作系统中的一个路径。每个Directory都包含 Read,Write两个权限,可以通过Grant命令授权给指定的用户或角色。拥有读写权限的用户就可以读写该Directory对象指定的操作系统路 径下的文件。

    5.1) 创建逻辑目录,该命令不会在操作系统创建真正的目录.

        create directory weisi_dump as '/opt/soft/dump';


    5.2) 查看管理理员目录(同时查看操作系统是否存在,因为Oracle并不关心该目录是否存在,如果不存在,则出错)

        select * from dba_directories;


    5.3) 给用户赋予在指定目录的操作权限.

grant read,write on directory weisi_dump to weisi;

三:导入、导出

    expdp -help


3.1) 全库模式

导入或者导出整个数据库,对应impdp/expdp命令中的full参数,只有拥有dba或者 exp_full_database和imp_full_database权限的用户才能执行。

expdp \"/ as sysdba\" directory=weisi_dump full=y dumpfile=weisi_1_f.dump,weisi_2_f.dump logfile=weisi_f.log parallel=2

impdp \"/ as sysdba\" directory=weisi_dump  dumpfile=weisi_1_f.dump,weisi_2_f.dump logfile=weisi_impdp.log parallel=2

监控进度:

select  t.sofar/t.totalwork, t.* from v$session_longops t where t.message like '%SYS_EXPORT%';

3.2) Schema模式

导出或导入Schema下的自有对象,对应impdp/expdp命令中的Schema参数,这是默认的操作模式。 如果拥有dba或者 exp_full_database和

imp_full_database权限的用户执行的话,就可以导出或导入多个Schema中的对象。

expdp \"/ as sysdba\" directory=weisi_dump schemas=weisi,WUZHENXING dumpfile=weisi_1_s.dump,weisi_2_s.dump logfile=weisi_f.log parallel=2

select  t.sofar/t.totalwork, t.* from v$session_longops t where t.message like '%SYS_EXPORT%';

SQL> drop user wuzhenxing cascade;

impdp \"/ as sysdba\" directory=weisi_dump  dumpfile=weisi_1_f.dump,weisi_2_f.dump schemas=wuzhenxing logfile=weisi_impdp.log parallel=2

3.3) 表模式

导出指定的表或者表分区以及依赖该表的对象(如该表的索引)

expdp \"/ as sysdba\" directory=weisi_dump tables=weisi.big_rman_t dumpfile=weisi_1_t.dump,weisi_2_t.dump logfile=weisi_f.log parallel=2

select  t.sofar/t.totalwork, t.* from v$session_longops t where t.message like '%SYS_EXPORT%';

impdp \"/ as sysdba\" directory=weisi_dump  dumpfile=weisi_1_f.dump,weisi_2_f.dump tables=wuzhenxing.BIG_RMAN_T logfile=weisi_impdp.log parallel=2

3.4) 表空间模式

导出指定的表空间中的内容。对应impdp/expdp中的Tablespaces参数,这种模式类似于表模式和 Schema模式的补充。

expdp \"/ as sysdba\" directory=weisi_dump tablespaces=users dumpfile=weisi_1_tbs.dump,weisi_2_tbs.dump logfile=weisi_f.log parallel=2

impdp \"/ as sysdba\" directory=weisi_dump tablespaces=users dumpfile=weisi_1_tbs.dump,weisi_2_tbs.dump logfile=weisi_f.log parallel=2

3.5) 传输表空间模式

对应impdp/expdp中的Transport_tablespaces参数。这种模式与前面几种模式最显著的区 别是生成的Dump文件中并不包含具 体的逻辑数据,

而只导出相关对象的元数据(即对象的定义,可以理解成表的创建语句),逻辑数据仍然在表空间的数据文件中,

导出时需要将元数据和数据文件同 时复制到目标端服务器。这种导出方式效率很高,

时间开销主要是花在复制数据文件产生的I/O上。

expdp执行传输表空间模式的导出,用户必须 拥有 exp_full_database角色或者DBA角色。

而通过传输表空间模式导入时,用户必须拥有imp_full_database角色或者DBA角 色。

四:过滤数据

过滤数据主要依赖于Query和Sample两个参数。

4.1) Query

expdp \"/ as sysdba\" directory=weisi_dump tables=weisi.big_rman_t dumpfile=weisi_1_t.dump,weisi_2_t.dump logfile=weisi_f.log parallel=2  query="'where object_id < 2000'"

  4.2) Sample

该参数用来指定导出数据的百分比,可指定的值的范围从0.000001到99.999999,指定该参数以后,EXPDP导出将自动控制导出的记录量,如导出big_rman_t表中50%的记录。

expdp \"/ as sysdba\" directory=weisi_dump tables=weisi.big_rman_t dumpfile=weisi_1_t.dump,weisi_2_t.dump logfile=weisi_f.log parallel=2  Sample=50

过滤对象

过滤对象主要依赖于Include和Exclude两个参数。这两个参数作用正好相反,在这两个参数中,可以指定你知道的任何对象类型(如:Package、Procedure、Table等等)或者对象名称(支持通配符)

4.3) Exclude

指定不被包含的对象类型或者对象名称。指定了该参数以后,指定的对象类型对应的所有对象都不会被导入或导出。 如果被排除的对象有依赖的对象,那么其依赖的 对象也不会被导入或导出。如:通过Exclude参数指定不导出表对象的话,不仅指定的表不会被导出,连这些表关联的Index、Check等都不会被导出。

expdp \"/ as sysdba\" directory=weisi_dump schemas=weisi,wuzhenxing dumpfile=weisi_1_s.dump,weisi_2_s.dump logfile=weisi_f.log    parallel=2 exclude=table:\"in\(\'BIG_RMAN_T\'\)\"

expdp \"/ as sysdba\" directory=weisi_dump schemas=weisi,wuzhenxing dumpfile=weisi_1_s.dump,weisi_2_s.dump logfile=weisi_f.log    parallel=2

4.4) Include

与Exclude正好相反。指定包含的对象类型或者对象名称。object_type子句用于指定对象的类型,如table,sequence,view,procedure,package等等,导入的时候用的比较多。

expdp <other_parameters> SCHEMAS=scott EXCLUDE=SEQUENCE,TABLE:"IN ('EMP','DEPT')"

impdp <other_parameters> SCHEMAS=scott INCLUDE=PACKAGE,FUNCTION,PROCEDURE,TABLE:"='EMP'"

impdp  \"/ as sysdba\"  directory=weisi_dump schemas=weisi dumpfile=weisi_1_s.dump,weisi_2_s.dump logfile=weisi_impdp.log  include=table:\" in \(\'BIG_RMAN_T\'\)\" parallel=2

常用的过滤SQL表达式

EXCLUDE=SEQUENCE,VIEW                          --过滤所有的SEQUENCE,VIEW

EXCLUDE=TABLE:"IN ('EMP','DEPT')"              --过滤表对象EMP,DEPT

EXCLUDE=SEQUENCE,VIEW,TABLE:"IN ('EMP','DEPT')" --过滤所有的SEQUENCE,VIEW以及表对象EMP,DEPT

EXCLUDE=INDEX:"= 'INDX_NAME'"                  --过滤指定的索引对象INDX_NAME

INCLUDE=PROCEDURE:"LIKE 'PROC_U%'"              --包含以PROC_U开头的所有存储过程(_ 符号代表任意单个字符)

INCLUDE=TABLE:"> 'E' "                          --包含大于字符E的所有表对象

其它常用操作符 NOT IN, NOT LIKE, <, != 等等

五:高级过滤

在导出/导入的时候,我们常常有这样的需求,只想导出/导入表结构,或者只想导出/导入数据。

使用 Content参数。该参数有三个属性

1) ALL : 导出/导入对象定义和数据,该参数的默认值就是ALL

2) DATA_ONLY : 只导出/导入数据。

3) METADATA_ONLY : 只导出/导入对象定义。

过滤已经存在的数据

导入的表对象在目标库中已经存在,就有可能造成数据被重复导入。数据泵提供了一个新的参数

Table_exists_action,有以下几个参数值:

1) SKIP : 跳过该表,继续处理下一个对象。该参数默认就是SKIP。值得注意的是,如果你同时指定了CONTENT参数为Data_only的话,SKIP参数无 效,默认为APPEND。

2) APPEND : 向现有的表中添加数据。

3) TRUNCATE : TRUNCATE当前表,然后再添加记录。使用这个参数需要谨慎,除非确认当前表中的数据确实无用。否则可能造成数据丢失。

4) REPLACE : 删除并重建表对象,然后再向其中添加数据。值得注意的是,如果同时指定了CONTENT参数为Data_only的话,REPLACE参数无效。

重定义表的Schema或表空间

1) REMAP_SCHEMA : 重定义对象所属Schema该参数的作用类似IMP中的Fromuser+Touser,支持多个Schema的转换,语法如下:

REMAP_SCHEMA=Source_schema:Target_schema

select * from dba_objects t where t.owner='WEISI';

select * from dba_objects t where t.owner='WUZHENXING';

expdp \"/ as sysdba\" directory=weisi_dump schemas=weisi dumpfile=weisi_1_s.dump,weisi_2_s.dump logfile=weisi_f.log parallel=2

impdp \"/ as sysdba\" directory=weisi_dump dumpfile=weisi_1_s.dump,weisi_2_s.dump  logfile=weisi_impdp.log parallel=2 REMAP_SCHEMA=weisi:wuzhenxing

select * from dba_objects t where t.owner='WUZHENXING';

2) REMAP_TABLESPACE : 重定义对象所在的表空间。

该参数用来重映射导入对象存储的表空间,支持同时对多个表空间进行 转换,相互间用逗号分割。语法如下:

EMAP_TABLESPACE=Source_tablespace:Target_tablespace[,Source_tablespace:Target_tablespace]

六:优化导入/导出效率

6.1) 对于导出的parallel

  数据大小/parallel=filesize


6.2) 对于导入的parallel

  不影响数据库的前提下, parallel越大越好

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 220,458评论 6 513
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 94,030评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 166,879评论 0 358
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,278评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,296评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 52,019评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,633评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,541评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,068评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,181评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,318评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,991评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,670评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,183评论 0 23
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,302评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,655评论 3 375
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,327评论 2 358

推荐阅读更多精彩内容