expdp和impdp需要注意的地方

15 篇文章 0 订阅

1      expdp ,impdp需要注意的地方

1.1  参考

 http://blog.itpub.net/28869493/viewspace-1094164/

 

 

       DataPump 反映了整个导出/导入过程的完全革新。不使用常见的 SQL 命令,而是应用专用 API(direct path api etc) 来以更快得多的速度加载和卸载数据。

      

expdp 和 impdp

       Oracle10g引入了最新的数据泵(DataDump)技术,使DBA或者开发人员可以将数据库元数据(对象定义)和数据快速移动到另一个oracle数据库中。

      

数据泵导入导出与传统导入导出的区别

       在10G之前,传统的导入导出使用imp\exp工具,从10G开始,不仅保留了原先的exp\imp工具,还提供了数据泵导入导出工具expdp\impdp.

      

使用expdp\impdp应该注意的事项有:

       imp\exp是客户端的工具程序,它们可以在客户端使用,也可以在服务器端使用。

       expdp\impdp是服务端的工具程序,它们只能在Oracle服务端使用,不能在客户端使用。

I      MP只适用于EXP导出文件,不适用于EXPDP导出文件;

       IMPDP只适用于EXPDP导出文件,而不适用于EXP导出文件。

------------------------------------------------------------------------------------

调用expdp

       使用EXPDP工具时,其转储文件只能被存放在DIRECTORY对象对应的OS目录中,而不能直接指定转储文件所在的OS目录。因此,使用EXPDP工具时,必须首先建立DIRECTORY对象,并且需要为数据库用户授予使用DIRECTORY对象权限。

       创建逻辑目录,该命令不会在操作系统创建真正的目录,最好以system等管理员创建。

       createdirectory dump_dir as 'd:\dump';

       grantread,write on directory dump_dir to 某个用户;

       查看管理理员目录:select * fromdba_directories;

 

1.2  一些参数说明

 

1.FILESIZE 指定导出文件的最大尺寸,默认为0(表示文件尺寸没有限制)

  filesize的作用是为了防止有的os不支持2G以上容量的文件,而且大文件的I/O性能不好

  

2.INCLUDE 指定导出时要包含的对象类型及相关对象

3.EXCLUDE 指定执行操作时释放要排除对象类型或相关对象

4.CONTENT 指定要导出的内容形式,默认为ALL

   CONTENT=ALL  将导出对象定义和所有数据

   CONTENT= DATA_ONLY 只导出对象的数据

   CONTENT= METADATA_ONLY 只导出对象的定义

  

  

2.PARFILE 指定导出参数文件的名称

    举例说明:

XXX.par

       directory=dump_dir

       dumpfile=dump.dmp

       exclude=table:"like't%'"

       logfile=expdp.log

      

exp parfile=d:\test.par

 

>>>test.par的内容

a)scott用户连接导出自己的所有对象

       userid=scott/tiger------连接的用户scott

       file=d:\back.dmp------导出的文件的名字

      

b)用system用户连接来导出scott下的所有对象

       userid=system/manager

       file=d:\back.dmp

       owner=(scott)-------导出scott用户的所有对象

      

c)用system用户连接导出scott和test下的所有对象

       userid=system/manager

       file=d:\back.dmp

       owner=(scott,test)

      

d)用system用户连接导出scott下的emp,dept表、test用户下的student表

       userid=system/manager

       file=d:\back.dmp

       tables=(scott.emp,scott.dept,test.student)

      

e)导出整个数据库(备份整个数据库)--------必须用超级用户 system ,sys

       userid=system/manager

       file=d:\back.dmp

       full=y

      

以下是比较全的一个导出整个数据库的参数文件

       userid=system/manager

       file=d:\back.dmp

       buffer=1024000---------缓冲

       rows=y----------是否导出记录

       compress=y---------extent是否压缩

       grants=y----------grant语句是否导出

       indexes=y----------导出索引

       full=y----------全库导出

       feedback=3----------显示导出进度每3行

      

f)导出表scott.dept中部门编号是40的记录

       userid=system/manager

       file=d:\back.dmp

       tables=(scott.emp)

       query="wheredeptno=10" -----条件导出

      

