ORACLE EXPDP命令使用详细

相关参数以及导出示例:

exp/imp

  • exp username/password@net_service_name file=dump_name.dmp full=y
  • imp username/password@net_service_name file=dump_name.dmp fromuser=form touser=to

expdp/impdp

  • create or repalce directory DUMP_DIR as 'file_path'
  • grant read, write on directory DUMP_DIR to ***
  • expdp username/password@net_service schemas=fromuser dumpfile=expdp.dmp DIRECTORY=DUMP_DIR
  • impdp username/password@ DIRECTORY=DUMP_DIR DUMPFILE=expdp.dmp REMAP_SCHEMA=fromuser:touser

 

Oracle数据导入导出imp/exp就相当于Oracle数据还原与备份。

exp命令可以把数据从远程数据库服务器导出到本地的DMP文件;

imp命令可以把DMP文件从本地导入到远处的数据库服务器中。

利用这个功能可以构建两个相同的数据库,一个用来测试,一个用来正式使用。

  1. 用户模式:导出用户所有对象及对象中的数据
  2. 表模式:导出用户所有表或者指定表
  3. 整个数据库:导出数据库中所有的对象

关于数据泵的概述

在Oracle 10g中,数据泵(Data Pump)的所有工作都有数据实例来完成,数据库可以并行来处理这些工作,不仅可以通过建立多个数据泵工作进程来读/写正在被导入/导出的数据,也可以建立并行I/O服务器以更快地读取或插入数据,从而单进程瓶颈被彻底解决。

通过数据泵,以前通过EXP/IMP主要基于Client/Server的逻辑备份方式转换为服务器端的快速备份,数据泵主要工作在服务器端,可以通过并行方式快速装入或卸载数据,而且可以在运行过程中调整并行的速度,以加快或减少资源消耗。

EXPDP和IMPDP的本质在于,通过API调用,把传统的EXP/IMP类交付式模式的操作,转变成数据库内部的job任务,从而实现了任务的可终止与重启动。

expdptest/test@acfdirectory=dpdata dumpfile=full.dmp full=y

在执行过程中,可以拿下Ctrl+C组合键,退出当前交互模式,退出之后,导出操作不会停止,这不同于Oracle以前的EXP。以前的EXP,如果退出交互式模式,就会出错终止导出任务。

 

导出数据
1)按用户导
expdp scott/tiger@orcl schemas=scott dumpfile=expdp.dmp DIRECTORY=dpdata1;

2)并行进程parallel
expdp scott/tiger@orcl directory=dpdata1 dumpfile=scott3.dmp parallel=40 job_name=scott3

3)按表名导
expdp scott/tiger@orcl TABLES=emp,dept dumpfile=expdp.dmp DIRECTORY=dpdata1;

4)按查询条件导
expdp scott/tiger@orcl directory=dpdata1 dumpfile=expdp.dmp Tables=emp query='WHERE deptno=20';

5)按表空间导
expdp system/manager DIRECTORY=dpdata1 DUMPFILE=tablespace.dmp TABLESPACES=temp,example;

6)导整个数据库
expdp system/manager DIRECTORY=dpdata1 DUMPFILE=full.dmp FULL=y;


还原数据
1) 导到指定用户下
impdp scott/tiger DIRECTORY=dpdata1 DUMPFILE=expdp.dmp SCHEMAS=scott;

2)改变表的owner
impdp system/manager DIRECTORY=dpdata1 DUMPFILE=expdp.dmp TABLES=scott.dept REMAP_SCHEMA=scott:system;

3)导入表空间
impdp system/manager DIRECTORY=dpdata1 DUMPFILE=tablespace.dmp TABLESPACES=example;

4)导入数据库
impdb system/manager DIRECTORY=dump_dir DUMPFILE=full.dmp FULL=y;

5)追加数据
impdp system/manager DIRECTORY=dpdata1 DUMPFILE=expdp.dmp SCHEMAS=system TABLE_EXISTS_ACTION=append;

 




ERROR: 
ORA-39002: invalid operation 
ORA-39070: Unable to open the log file. 
ORA-29283: invalid file operation 
ORA-06512: at "SYS.UTL_FILE", line 536 
ORA-29283: invalid file operation 
ANSWER: 
IMPDP 创建的Directory都是基于Server端的Host的; 
所以还是按照以前的IMP思路,利用Client端Path创建Directory,会出现以上错误。

 

1. DIRECTORY

