服务器上以sys或system超级管理员登录。
SQL>create directory expdp_dir as '/home/oracle/dmpdata';(dmpdata 需要建立、赋予目录权限)
SQL>grant read,write on directory expdp_dir to hwifi;(数据库username)
导出表中的部分记录(query):
expdp hwifi/123456 dumpfile=test.dmp directory=expdp_dir tables = wifi_info query=wifi_device_info:' "where show_date <= 20121010 "'
注意:有单引号包含双引号
 
 
导出多个表(tables):
expdp hwifi/123456 dumpfile=test.dmp directory=expdp_dir tables = DATES, DIM_CITY_PROVINCE, DIM_DOMAIN_TYPE job_name=my_job
1 table_exists_action参数说明

1)  skip:跳过,默认操作

2)  replace:先drop表,然后创建表,最后插入数据

3)  append:在原来数据的基础上增加数据

4)  truncate:先truncate,然后再插入数据

其他的对象(序列,存储过程,type。。。),这些是在泵导入的最后阶段create的,一般impdp后要重新编译无效的对象

1. 创建目录

使用数据泵之前,需要创建一个存放文件的目录。 这个目录要写入Oracle的数据字典中才能识别。

(1)先查看一下已经存在的目录:

SQL> col owner format a5

SQL> col directory_name format a25

SQL> select * from dba_directories;

OWNER DIRECTORY_NAME            DIRECTORY_PATH

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

SYS   BACKUP                    /u01/backup

(2)把我们把backup 这个目录删除掉,在重新创建一下

SQL> drop directory backup;

Directory dropped.

SQL> select * from dba_directories;

SQL> create directory backup as '/u01/backup';

Directory created.

SQL> select * from dba_directories;

OWNER DIRECTORY_NAME            DIRECTORY_PATH

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

SYS   BACKUP                    /u01/backup

(3)注意事项:

我这里是使用sys用户来进行操作的。 如果是其他用户,那么就需要对这个用户进行赋权。

SQL> grant create any directory to system;

Grant succeeded.

SQL> select * from dba_sys_privs where grantee='SYSTEM';

grantee        privilege                       adm

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

system        create any directory             no

system       global query rewrite              no

system       create materialized view          no

system       create table                     no

system       unlimited tablespace             yes

system       select any table                  no

如果是其他用户使用sys创建的目录,也需要进行赋权,如:

SQL> grant read,write on directory backup to SYSTEM;

Grant succeeded.

3. 开始测试

3.1 FULL=Y全库导出

(1)不指定Job_name

[oracle@qs-dmm-rh2 ~]$ expdp /'/ as sysdba/' directory=backup full=y dumpfile=fullexp.dmp logfile=fullexp.log parallel=2;

-- 注意使用sys 的格式,还有full=y 导出的是非sys和system用户的对象。

Export: Release 10.2.0.4.0 - Production on Friday, 18 March, 2011 15:05:54

Copyright (c) 2003, 2007, Oracle.  All rights reserved.

Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - Production

With the Partitioning, OLAP, Data Mining and Real Application Testing options

Starting "SYS"."SYS_EXPORT_FULL_02":  '/******** AS SYSDBA' directory=backup full=y dumpfile=fullexp.dmp logfile=fullexp.log parallel=2

Estimate in progress using BLOCKS method...

Processing object type DATABASE_EXPORT/SCHEMA/TABLE/TABLE_DATA

Total estimation using BLOCKS method: 18.68 MB

……

……

Master table "SYS"."SYS_EXPORT_FULL_02" successfully loaded/unloaded

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

Dump file set for SYS.SYS_EXPORT_FULL_02 is:

/u01/backup/fullexp.dmp

Job "SYS"."SYS_EXPORT_FULL_02" successfully completed at 15:07:27