g)导出表scott.emp中的记录

       userid=system/manager

       file=d:\back.dmp

       tables=(scott.emp)

       feedback=3---------每3行记录显示一个点进度

      

      

*******************************************************************************************

使用exp或expdp的PARFILE参数避免QUERY内容的繁琐转义问题

     使用exp或者expdp工具的parfile参数可以有效地避免query参数书写时在不同操作系统平台的特殊字符进行转意的发生。尽量减少出错的几率,节省备份任务的完成时间。

*******************************************************************************************

2      EXPDP

 

2.1  参数说明

2.1.1  与文件和目录有关的参数

       包括:DIRECTORY,      DUMPIFLE,       FILESIZE,   PARFILE,    LOGIFLE,   NOLOGIFLE     和COMPRESSION。

 

DIRECTORY参数用法:

--直接使用DIRECTORY参数,如

       expdpsusan/susan directory=data_dump_dir1 dumpfile=susan01.dmp

 

--DIRECTORY:FILE表示法,如

       expdpsusan/susan dumpfile=data_pump_dir1:test1.dmp,data_pump_dir2:test2.dmp;

       expdpsusan/susan dumpfile=data_pump_dir1:test1.dmp,data_pump_dir2:test2.dmplogfile=data_pump_dir1:test1.log

      

--DATA_PUMP_DIR环境变量:

       exportDATA_PUMP_DIR=DATA_PUMP_DIR1 --这里我名字必须大写,就奇怪了,小写还不行。

       expdpsusan/susan dumpfile=susan.dmp

 

DIRECTORY的优先次序:文件有关的参数(logfile,dumpfile),这种情况下目录对象与文件名用冒号(:)分开

指定的DIRECTORY参数

DATA_DUMP_DIR环境变量

默认的基于服务器的目录对象DATA_DUMP_DIR

 

DUMPFILE参数的用法:

       代替exp的file参数,可以用%U变量扩展成多个文件名,用','号也可以提供多个文件。

      

FILESIZE参数的用法:

       指定转储文件的尺寸,默认以字节为单位,如转储文件到达此限制,作业将停止

      

PARFILE参数的用法:

       即参数文件来代替命令行来直接输入

      

LOGFILE和NOLOGFILE

       不指定logfile会自动创建一个名为export.log的日志文件,用nologfile可以禁止日志产生。

      

COMMPRESSION参数:

       压缩与否,值为meteDATA_ONLY或NONE,没有办法来指定压缩导出数据本身

 

2.1.2  与导出方式有关的参数

       包括:FULL,     SCHEMAS, TABLES,     TABLESPACE,  TRANSPORT_TABLESPACE和       TRANSPORT_FULL_CHECK

       其它参数都好理解,TRANSPORT_FULL_CHECK参数是当导出作业时将检查数据的相关性,如值为Y,检查不通过时导出也失败。

      

2.1.3  导出过滤参数

       CONTENT:有三个值:

              ALL,     DATA_ONLY和       meteDATA_ONLY

              EXCLUDE和INCLUDE:此两参数互斥,使用格式为EXCLUDE/INCLUDE=object_type[:name_clause],如exclude=TABLE:"LIKE 'EMP%'"或直接exclude=index

             

expdp susan/susan dumpfile=su.dmpexclude=SCHEMA:"='SAN'" --注意双引号要用斜杠转义

       QUERY:如QUERY=OE.ORDER:"WHERE ORDER_ID> 1000000"

SAMPLE:允许指定范围从0.000001到100的一个百分数,格式为[[schema_name.]table_name]sample_percent

 

2.1.4  估算参数

       ESTIMATE:        值可为BLOCKS或STATISTICS

       BLOCKS                   是指根据块的空间估算其导出作类的空间需求。

       STATISTICS              是根据每个表计算过的统计数据来估算空间需求,当表刚分析过后,用此参数才会较准。

       ESTIMATE_ONLY:      值为Y或N,使用此参数可以先估算导出作业将需要的空间,而不启动导出作业。

 

      