指定转储文件和日志文件所在的目录
DIRECTORY=directory_object
Directory_object
用于指定目录对象名称.需要注意,目录对象是使用CREATE DIRECTORY语句建立的对象,而不是OS目录
Expdp scott/tiger DIRECTORY= DMP
  DUMPFILE=a.dump

 

create or replace directory dmp
  as 
'd:/dmp'

 

expdp zftang/zftang@zftang directory=dmp  dumpfile=test.dmp content=metadata_only

 

2. CONTENT

该选项用于指定要导出的内容.默认值为ALL
CONTENT={ALL | DATA_ONLY | METADATA_ONLY}
当设置CONTENTALL,将导出对象定义及其所有数据.DATA_ONLY,只导出对象数据,METADATA_ONLY,只导出对象定义

 

expdp zftang/zftang@zftang directory=dmp  dumpfile=test.dmp content=metadata_only

----------只导出对象定义

expdp zftang/zftang@zftang directory=dmp  dumpfile=test.dmp content=data_only

----------导出出所有数据

3. DUMPFILE

用于指定转储文件的名称,默认名称为expdat.dmp
DUMPFILE=[directory_object:]file_name [,….]
Directory_object
用于指定目录对象名,file_name用于指定转储文件名.需要注意,如果不指定directory_object,导出工具会自动使用DIRECTORY选项指定的目录对象


expdp zftang/zftang@zftang directory=dmp  dumpfile=test1.dmp

 

 

数据泵工具导出的步骤:

 1、创建DIRECTORY
create directory dir_dp as 'D:/oracle/dir_dp'; 
2
、授权

Grant read,write on directory dir_dp to zftang;
--
查看目录及权限
SELECT privilege, directory_name, DIRECTORY_PATH FROM user_tab_privs t, all_directories d
 WHERE t.table_name(+) = d.directory_name ORDER BY 2, 1;
3
、执行导出
expdp zftang/zftang@fgisdb schemas=zftang directory=dir_dp dumpfile =expdp_test1.dmp logfile=expdp_test1.log;

连接到: Oracle Database 10g Enterprise Edition Release 10.2.0.1
With the Partitioning, OLAP and Data Mining options
启动
 "ZFTANG"."SYS_EXPORT_SCHEMA_01":  zftang/********@fgisdb sch
ory=dir_dp dumpfile =expdp_test1.dmp logfile=expdp_test1.log;  */
备注:

   1directory=dir_dp必须放在前面,如果将其放置最后,会提示 ORA-39002: 操作无效
                                                             ORA-39070: 无法打开日志文件。
                                                             ORA-39087: 目录名 DATA_PUMP_DIR; 无效
     
   2、在导出过程中,DATA DUMP 创建并使用了一个名为SYS_EXPORT_SCHEMA_01的对象,此对象就是DATA DUMP导出过程中所用的JOB名字,如果在执行这个命令时如果没有指定导出的JOB名字那么就会产生一个默认的JOB名字,如果在导出过程中指定JOB名字就为以指定名字出现
     如下改成:
     expdp zftang/zftang@fgisdb schemas=zftang directory=dir_dp dumpfile =expdp_test1.dmp logfile=expdp_test1.log,job_name=my_job1;
   3、导出语句后面不要有分号,否则如上的导出语句中的job表名为‘my_job1;’,而不是my_job1。因此导致expdp zftang/zftang attach=zftang.my_job1执行该命令时一直提示找不到job

 

 

数据泵导出的各种模式:

1、 按表模式导出:
expdp zftang/zftang@fgisdb  tables=zftang.b$i_exch_info,zftang.b$i_manhole_info dumpfile =expdp_test2.dmp logfile=expdp_test2.log directory=dir_dp job_name=my_job

2
、按查询条件导出:
expdp zftang/zftang@fgisdb  tables=zftang.b$i_exch_info dumpfile =expdp_test3.dmp logfile=expdp_test3.log directory=dir_dp job_name=my_job query='"where rownum<11"'

3
、按表空间导出:
Expdp zftang/zftang@fgisdb dumpfile=expdp_tablespace.dmp tablespaces=GCOMM.DBF logfile=expdp_tablespace.log directory=dir_dp job_name=my_job

4
、导出方案
Expdp zftang/zftang DIRECTORY=dir_dp DUMPFILE=schema.dmp SCHEMAS=zftang,gwm

5
、导出整个数据库:
expdp zftang/zftang@fgisdb dumpfile =full.dmp full=y logfile=full.log directory=dir_dp job_name=my_job

impdp导入模式:

 1、按表导入