expdp/impd 是Job形式的,会调用DBMS_DATAPUMP PL/SQL包,这个API提供高速的导出导入功能;还有DBMS_METADATA PL/SQL包,这个包是将metadata(对象定义)存储在XML里。 所有的进程都能load 和unload 这些metadata。

在备份期间,会自动的生成一张与Job_name 相同名称的表, 该表在备份期间保存metadata数据。 当备份技术后,自动删除该表。

我们可以使用SQL:

SQL>select *  FROM dba_datapump_jobs

查看Job 的信息。 如果意外情况导致备份Job失败,那么对应保存metadata的表,还是会存在。 这个时候,如果查询dba_datapump_jobs,会显示该Job为not running。 这时候,我们只需要drop 掉对应的表,在查询dba_datapump_jobs。 就没有记录了。 这个也是一种处理方法。

在开始我就说了,这里没有指定Job name。 所以系统自动给我们生成了一个:SYS_EXPORT_FULL_02。

默认是从SYS_EXPORT_FULL_01开始,因为我之前有一个没有运行的Job,所以这里从2开始了。

(2)指定Job_name

[oracle@qs-dmm-rh2 ~]$ expdp /'/ as sysdba/' directory=backup full=y dumpfile=fullexp3.dmp logfile=fullexp3.log parallel=2 job_name=daveJob;

--在这里我指定了Job_name

Export: Release 10.2.0.4.0 - Production on Friday, 18 March, 2011 15:29:56

Copyright (c) 2003, 2007, Oracle.  All rights reserved.

Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - Production

With the Partitioning, OLAP, Data Mining and Real Application Testing options

Starting "SYS"."DAVEJOB":  '/******** AS SYSDBA' directory=backup full=y dumpfile=fullexp3.dmp logfile=fullexp3.log parallel=2 job_name=daveJob

Estimate in progress using BLOCKS method...

Processing object type DATABASE_EXPORT/SCHEMA/TABLE/TABLE_DATA

Total estimation using BLOCKS method: 18.68 MB

……

……

……

Master table "SYS"."DAVEJOB" successfully loaded/unloaded

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

Dump file set for SYS.DAVEJOB is:

/u01/backup/fullexp3.dmp

Job "SYS"."DAVEJOB" successfully completed at 15:31:06

3.2 全库导入

[oracle@qs-dmm-rh2 archivelog]$ impdp /'/ as sysdba/' directory=backup full=y dumpfile=fullexp3.dmp logfile=fullexp3.log parallel=2 job_name=daveJob table_exists_action=replace;

注意: 导入的过程会生成归档日志,所以,如果是Data Guard 环境,只需要导入主库就可以了。

3.3  导出表

$ expdp  /'/ as sysdba/' directory=backup dumpfile=table.dmp logfile=table.log tables=dave.dave,dave.dba;

注意: 这里必须是同一个schema下的表

或者:

$expdp  dave/dave directory=backup dumpfile=table.dmp logfile=table.log tables=dave, dba;

3.4 导入表

$impdp dave/dave directory=backup dumpfile=table.dmp logfile=table.log tables=dave,dba;

3.5 导出用户

$ expdp  /'/ as sysdba/' directory=backup dumpfile=user.dmp logfile=user.log schemas=dave,bl;

这里是同时导出多个用户

3.6 导入用户

$ impdp  /'/ as sysdba/' directory=backup dumpfile=user.dmp logfile=user.log schemas=dave,bl table_exists_action=replace;

3.7 导出表空间

$ expdp  /'/ as sysdba/' directory=backup dumpfile=tbs.dmp logfile=tbs.log tablespaces=dave,bl;

--同时导出2个表空间

3.8 导入表空间

$ impdp  /'/ as sysdba/' directory=backup dumpfile=user.dmp logfile=user.log tablespaces=dave table_exists_action=replace;

--导入一个表空间

$ impdp  /'/ as sysdba/' directory=backup dumpfile=user.dmp logfile=user.log tablespaces=dave,bl table_exists_action=replace;

--导入2个表空间