2.1.5  网络链接参数

              NETWORK_LINK:可以从服务器中启动一个导出作业,将远程数据库的数据导出到你启动数据泵取导出作业的转储文件中。

2.1.6  加密参数

              ENCRYPTION_PASSWORD:对转储的文件进行加密

2.1.7  与作业有关的参数

              JOB_NAME:          给导出作业提供一个明确的名字,否则oracle会分配一个默认名字

              STATUS:        如运行长时间的导出作业,此参数可以按照所指定的时间间隔提供更新的状态。单位是秒,如果想每分钟显示导出状态就用 status=60

FLASHBACK_SCN,FLASHBACK_TIME

              PARALLEL:             使用多线程

              ATTACH:         将你的数据泵取客户机会话加入到一个运行的作业中,并使你进行交互方式。此参数只能与用户名/密码组合一起使用。

8.交互方式下的导出命令

              ADD_FILE:               给转储文件集合增加一个转储文件

              CONTINUE_CLIENT:    如果作业暂停的话重新启动

              EXIT_CLIETN:            退出客户机会话并恢复作业运行

              HELP:                            帮助命令

              KILL_JOB:               释放并删除作业

              PARALLEL:                    改变当前作业的活动工进程的数量

              START_JOB:                    启动或重新恢复当前的作业

              STATUS:                           设置作业监控的频率(以秒为单位)

              STOP_JOB:                   关闭作业的执行             

3      IMPDP

3.1  参数说明

3.1.1  与文件和目录有关的参数

       包括:DIRECTORY,      DUMPIFLE,       PARFILE,    LOGIFLE,   NOLOGIFLE和EXPDP相同,另有一个SQLFILE,此参数类似于旧的IMP的INDEXFILE参数,用在希望从转储文件中提取DDL。

       如:impdp susan/susandirectory=data_pump_dir2 dumpfile=test2.dmp sqlfile=data_pump_dir1:test2.sqlschemas=susan 就是指将属于 susan模式的所有DDL写入位于data_pump_dir1的test2.sql文件中,当然在data_pump_dir2中必须有test2.dmp的转储文件。

 

       另一个重要的与文件有关的参数是REUSE_DATAFILES,此参数告诉数据泵取在导入过程中是否应该使用已有的数据文件来创建表空间,如果指定为Y,则数据泵取导入程序将改写已有的数据文件。

      

3.1.2  过滤参数

       INCLUDE,  EXCLUDE的用法与      EXPDP相同

       注意,如果使用CONTENT=DATA_ONLY时,则在导入过程中不用使用EXCLUDE和INCLUDE参数。IMPDP可以使用QUERY参数在导入中过滤数据(以前只有在EXP中过滤数据,IMP不行).

      

       可以使用TABLE_EXISTS_ACTINS参数告诉ORACLE当表已经存在时做什么,提供4个不同的值:

              --SKIP(默认),跳过

              --APPEND,将值追加到表中

              --TRUNCATE,已truncate再重新装载新值

              --REPLACE,重新创建此表,并重新装载

             

3.1.3  与作业有关的参数

       JOB_NAME,   STATUS,   PARALLEL参数与EXPDP相同

      

3.1.4  与导入方式有关的参数

       FULL,   SCHEMAS, TABLES,     TABLESPACE,  TRANSPORT_TABLESPACE      和TRANSPORT_FULL_CHECK的用法和         EXPDP差不多如使用NETWORK_LINK参数,TRANSPORT_FULL_CHECK只适合于表空间的传送。

      

3.1.5  重新映射参数

       REMAP_SCHEMA, REMAP_DATAFILE,      REMAP_TABLESPACE,REMAP_TABLES

       尽管在exp/imp中有重新映射的能力(FROMUSER/TOUSER),但是      不能重新映射数据文件和表空间

       如:impdp system/managerdumpfile=newdump.dmp remap_schema=hre

      

3.1.6  remap_table方式

语法格式:REMAP_TABLE=[schema.]old_tablename[.partition]:new_tablename

在hr 模式中根据employees 创建如下一张表。

SQL>create table emp as select * fromemployees where 1=2;