p_street_area.dmp
文件中的表,此文件是以gwm用户按schemas=gwm导出的:
impdp gwm/gwm@fgisdb  dumpfile =p_street_area.dmp logfile=imp_p_street_area.log directory=dir_dp tables=p_street_area job_name=my_job

2
、按用户导入(可以将用户信息直接导入,即如果用户信息不存在的情况下也可以直接导入)
impdp gwm/gwm@fgisdb schemas=gwm dumpfile =expdp_test.dmp logfile=expdp_test.log directory=dir_dp job_name=my_job

3
、不通过expdp的步骤生成dmp文件而直接导入的方法:
--
从源数据库中向目标数据库导入表p_street_area
impdp gwm/gwm directory=dir_dp NETWORK_LINK=igisdb tables=p_street_area logfile=p_street_area.log  job_name=my_job
igisdb
是目的数据库与源数据的链接名,dir_dp是目的数据库上的目录


4
、更换表空间
  
采用remap_tablespace参数 
  --
导出gwm用户下的所有数据

expdp system/orcl directory=data_pump_dir dumpfile=gwm.dmp SCHEMAS=gwm
注:如果是用sys用户导出的用户数据,包括用户创建、授权部分,用自身用户导出则不含这些内容
--
以下是将gwm用户下的数据全部导入到表空间gcomm(原来为gmapdata表空间下)下
impdp system/orcl directory=data_pump_dir dumpfile=gwm.dmp remap_tablespace=gmapdata:gcomm

 

 

 

 

 

Oracle10g数据泵impdp参数详解

2011-6-30 12:29:05