3.9  REMAP_SCHEMA

该选项用于将源方案的所有对象装载到目标方案中.  我们导出dave 用户下的表,然后把它导入bl用户下。

$ expdp  /'/ as sysdba/' directory=backup dumpfile=user.dmp logfile=user.log schemas=dave;

$ impdp  /'/ as sysdba/' directory=backup dumpfile=user.dmp logfile=user.log remap_schema=dave:bl;

验证一下:

SQL> conn bl/bl;

Connected.

SQL> select count(*) from dave;

COUNT(*)

----------

10

3.10  REMAP_TABLESPACE

将源表空间的所有对象导入到目标表空间中,我们将dave表空间下的对象导入到bl表空间下。

$ expdp  /'/ as sysdba/' directory=backup dumpfile=tbs.dmp logfile=tbs.log tablespaces=dave;

$ impdp  /'/ as sysdba/' directory=backup dumpfile=user.dmp logfile=user.log remap_tablespace=dave:bl table_exists_action=replace;

3.11  REMAP_DATAFILE

该全库导出时有用,用于将源数据文件名转变为目标数据文件名,在不同平台之间搬移表空间时可能需要该选项。比如把db从unix导入到win下,全库导出时里面有create tablespace的语法,这样就有datafile的语法,里面就有路径,导入到win时创建tablespace时的路径就不能是unix下的路径了,此时可以通过该参数remap一下路径:

remap_datafile=/oradata/orcl/dave01.dbf:e:/oradata/orcl/dave01.dbf

全库导出:

$expdp /'/ as sysdba/' directory=backup full=y dumpfile=fullexp3.dmp logfile=fullexp3.log parallel=2 job_name=daveJob;

全库导入:

$impdp  /'/ as sysdba/' directory=backup dumpfile=fullexp3.dmp logfile=tbs.log full=y remap_datafile='/u01/app/Oracle/oradata/dave/dave01.dbf':'/u01/app/oracle/oradata/dave/tianlesoftware01.dbf';

如果这里的remap 文件比较多,可以把这部分单独拿出来,放到一个文件里。

$impdp  /'/ as sysdba/' directory=backup dumpfile=fullexp3.dmp logfile=tbs.log full=y parfile=payroll.par

payroll.par 内容:

remap_datafile='/oradata/orcl/system01.dbf':'/u01/oradata/orcl/system01.dbf'

remap_datafile='/oradata/orcl/sysaux01.dbf':'/u01/oradata/orcl/sysaux01.dbf'

remap_datafile='/oradata/orcl/undotbs4.dbf':'/u01/oradata/orcl/undotbs4.dbf'

remap_datafile='/oradata/orcl/test02.dbf':'/u01/oradata/orcl/test02.dbf'

如果是windows系统,需要加双引号:

remap_datafile="'d:/orcl/system01.dbf':'e:/orcl/system01.dbf'"

3.12  TRANSPORT_DATAFILES

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

这种方法的操作步骤如下:

(1)将表空间改成read only 状态,然后copy 待传输的表空间的所有数据文件到目标库。 这里可以进行重命名。

SQL> alter tablespace dave read only;

(2)按transport 方式导出表空间。如:

expdp directory=backup dumpfile=tts.dmp transport_tablespaces=dave

注意:这步操作只把metadata,即元数据,只有定义,没有data导入了dump文件。 实际的data 我们在第一步已经copy 过去了。

(3)import 我们的数据。 如:

impdp hr directory=dpump_dir1 dumpfile=tts.dmp transport_datafiles='/user01/data/workers.dat'

(4)将表空间改成read write:

SQL>alter tablespace dave read write ;

SQL>select * from dba_tablespaces ;
       SQL>select * from dba_data_files ;

元数据(metadata)从我们的dump文件导入,Data Pump将实际的data从我们指定的workers.dat 导入。 这里必须写绝对路劲。

我们看个实例:

(1)先对表空间Dave 添加一个数据文件:

SQL> alter tablespace dave add datafile '/u01/dave02.dbf' size 20m;

Tablespace altered.

(2)copy 到其他实例的对应位置

在移动之前先将表空间改成read only 状态:

SQL> alter tablespace dave read only;

将表空间下的所有数据文件移动到其他的实例上。可以进行重命令。 我这里是同一个实例。 因为我这里是一个实例。 我将我们刚才添加的数据文件dave02.dbf 移动到/u01/app/oracle/oradata/dave下。 待expdp 完成后,我们将表空间drop掉,在import进来。

$ cp /u01/dave02.dbf /u01/app/oracle/oradata/dave/bl02.dbf

将dave01.dbf 复制成bl03.dbf. 等会删除表空间,不然会被删除掉。

$ cp dave01.dbf bl03.dbf

(3)expdp 导出元数据

$expdp /'/ as sysdba /' directory=backup dumpfile=tts.dmp transport_tablespaces=dave

(4)import 数据

先把表空间drop掉在import:

SQL> drop tablespace dave including contents and datafiles;

Tablespace dropped.

$ impdp /'/ as sysdba /' directory=backup dumpfile=tts.dmp transport_datafiles='/u01/app/oracle/oradata/dave/bl02.dbf', '/u01/app/oracle/oradata/dave/bl03.dbf'

注意一点: 这里transport 的表空间,在另一个实例上是不可以存在的。 不然不能导入。

如果文件很多,也可以写入个配置文件里。 导入时通过PARFILE参数来指定。

(5)将表空间改成read write模式:

SQL> select tablespace_name,status from dba_tablespaces;

TABLESPACE_NAME                STATUS

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

SYSTEM                         ONLINE

UNDOTBS1                       ONLINE

SYSAUX                         ONLINE

TEMP                           ONLINE

USERS                          ONLINE

DAVE                           READ ONLY

BL                             ONLINE

7 rows selected.

SQL> alter tablespace dave read write;

Tablespace altered.

SQL> select tablespace_name,status from dba_tablespaces;

TABLESPACE_NAME                STATUS

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

SYSTEM                         ONLINE

UNDOTBS1                       ONLINE

SYSAUX                         ONLINE

TEMP                           ONLINE

USERS                          ONLINE

DAVE                           ONLINE

BL                             ONLINE

7 rows selected.

transport_datafiles 注意的几点:

(1)表空间所有的数据文件都要copy到目标库。

(2)copy 之间,将表空间改成read only 状态。

(3)copy之后可以对数据文件进行重命名。 所以,transport_datafiles 也可以用来对数据文件进行重命名和移动位置。

(4)transport_datafiles 完成之后,不要忘记将表空间改成读写模式。

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

截取于http://junmail.javaeye.com/blog/215780

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

c:\expdp test/test@acf directory=dpdata dumpfile=full.dmp full=y job_name=expfull

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

在Oracle 10中,由于EXPDP是数据库内部定义的任务,已经与客户端无关。退出交互之后,会进入export的命令行模式,此时支持status等查看命令:

Export> status

如果想停止改任务,可以发出stop_job命令

Export> stop_job

接下来可以通过命令行再次连接到这个任务

c:\expdp test/test@acf attach=expfull(此处填写作业名称)

通过start_job命令重新启动导出

Export> start_job

转载于:https://www.cnblogs.com/shengs/p/4789503.html