执行导入操作,tables 中指定了employees,因为dumpfile table.dmp

中除了employees 表中的数据以外,还有其他表的数据。关键是remap_table

参数的使用把employees表中的数据从映射到emp 表,并且我们还使用了

conntent=data_only 参数,因为emp表已经存在,我们需要导入的只是数据。

      

3.1.7  转换参数

       TRANSFORM,此参数的语法:

       TRANSFORM= transform_name:value[bject_type]

       其中transform_name       有四个选项:segment attributes,storage,oid,pctspace

              --segmentattributes:  段属性包括物理属性、存储属性、表空间和日志。

              --storage:                           可以使用storage=y(默认)说明只取对象的存储属性作为导入作业的一部分。

              --oid:                                 如果指定oid=Y(默认),则在导入过程中将分配一个新的oid给对象表。

              --pctspace:                         通过提供一个正数作为该转换的值,可以增加对象的分配尺寸,并且数据文件尺寸等于pctspace的值(按百分比)

             

       value:transform_name的值,transform_name为segment attributes,storage,oid时值可为Y/N,pctspace为数值.object_type的值可以表、索引、表空间、类型、集群、约束等对象。

      

       一个例子:

              impdphr/hr tables=hr.employees directory=dpump_dir1 dumpfile=hr_emp.dmptransform=segment_attributes:N:table

              表示在导入时不导入任何表的已有存储属性

             

3.1.8  网络链接参数

       NETWORK_LINK,可以通过网络执行导入而不使用转储文件。

       impdphr/hr tables=employees directory=dpump+dir1 schemas=scott exclude=constraintnetwork_link=finance@prod1

      

3.1.9  闪回参数

       FLASHBACK_TIME,FLASHBACK_SCN

 

 

3.1.10 监控EXPDP/IMPDP作业

              可以使用DBA_DATAPUBMP_JOBS和DBA_DATAPUMP_SESSIONS视图来显示数据泵取作业的信息。

                     select* from DBA_DATAPUBMP_JOBS;

                     selectsid,serial# from v$session s,dba_datapump_sessions d where s.saddr=d.saddr;

              另也可以通过v$session_longops视图来监控长期运行的会话。

 

3.1.11 参考

       http://blog.csdn.net/tegwy/article/details/8831409

 

4      数据泵impdp参数

 

4.1  REMAP_DATAFILE

       该选项用于将源数据文件名转变为目标数据文件名,在不同平台之间搬移表空间时需要该选项.

       REMAP_DATAFILE=source_datafie:target_datafile

 

4.2  REMAP_SCHEMA

       该选项用于将源方案的所有对象装载到目标方案中.

       REMAP_SCHEMA=source_schema:target_schema

 

4.3  REMAP_TABLESPACE

       将源表空间的所有对象导入到目标表空间中

       REMAP_TABLESPACE=source_tablespace:target:tablespace

 

4.4  REUSE_DATAFILES

       该选项指定建立表空间时是否覆盖已存在的数据文件.默认为N

       REUSE_DATAFIELS={Y | N}

 

4.5  SKIP_UNUSABLE_INDEXES

       指定导入是是否跳过不可使用的索引,默认为N

 

4.6  sqlfile  参数允许创建DDL 脚本文件

       impdp scott/tiger directory=dump_scott dumpfile=a1.dmp sqlfile=c.sql

       默认放在directory下,因此不要指定绝对路径

 

4.7  STREAMS_CONFIGURATION

       指定是否导入流元数据(StreamMatadata),默认值为Y.

 

4.8  TABLE_EXISTS_ACTION

       该选项用于指定当表已经存在时导入作业要执行的操作,默认为SKIP

       TABBLE_EXISTS_ACTION={SKIP | APPEND | TRUNCATE | REPLACE }

       当设置该选项为SKIP时,导入作业会跳过已存在表处理下一个对象;

       当设置为APPEND时,会追加数据;

       当设置为TRUNCATE时,导入作业会截断表,然后为其追加新数据;

       当设置为REPLACE时,导入作业会删除已存在表,重建表并追加数据;

 

       注意,TRUNCATE选项不适用与簇表和NETWORK_LINK选项

             