导入命令Impdp

      ATTACH                                         连接到现有作业例如 ATTACH [=作业名]

      CONTENT                                      指定要加载的数据其中有效关键字为: (ALL), DATA_ONLY  METADATA_ONLY

      DIRECTORY                                  供转储文件日志文件和 sql 文件使用的目录对象。

      DUMPFILE                                     要从 (expdat.dmp) 中导出的转储文件的列表,例如 DUMPFILE=scott1.dmp, scott2.dmp, dmpdir:scott3.dmp

      ENCRYPTION_PASSWORD       用于访问加密列数据的口令关键字。此参数对网络导入作业无效。

      ESTIMATE                                      计算作业估计值其中有效关键字为:(BLOCKS)  STATISTICS

      EXCLUDE                                      排除特定的对象类型例如 EXCLUDE=TABLE:EMP

      FLASHBACK_SCN                       用于将会话快照设置回以前状态的 SCN

      FLASHBACK_TIME                       用于获取最接近指定时间的 SCN 的时间。

      FULL                                                导出整个数据库 (N)

      HELP                                               显示帮助消息 (N)

      INCLUDE                                        包括特定的对象类型例如INCLUDE=TABLE_DATA

      JOB_NAME                                   要创建的导出作业的名称。

      LOGFILE                                         日志文件名 (import.log)

      NETWORK_LINK                            链接到源系统的远程数据库的名称。

      NOLOGFILE                                   不写入日志文件 (N)

      PARALLEL                                      更改当前作业的活动 worker的数目。

      PARFILE                                         指定参数文件。

      QUERY                                           用于导出表的子集的谓词子句。

      REMAP_DATAFILE                       在所有 DDL 语句中重新定义数据文件引用。

      REMAP_SCHEMA                        将一个方案中的对象加载到另一个方案。

      REMAP_TABLESPACE                 将表空间对象重新映射到另一个表空间。

      REUSE_DATAFILES                        如果表空间已存在则将其初始化 (N)

      SCHEMAS                                      要导入的方案的列表 (登录方案)                    

      SKIP_UNUSABLE_INDEXES          跳过设置为无用索引状态的索引。

      SQLFILE                                          将所有的 SQL DDL 写入指定的文件。

      STATUS                                           在默认值 (0) 将显示可用时的新状态的情况下,要监视的频率 (以秒计作业状态。

      STREAMS_CONFIGURATION    启用流元数据的加载

      TABLE_EXISTS_ACTION               导入对象已存在时执行的操作。有效关键字: (SKIP), APPEND, REPLACE  TRUNCATE

      TABLES                                           标识要导出的表的列表 -只有一个方案。

      TABLESPACES                              标识要导出的表空间的列表。

      TRANSFORM                                要应用于适用对象的元数据转换。有效转换关键字为: SEGMENT_ATTRIBUTES, STORAGE, OID  PCTSPACE                                             

      TRANSPORT_DATAFILES             按可传输模式导入的数据文件的列表。

      TRANSPORT_FULL_CHECK        验证所有表的存储段 (N)

      TRANSPORT_TABLESPACES      要从中卸载元数据的表空间的列表。                                 

      VERSION                                       要导出的对象的版本其中有效关键字为:
                      (COMPATIBLE), LATEST 
或任何有效的数据库版本。

HELP

Oracle 用户进入操作系统:

IMPDP  help 或者 IMPDP help=y可以列出impdp相关的所有参数列表及介绍。

 

 

 

IMPDPEXPDP有很多参数的使用方式相同,相同部分在此不在一一描述。

 

REMAP_SCHEMA 

该选项用于将源方案的所有对象装载到目标方案中。本参数实际基本同impfromuser touser语句。

参数举例:

REMAP_SCHEMA=source_schema:target_schema  

应用举例:

impdp scott/test  dumpfile=scott.dmp directory=dump_dir logfile=imp.log job_name=cases_impdp  REMAP_SCHEMA=dbtest:scott

REMAP_TABLESPACE  *

该选项用于将源表空间的所有对象导入到目标表空间中。

参数举例:

REMAP_SCHEMA=source_tablespaces:target_tablespaces 

应用举例:

impdp scott/test  dumpfile=scott.dmp directory=dump_dir logfile=imp.log job_name=cases_impdp  REMAP_TABLESPACE=user:user1

ESTIMATE

估算被导入表所占用磁盘空间。默认值是BLOCKS。可选值是BLOCKSSTATISTICS

设置为BLOCKS时,oracle会按照目标对象所占用的数据库个数乘以数据块尺寸估算对象占用的空间,设置为STATISTICS时,根据统计信息中记录的内容估算。

参数举例:

estimate=blocks

应用举例:

impdp scott/test  dumpfile=scott.dmp directory=dump_dir logfile=imp.log job_name=cases_impdp  Estimate=blocks

FULL

该选项用于指定数据库导入模式,默认为N,为Y时表示执行数据库导出。

参数举例:

FULL=Y

应用举例:

impdp scott/test dumpfile=scott.dmp directory=dump_dir  full=y

NOLOGFILE 

该选项用于指定禁止生成导出日志文件,默认值为N。可选参数YN

参数举例:

NOLOGFILE=Y

应用举例:

impdp scott/test dumpfile=scott.dmp directory=dump_dir  NOLOGFILE=Y

SKIP_UNUSABLE_INDEXES 

该选项用于指定导入设置跳过无用索引。可选参数YN

参数举例:

SKIP_UNUSABLE_INDEXES=Y

应用举例:

impdp scott/test dumpfile=scott.dmp directory=dump_dir SKIP_UNUSABLE_INDEXES=Y

SQLFILE

该选项用于指定将所有的 SQL DDL 写入指定的文件。

注:经测试并不导入数据,只是通过备份文件生成 脚本文件。文件生成在directory设置目录。

参数举例:

SQLFILE=a.sql

应用举例:

impdp scott/test dumpfile=scott.dmp directory=dump_dir SQLFILE=a.sql

TABLE_EXISTS_ACTION

该选项用于导入对象已存在时执行的操作,默认为SKIP。可选参数(SKIP), APPEND, REPLACE  TRUNCATE。当设置为SKIP时,导入作业会跳过已存在表处理下一个对象;当设置为APPEND时,会追加数据;为TRUNCATE时,导入作业会截断表,然后为其追加新数据;当设置为REPLACE 时,导入作业会删除已经存在表,重建表并追加数据。

注:TRUNCATE选项不适用与簇表和NETWORK_LINK选项。

参数举例:

TABLE_EXISTS_ACTION=APPEND

应用举例:

impdp scott/test TABLES=PH.dmp directory=dump_dir TABLE_EXISTS_ACTION=APPEND

TRANSPORT_DATAFILES *  

该选项用于指定搬移空间时要被导入到目标数据库的数据文件。

参数举例:

TRANSPORT_DATAFILES=datafile_name

应用举例:

impdp scott/test dumpfile=scott.dmp directory=dump_dir

TRANSPORT_DATAFILES=/export/home/oradata/dbtest_01.dbf

TABLESPACES  * 

该选项用于标识要导入的表空间的列表。

参数举例:

TABLESPACES=user01

应用举例:

impdp scott/test  dumpfile=tablespace.dmp  directory=dump_dir

TABLESPACES=user01

猜你喜欢

转载自whxhz.iteye.com/blog/1954433
今日推荐