当前位置:  数据库>oracle

Oracle expdp/impdp 使用示例

    来源: 互联网  发布时间:2017-04-11

    本文导语:  Linux公社介绍过的 Oracle 10g Data Pump Expdp/Impdp 详解 exp/imp 与 expdp/impdp 对比 及使用中的一些优化事项 中对数据泵这块的理论知识有一些说明,但是没有实际操作的例子。 所以在这里就对expdp/impdp 的使用做一些测试。   1. 创建目...

Linux公社介绍过的

Oracle 10g Data Pump Expdp/Impdp 详解

exp/imp 与 expdp/impdp 对比 及使用中的一些优化事项

中对数据泵这块的理论知识有一些说明,但是没有实际操作的例子。 所以在这里就对expdp/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.

 

 

2. 创建测试数据

       我们需要演示expdp/impdp的一些功能,所以需要创建2个用户和对应的表空间,并且创建一些测试的数据。 SQL 代码如下:

 

SQL> create tablespace dave datafile '/u01/app/oracle/oradata/dave/dave01.dbf' size 50m;

SQL> create tablespace bl datafile '/u01/app/oracle/oradata/dave/bl01.dbf' size 50m;

SQL> create user dave identified by dave default tablespace dave temporary tablespace temp;

SQL> create user bl identified by bl default tablespace bl temporary tablespace temp;

SQL> grant read,write on directory backup to dave,bl;

SQL> grant connect,resource to dave,bl;

 

 

SQL> conn dave/dave;

Connected.

SQL> create table dave(id number,name varchar2(10));

Table created.

SQL> begin

  2  for i in 1 .. 10 loop

  3  insert into dave values(i,'dave');

  4  end loop;

  5  end;

  6  /

PL/SQL procedure successfully completed.

SQL> commit;

Commit complete.

SQL> select * from dave;

        ID NAME

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

         1 dave

         2 dave

         3 dave

         4 dave

         5 dave

         6 dave

         7 dave

         8 dave

         9 dave

        10 dave

10 rows selected.

 

SQL> conn bl/bl;

Connected.

SQL> create table bl(id number,name varchar2(10));

 

Table created.

 

SQL> begin

  2  for i in 10 .. 20 loop

  3  insert into bl values(i,'bl');

  4  end loop;

  5  commit;

  6  end;

  7  /

 

PL/SQL procedure successfully completed.

 

SQL> select * from bl;

 

        ID NAME

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

        10 bl

        11 bl

        12 bl

        13 bl

        14 bl

        15 bl

        16 bl

        17 bl

        18 bl

        19 bl

        20 bl

 

11 rows selected.

 

 

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


    
 
 

您可能感兴趣的文章:

  • oracle while的用法示例分享
  • Oracle 使用Java Source 简单示例
  • ORACLE 毫秒与日期的相互转换示例
  • java使用jdbc链接Oracle示例类分享
  • Oracle数据库安装配置示例
  • java操作oracle数据库示例
  • Oracle数据库安装配置流程示例详细解析
  • oracle表空间中空表统计方法示例介绍
  • oracle创建删除用户示例分享(oracle删除用户命令及授权)
  • 数据库查询排序使用随机排序结果示例(Oracle/MySQL/MS SQL Server)
  • Oracle层次查询和with函数的使用示例
  • php连接oracle数据库的示例代码
  • ORACLE实现字段自增示例说明
  • SqlServer实现类似Oracle的before触发器示例
  • oracle截取字符(substr)检索字符位置(instr)示例介绍
  • Oracle外键不加索引引起死锁示例
  • Oracle定义DES加密解密及MD5加密函数示例
  • Oracle数据库密码重置、导入导出库命令示例应用
  • 浙ICP备11055608号-3 iis7站长之家
  • oracle comment命令用法示例分享
  • linux下安装oracle后使用命令行启动的方法 linux启动oracle
  • Oracle9i 9.0.1的JDBC Drivers 可以给Oracle 8.0.5使用马?
  • Suse linux使用oracle问题
  • 请问:在使用oracle数据库作开发时,是使用pro*c作开发好些,还是使用库函数如oci等好一些啊?或者它们有什么区别或者优缺点啊?
  • jbuilder中使用oracle的问题
  • 求redhat linux 9.0下可以使用的oracle 10g或9i,还有redhat linux 9.0下可以使用的eclipse下载地址
  • Oracle事务!使用游标提交过程
  • 在Jbuilder7下,使用DbPilot.exe连接oracle,报错!请教高手!
  • AIX 64位系统上如何使用32位OCI oracle driver
  • Oracle中SQL语句连接字符串的符号使用介绍
  • 使用X manager连接oracle数据库的步骤
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 基于oracle expdp命令的使用详解
  • Oracle 12c发布简单介绍及官方下载地址
  • 在linux下安装oracle,如何设置让oracle自动启动!也就是让oracle那个服务自动启动,不是手动的
  • oracle 11g最新版官方下载地址
  • 请问su oracle 和su - oracle有什么不同?
  • Oracle 数据库(oracle Database)Select 多表关联查询方式
  • 虚拟机装Oracle R12与Oracle10g
  • Oracle数据库(Oracle Database)体系结构及基本组成介绍
  • Oracle 数据库开发工具 Oracle SQL Developer
  • 如何设置让Oracle SQL Developer显示的时间包含时分秒
  • Oracle EBS R12 支持 Oracle Database 11g
  • Oracle 10g和Oracle 11g网格技术介绍
  • SCO unix下安装oracle,但没有光盘,请大家推荐一个oracle下载站点(unix版本的)。谢谢!!!!
  • oracle中如何把表中具有相同值列的多行数据合并成一行
  • 请问大家用oracle数据库, 用import oracle.*;下的东西么? 还是用标准库?
  • Oracle 数据库(oracle Database)性能调优技术详解
  • Linux /$ORACLE_HOME $ORACLE_HOME
  • ORACLE日期相关操作
  • Linux系统下Oracle的启动与Oracle监听的启动
  • ORACLE数据库常用字段数据类型介绍
  • 请问在solaris下安装ORACLE,用root用户和用oracle用户安装有什么区别么?
  • Oracle 12c的九大最新技术特性介绍
  • 网间Oracle的连接,远程连接Oracle服务器??


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3