ORACLE expdp/impdp导出实例相关推荐

  1. Oracle expdp/impdp导出导入命令及数据库备份

    经常报错: ORA-39002: invalid operation ORA-39070: Unable to open the log file. ORA-29283: invalid file o ...

  2. Oracle expdp impdp导出导入命令及数据库备份

    使用EXPDP和IMPDP时应该注意的事项: EXP和IMP是客户端工具程序,它们既可以在客户端使用,也可以在服务端使用. EXPDP和IMPDP是服务端的工具程序,他们只能在ORACLE服务端使用, ...

  3. oracle命令导入expdp,Oracle expdp/impdp导出导入命令及数据库备份

    @H_404_1@使用EXPDP和IMPDP时应该注意的事项: EXP和IMP是客户端工具程序,它们既可以在客户端使用,也可以在服务端使用. EXPDP和IMPDP是服务端的工具程序,他们只能在ORA ...

  4. oracle导入导出版本规则,oracle expdp impdp 导出导入(支持高版本到低版本)

    在plsql或sqlplus中创建目录: create or replace directory dmp11g as '/home/oracle/dmps3'; grant read,write on ...

  5. oracle中imp命令详解,ORACLE EXPDP IMPDP数据导入导出命令详解及同EXP IMP命令详细对照...

    ORACLE EXPDP IMPDP数据导入导出命令详解及同EXP IMP 命令详细对比 一.EXPDP IMPDP EXP IMP 可以实现 1.可以实现逻辑备份和逻辑恢复 2.可以在数据库用户之间 ...

  6. oracle impdp使用,Oracle expdp / impdp 用法详解

    一  关于expdp和impdp     使用EXPDP和IMPDP时应该注意的事项: EXP和IMP是客户端工具程序,它们既能够在客户端使用,也能够在服务端使用. EXPDP和IMPDP是服务端的工 ...

  7. ORACLE expdp/impdp详解

    ORCALE10G提供了新的导入导出工具,数据泵. Oracle官方对此的形容是:Oracle DataPump technology enables Very High-Speed movement ...

  8. zbb20170824 oracle expdp/impdp 导入导出数据

    databasebackup.sh #! /bin/bash#数据库备份echo '###################################################'`date ...

  9. oracle expdp导出教程,Oracle Expdp Impdp 数据泵导入导出

    新建逻辑目录 Oracle不会自动创建实际的物理目录"D:\temp"(务必手动创建此目录),仅仅是进行定义逻辑路径dmp_dir: sql> conn username/p ...

最新文章

  1. 上拉加载下拉刷新了解下
  2. 图解YU12、I420、YV12、NV12、NV21、YUV420P、YUV420SP、YUV422P、YUV444P的区别
  3. Netty专题-(2)NIO三大核心
  4. 装配bean的三种方式
  5. [Luogu1890]gcd区间
  6. 使用异步任务加载网络上的图片
  7. kubenetes 1.4 修改kubelet启动参数修改方法
  8. dlna 斐讯r1怎么用_挽救智障——斐讯R1:固件升级、安装DLNA和Soundwire
  9. smarty3.1.30 模板引擎的使用
  10. python爬虫百度地图_Python抓取百度地图的数据
  11. NMOS和PMOS电流流向以及导通条件
  12. 关于VLAN-tag
  13. 爬虫学习笔记1——爬取糗百段子
  14. Python OCR识别图片
  15. Elsa-审批流实现
  16. MongoDB分片集群部署(三)
  17. 计算机CPU像人的大脑,人脑与电脑的相似性与差异性及全球脑
  18. 对贴片陶瓷电容材料的区分
  19. 上传附件格式限制与内容校验
  20. oppok3如何刷机_[oppok3刷机教程]oppok3怎么刷机

热门文章

  1. latex 跳转标签_LaTeX技巧933: 在macOS上配置VSCode与Skim的LaTeX正反跳转
  2. 20190907:(leetcode习题)打家劫舍
  3. 20190812:两个数组的交集ⅠⅡ
  4. vim 配置_一步步配置VIM(3)-与latex结合
  5. 数据特征处理pca降维-小结
  6. redis主线程阻塞的情形
  7. AlertDialog源码解析之一
  8. 【引用】将整数转化为十进制字符串的函数Convert integer to Decimal string
  9. 国内NLP领域单轮融资新纪录,达观数据获1.6亿元B轮投资
  10. 特斯拉首个中国工厂落户上海临港