5      11gr2数据泵REMAP_TABLE功能

5.1  参考

                     http://blog.itpub.net/4227/viewspace-664383/

 

       至少在11.2.0.1中,REMAP_TABLE只对表和数据有效,而对索引无效,而且使用REMAP_TABLE对于原表仍然存在的情况下要小心,因为REMAP_TABLE操作很可能导致源表发生导入操作,导致一些非预期的对象被导入,比如:

SQL> alter table t add check (id >0);

表已更改。

SQL> host expdp yangtk/yangtkdirectory=d_output dumpfile=t.dp tables=t reuse_dumpfiles=y

Export: Release 11.2.0.1.0 - Production on 星期五 6月 4 23:51:13 2010

Copyright (c) 1982, 2009, Oracle and/or itsaffiliates.  All rights reserved.

连接到: OracleDatabase 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production

With the Partitioning, OLAP, Data Miningand Real Application Testing options

启动 "YANGTK"."SYS_EXPORT_TABLE_01":  yangtk/******** directory=d_outputdumpfile=t.dp tables=t reuse_dumpfiles=y

正在使用 BLOCKS 方法进行估计...

处理对象类型TABLE_EXPORT/TABLE/TABLE_DATA

使用 BLOCKS 方法的总估计: 128 KB

处理对象类型TABLE_EXPORT/TABLE/TABLE

处理对象类型TABLE_EXPORT/TABLE/INDEX/INDEX

处理对象类型TABLE_EXPORT/TABLE/CONSTRAINT/CONSTRAINT

处理对象类型TABLE_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS

. . 导出了 "YANGTK"."T"                                5.562 KB      11 行

已成功加载/卸载了主表"YANGTK"."SYS_EXPORT_TABLE_01"

******************************************************************************

YANGTK.SYS_EXPORT_TABLE_01 的转储文件集为:

 /home/oracle/t.dp

作业"YANGTK"."SYS_EXPORT_TABLE_01" 已于 23:51:23 成功完成

 

SQL> drop table t_new purge;

表已删除。

 

SQL> host impdp yangtk/yangtkdirectory=d_output dumpfile=t.dp remap_table=t:t_new

Import: Release 11.2.0.1.0 - Production on 星期五 6月 4 23:55:51 2010

Copyright (c) 1982, 2009, Oracle and/or itsaffiliates.  All rights reserved.

连接到: OracleDatabase 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production

With the Partitioning, OLAP, Data Miningand Real Application Testing options

已成功加载/卸载了主表"YANGTK"."SYS_IMPORT_FULL_01"

启动"YANGTK"."SYS_IMPORT_FULL_01":  yangtk/******** directory=d_outputdumpfile=t.dp remap_table=t:t_new

处理对象类型TABLE_EXPORT/TABLE/TABLE

处理对象类型 TABLE_EXPORT/TABLE/TABLE_DATA

. . 导入了 "YANGTK"."T_NEW"                            5.562 KB      11 行

处理对象类型TABLE_EXPORT/TABLE/INDEX/INDEX

ORA-31684: 对象类型 INDEX:"YANGTK"."IND_T_ID" 已存在

处理对象类型TABLE_EXPORT/TABLE/CONSTRAINT/CONSTRAINT

处理对象类型TABLE_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS

ORA-39111: 跳过从属对象类型 INDEX_STATISTICS, 基本对象类型 INDEX:"YANGTK"."IND_T_ID" 已存在

作业"YANGTK"."SYS_IMPORT_FULL_01" 已经完成, 但是有 2 个错误 (于 23:55:55 完成)

 

SQL> col search_condition format a20

SQL> select table_name, constraint_name,search_condition

 2  from user_constraints

 3  where table_name = 'T';

TABLE_NAME                     CONSTRAINT_NAME                SEARCH_CONDITION

------------------------------------------------------------ --------------------

T                              SYS_C0011261                   id > 0

T                              SYS_C0011277                   id > 0

在这个例子中,就由于约束是系统名称,导致在执行REMAP_TABLE导入后,同样的约束在源表上重复建立。

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值