`
liuzhaomin
  • 浏览: 204327 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

Oracle数据泵

阅读更多

1.You must have the <CREATE ANY DIRECTORY >privilege to create directory objects.

 

SQL> grant create any directory to scott;

Grant succeeded.

SQL> conn scott/tiger

Connected.

SQL> create directory dit as  '/u01/app/oracle/Disk1/';

Directory created.

 

2. <transport tablespace>

source:

SQL> alter tablespace wo read only;

 

SQL> select * from dba_directories;

 

SQL> ho expdp directory=DPUMP_DIR1 dumpfile=wo.dmp transport_tablespaces=wo 

 

 

[oracle@emrep pod]$ scp wo.dbf 10.1.1.57:$ORACLE_BASE/oradata/ocm/

 

[oracle@emrep Disk1]$ scp wo.dmp 10.1.1.57:$ORACLE_BASE/oradata/ocm/

 

destination:

SQL> create directory dir as '/oracle/oradata/ocm';

SQL> ho impdp dumpfile=dir:wo.dmp TRANSPORT_DATAFILES='$ORACLE_BASE/oradata/ocm/wo.dbf' 

 

逻辑备份工具----数据泵

使用专用的API导入导出数据,速度快

EXPDP只能用于服务器端,而不能用于客户端

 

一,导出,导入表

C:\Users\solo>sqlplus  "/ as sysdba"

SQL> create directory dump_dir as 'c:\bak\dump';

 

SQL> grant read,write on directory dump_dir to scott;

 

SQL> SELECT * FROM dba_directories;

 

expdp scott/tiger directory=dump_dir dumpfile=dumptab.dmp logfile=scott.log tables=det,emp

 

 

SQL>drop table scott. emp;

 

 

impdp  scott/scott directory=dump_dir dumpfile=dumptab.dmp tables=emp

 

 

二,导出方案

C:\Users\solo>expdp scott/scott directory=dump_dir dumpfile=dumpscott.dmp schemas=scott

 

三,导出表空间

C:\Users\solo>expdp scott/scott tablespaces=users directory=dump_dir dumpfile=users.dmp

 

四,导出整个数据库

C:\Users\solo>expdp system/jiaohua directory=dump_dir dumpfile=full.dmp full=y

 

 

注意:普通用户做全库导出,需要有这个权限:

SQL> grant exp_full_database to scott;

 

 

五,并行导出

设置PARALLEL可以并行导出,导出时每个线程创建一个单独的导出文件,因此选项dumpfile应该拥有和并行线程一样多的文件

-----拥有一个通配符%U ,他指定了新创建的文件名格式为full23_xx.dmp ,其中xx从01开始,按02,03一次增加

 

C:\Users\solo>expdp system/jiaohua full=y directory=dump_dir dumpfile=full23_%u.dmp parallel=4

 

 

 

关于这个选项,有4个参数,分别为 skip、append、truncate、replace

skip 是如果已存在表,则跳过并处理下一个对象;

append是保留原有数据,增加增量数据;

truncate是截断表,然后为其增加新数据;

replace是删除已存在表,重新建表并追加数据。

 

 

 

eg: 

1.将表从e用户导入到system用户下:

 

expdp  e/e directory=dump_e dumpfile=a1.dmp tables=t 

 

 

方法一:

impdp  system/oracle tables=scott.emp directory=dump_dir dumpfile=e.dmp remap_schema=scott:system

 

方法二:sql>grant imp_full_database to e;

 

impdp e/e  directory=dump_e dumpfile=a1.dmp tables=t  remap_schema=e:system table_exists_action=replace

 

2.将e方案下的内容导入到system用户下:

 

expdp e/e  directory=dump_e dumpfile=a2.dmp  schemas=e 

 

impdp e/e  directory=dump_e dumpfile=a2.dmp  remap_schema=e:system  table_exists_action=replace

 

 

3.并行导入:

expdp e/e directory=dump_e dumpfile=a_%u.dmp schemas=e parallel=3

 

impdp e/e directory=dump_e dumpfile=a_%u.dmp schemas=e parallel=3 table_exists_action=replace

 

 

 

 

查询目录:dba_directories

 

datapump是服务器端的JOB,所以可以在执行datapump以后,通过EXIT_CLIENT退出客户端。通过DBA_DATAPUMP_JOBS视图可以检查datapump作业的情况,也可以利用ATTACH重新连接上还在进行的JOB。每个datapump可以通过JOB_NAME参数指定名称,如果不指定,那么会有默认的名称,比如上贴中的例子,名称就是SYS_EXPORT_TABLE_01,通过V$SESSION_LONGOPS也可以查看长时间运行的datapump job的具体内容。

 

SQL> select * from dba_datapump_jobs;

 

OWNER_NAME                     JOB_NAME

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

OPERATION

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

JOB_MODE

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

STATE                              DEGREE ATTACHED_SESSIONS DATAPU

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

SCOTT                          SYS_IMPORT_SCHEMA_01

IMPORT

SCHEMA

EXECUTING                               3                 1

 

 

 

 

前台进程的会话 SID:

select sid, serial#

from v$session s, dba_datapump_sessions d

where s.saddr = d.saddr;

 

这条指令显示前台进程的会话。更多有用的信息可以从警报日志中获得:

kupprdp: worker process DW01 started with worker id=1, pid=26, OS id=2900

         to execute - SYS.KUPW$WORKER.MAIN('SYS_IMPORT_SCHEMA_01', 'SCOTT');

kupprdp: worker process DW02 started with worker id=2, pid=27, OS id=3596

         to execute - SYS.KUPW$WORKER.MAIN('SYS_IMPORT_SCHEMA_01', 'SCOTT');

Sat Apr 03 12:02:47 2010

The value (30) of MAXTRANS parameter ignored.

kupprdp: master process DM00 started with pid=22, OS id=732

         to execute - SYS.KUPM$MCP.MAIN('SYS_EXPORT_SCHEMA_01', 'SCOTT', 'KUPC$C_1_20100403120247', 'KUPC$S_1_20100403120247', 0);

 

它显示为数据泵操作启动的会话的 PID。您可以用以下查询找到实际的 SID: 

select sid, program from v$session where paddr in 

(select addr from v$process where pid in (22,23)); 

 

可以大致的监控到expdp, impdp备份进行的程度

SELECT SID, SERIAL#, CONTEXT, SOFAR, TOTALWORK,

ROUND(SOFAR/TOTALWORK*100,2) "%_COMPLETE"

FROM V$SESSION_LONGOPS

WHERE OPNAME LIKE '%EXP%'

AND TOTALWORK != 0

AND SOFAR <> TOTALWORK;

 

 

 

 

数据泵expdp参数:

 

1.content: 该选项用于指定要导出的内容.默认值为ALL

CONTENT={ALL | DATA_ONLY | METADATA_ONLY}

 

expdp scott/tiger  schemas=scott content=all

expdp scott/tiger tables=emp content=data_only directory=dump_dir dumpfile=a3.dmp(只导出对象数据)

expdp scott/tiger tables=emp content=metadata_only directory=dump_dir dumpfile=a4.dmp(只有定义信息)

 

 

2.ESTIMATE: 指定估算被导出表所占用磁盘空间分方法.默认值是BLOCKS

 

expdp scott/tiger tables=emp  directory=dump_dir dumpfile=a5.dmp estimate=statistics

 

 

.  预计为 "SCOTT"."EMP"                               8.140 KB

使用 STATISTICS 方法的总估计: 8.140 KB

 

expdp scott/tiger tables=emp  directory=dump_dir dumpfile=a6.dmp estimate=blocks

 

 

.  预计为 "SCOTT"."EMP"                                  64 KB

 

3.EXTIMATE_ONLY:指定是否只估算导出作业所占用的磁盘空间,默认值为N

 

expdp scott/tiger  schemas=scott estimate_only=y  设置为Y时,导出作用只估算对象所占用的磁盘空间,而不会执行导出作业,为N时,不仅估算对象所占用的磁盘空间,还会执行导出操作.

 

Export: Release 10.2.0.1.0 - Production on 星期六, 03 4月, 2010 14:48:39

 

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

 

连接到: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production

With the Partitioning, OLAP and Data Mining options

启动 "SCOTT"."SYS_EXPORT_SCHEMA_02":  scott/******** schemas=scott estimate_only

=y

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

处理对象类型 SCHEMA_EXPORT/TABLE/TABLE_DATA

.  预计为 "SCOTT"."SYS_EXPORT_SCHEMA_01"                192 KB

.  预计为 "SCOTT"."DEPT"                                 64 KB

.  预计为 "SCOTT"."EMP"                                  64 KB

.  预计为 "SCOTT"."SALGRADE"                             64 KB

.  预计为 "SCOTT"."TEST"                                 64 KB

.  预计为 "SCOTT"."BONUS"                                 0 KB

.  预计为 "SCOTT"."MLOG$_EMP"                             0 KB

.  预计为 "SCOTT"."PARTS"                                 0 KB

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

 

 

 

 

4.EXCLUDE:该选项用于指定执行操作时释放要排除对象类型或相关对象

Object_type用于指定要排除的对象类型,name_clause用于指定要排除的具体对象.EXCLUDE和INCLUDE不能同时使用

expdp scott/tiger  schemas=scott  exclude=view dumpfile=a9.dmp

 

 

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

 

 

6.flashback_scn: 前提闪回功能开启

 

expdp scott/tiger  tables=emp dumpfile=e2.dmp  flashback_scn=4284715 ---->如果闪回的时间点该对象结构发生变化,将报错(比如该对象没有创建或者ddl操作)

 

ORA-31693: 表数据对象 "SCOTT"."EMP" 无法加载/卸载并且被跳过, 错误如下:

ORA-02354: 导出/导入数据时出错

ORA-01466: 无法读取数据 - 表定义已更改

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

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

SCOTT.SYS_EXPORT_TABLE_01 的转储文件集为:

  C:\ADMIN\SOLO\DPDUMP\E2.DMP

作业 "SCOTT"."SYS_EXPORT_TABLE_01" 已经完成, 但是有 1 个错误 (于 15:21:36 完成)

 

 

7.FLASHBACK_TIME:指定导出特定时间点的表数据

 

expdp scott/tiger DIRECTORY=dump DUMPFILE=a.dmp FLASHBACK_TIME="TO_TIMESTAMP(’25-08-2004 14:35:00’,’DD-MM-YYYY HH24:MI:SS’)"

 

 

windows下:

C:\Documents and Settings\Administrator>expdp scott/tiger DIRECTORY=dump_dir DUMPFILE=a.dmp flashback_time=\"TO_TIMESTAMP('06-04-2010 11:24:26', 'DD-MM-YYYY HH24:MI:SS')\"

 

数据泵impdp参数:

1,REMAP_DATAFILE

 

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

 

REMAP_DATAFIEL=source_datafie:target_datafile

 

2,REMAP_SCHEMA

 

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

 

REMAP_SCHEMA=source_schema:target_schema

 

3,REMAP_TABLESPACE

 

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

 

REMAP_TABLESPACE=source_tablespace:target:tablespace

 

4.REUSE_DATAFILES

 

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

 

REUSE_DATAFIELS={Y | N}

 

5.SKIP_UNUSABLE_INDEXES

 

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

 

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

impdp scott/tiger directory=dump_dir dumpfile=a1.dmp sqlfile=c.sql (默认放在directory下,因此不要指定绝对路径)

 

7.STREAMS_CONFIGURATION

 

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

 

8,TABLE_EXISTS_ACTION

 

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

 

TABBLE_EXISTS_ACTION={SKIP | APPEND | TRUNCATE | FRPLACE }

 

当设置该选项为SKIP时,导入作业会跳过已存在表处理下一个对象;当设置为APPEND时,会追加数据,为TRUNCATE时,导入作业会截断表,然后为其追加新数据;当设置为REPLACE时,导入作业会删除已存在表,重建表病追加数据,注意,TRUNCATE选项不适用与簇表和NETWORK_LINK选项

 

9.TRANSFORM

 

该选项用于指定是否修改建立对象的DDL语句

 

TRANSFORM=transform_name:value[:object_type]

 

Transform_name用于指定转换名,其中SEGMENT_ATTRIBUTES用于标识段属性(物理属性,存储属性,表空间,日志等信息),STORAGE用于标识段存储属性,VALUE用于指定是否包含段属性或段存储属性,object_type用于指定对象类型.

 

Impdp scott/tiger directory=dump dumpfile=tab.dmp

 

Transform=segment_attributes:n:table

 

10.TRANSPORT_DATAFILES

 

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

 

TRANSPORT_DATAFILE=datafile_name

 

Datafile_name用于指定被复制到目标数据库的数据文件

 

Impdp system/manager DIRECTORY=dump DUMPFILE=tts.dmp

 

TRANSPORT_DATAFILES=’/user01/data/tbs1.f’

 

 

调用IMPDP

 

1, 导入表

 

Impdp scott/tiger DIRECTORY=dump_dir DUMPFILE=tab.dmp TABLES=dept,emp

 

 

Impdp system/manage DIRECTORY=dump_dir DUMPFILE=tab.dmp TABLES=scott.dept,scott.emp REMAP_SCHEMA=SCOTT:SYSTEM

 

第一种方法表示将DEPT和EMP表导入到SCOTT方案中,第二种方法表示将DEPT和EMP表导入的SYSTEM方案中.

 

注意,如果要将表导入到其他方案中,必须指定REMAP SCHEMA选项.

 

 

2,导入方案

 

Impdp scott/tiger DIRECTORY=dump_dir DUMPFILE=schema.dmp SCHEMAS=scott

 

 

Impdp system/manager DIRECTORY=dump_dir DUMPFILE=schema.dmp SCHEMAS=scott REMAP_SCHEMA=scott:system

 

3,导入表空间

 

Impdp system/manager DIRECTORY=dump_dir DUMPFILE=tablespace.dmp TABLESPACES=user01

 

4,导入数据库

 

Impdp system/manager DIRECTORY=dump_dir DUMPFILE=full.dmp FULL=y

 

 

<常见错误>

一.ORA-39006: Metadata processing is not available

 

方法一:

Cause: The Data Pump could not use the Metadata API. Typically, this is caused by the XSL stylesheets not being set up properly.

Action: Connect AS SYSDBA and execute dbms_metadata_util.load_stylesheets to reload the stylesheets.

 

 

1.select  * from  dba_objects

where object_name='DBMS_DATAPUMP';

没有内容就执行以下包

2.exec sys.dbms_metadata_util.load_stylesheets

 

 

方法二:

ORA-39006: internal error

ORA-39065: unexpected master process exception in DISPATCH

ORA-00942: table or view does not exist

ORA-39097: Data Pump job encountered unexpected error -942

 

 

ACTION PLAN

===========

1. 

@$ORACLE_HOME/rdbms/admin/catdph.sql

@$ORACLE_HOME/rdbms/admin/prvtdtde.plb

@$ORACLE_HOME/rdbms/admin/catdpb.sql

@$ORACLE_HOME/rdbms/admin/dbmspump.sql

@$ORACLE_HOME/rdbms/admin/utlrp.sql

 

 

 

 

二.ORA-31626: job does not exist

 

ORA-31637: cannot create job SYS_EXPORT_SCHEMA_01 for user SYSTEM

 

ORA-06512: at "SYS.DBMS_SYS_ERROR", line 95

 

ORA-06512: at "SYS.KUPV$FT_INT", line 600

 

ORA-39080: failed to create queues "KUPC$C_1_20071025205651" and "KUPC$S_1_20071025205651" for Data Pump job

 

ORA-06512: at "SYS.DBMS_SYS_ERROR", line 95

 

ORA-06512: at "SYS.KUPC$QUE_INT", line 1555

 

ORA-00832: no streams pool created and cannot automatically create one

 

解决方法如下:

 

SQL> show parameter stream

 

NAME TYPE VALUE

 

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

 

streams_pool_size big integer 0

 

 

将streams_pool_size的值设置为非0,

 

SQL> alter system set streams_pool_size=10M scope=memory;

 

System altered.

 

 

 

三.ora-39139

 

ORA-39139: Data Pump does not support XMLSchema objects. TABLE_DATA:"UCS4"."RECEIVABLES_TABLE" will be skipped.

Total estimation using BLOCKS method: 0 KB

 

 

 

Tables with XML type columns are not supported until 11.1.0.6. To export that table, you need to use exp/imp not expdp/impdp.

 

分享到:
评论

相关推荐

    oracle 数据泵实战

    通过上述实践,我们可以看到Oracle数据泵在数据库管理中扮演的重要角色。无论是日常的维护工作还是特定的需求处理,数据泵都能够提供强有力的支持。希望本文能够帮助读者更好地理解和运用这一强大的工具。

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

    通过理解并掌握Oracle数据泵的这些特点和使用方法,数据库管理和开发人员可以更高效地进行数据迁移、备份和恢复,提升工作效率,同时确保数据的完整性和一致性。在实际工作中,可以根据具体需求选择合适的数据泵操作...

    Oracle 数据泵详解

    总结起来,Oracle数据泵是Oracle数据库管理中不可或缺的工具,它提供了高效、灵活的数据迁移和备份解决方案,通过理解并熟练使用EXPDP和IMPDP,数据库管理员可以更好地维护和管理Oracle数据库环境。

    oracle 数据泵导入

    本文将基于提供的文件信息,详细介绍如何利用Oracle数据泵进行数据导入,并涵盖相关的配置与操作步骤。 ### 一、环境准备 #### 1. 登录数据库 首先,需要通过SQL*Plus命令行工具登录到Oracle数据库。这里使用了两...

    oracle数据泵导入

    ### Oracle数据泵导入详解 #### 一、Oracle数据泵导入简介 Oracle数据泵(Oracle Data Pump)是Oracle数据库提供的一种高效的数据迁移工具,主要用于在Oracle数据库之间进行数据和元数据的大规模传输。它通过导出...

    oracle数据泵详解

    通过以上介绍,我们可以看出Oracle数据泵技术相比传统导出导入工具提供了更加强大、灵活的功能,并且具有更好的性能表现。这对于大型数据库的管理与维护来说非常重要。无论是日常的数据备份还是跨数据库的数据迁移,...

    oracle数据泵导出为低版本命令

    oracle数据泵导出为低版本命令。 从11g导出为10g版本,经过多次测试没有问题,而且导出速度非常快。

    Oracle数据泵简明使用手册

    ### Oracle数据泵简明使用手册知识点详解 #### 一、Oracle数据泵简介 Oracle数据泵是一种高效的工具,用于实现数据库中的数据与元数据的大规模导入导出操作。它相较于传统的`exp`和`imp`工具提供了更高的性能和更...

    ORACLE数据泵参数说明

    ORACLE 数据泵参数说明 ORACLE 数据泵是 ORACLE 数据库的逻辑备份工具,通过使用 expdp 命令可以完成数据的逻辑备份。下面将详细介绍 expdp 命令的参数说明: 1. ATTACH:该选项用于客户会话与已存在到的处作用...

    oracle数据泵的方式导入导出数据库

    ### Oracle 数据泵导入导出详解 #### 一、Oracle 数据泵简介 Oracle 数据泵是一种用于在 Oracle 数据库之间高效地移动数据的工具。它通过 `EXPDP` 和 `IMPDP` 命令来实现数据的导出和导入操作。与传统的 `EXP` 和 ...

    oracle数据泵导入导出原件bat

    本篇文章将深入探讨Oracle数据泵的使用方法,特别是在批处理(bat)文件中的应用。 首先,`bat`文件是一种批处理脚本,主要用于Windows操作系统,它允许用户一次性执行多个命令,简化重复的操作。在Oracle数据泵的...

    oracle数据泵备份

    ### Oracle 数据泵备份详解 #### 一、Oracle 数据泵备份概念与作用 Oracle 数据泵(Data Pump)是一种高效的数据迁移工具,它通过 Export 和 Import 的方式实现数据在不同数据库之间的迁移,尤其适用于大规模数据...

    oracle数据泵服务器备份

    ### Oracle 数据泵服务器备份知识点详解 #### 一、Oracle 数据泵简介 Oracle 数据泵是一种用于高效导入导出数据的强大工具,它比传统的 `EXPDP` 和 `IMPDP` 工具更加高效且易于管理。数据泵操作主要包括 `EXPDP`...

    oracle 数据泵imp exp注意事项.docx

    通过以上的详细介绍,我们了解了Oracle数据泵的基本概念、准备工作、数据导出与导入的具体步骤以及在实际工作中需要注意的关键点。这些知识点对于Oracle DBA来说非常重要,能够帮助他们在日常工作中更加高效地管理和...

    Oracle 数据泵导出和导入.docx

    Oracle 数据泵导出和导入 Oracle 数据泄导出和导入是 Oracle 10g 中引入的 DATA PUMP 技术,提供了基于服务器的数据提取和恢复的实用程序。DATA PUMP 允许您停止和重启作业,查看运行的作业的状态,及对导入和导出...

    oracle数据泵倒入导出资料--全

    oracle数据泵倒入导出资料,全面的说明了oracle导入导出的方法和方案

    oracle 数据泵详解

    oracle数据泵详解 Oracle 数据泵是 Oracle 10g 以后引入的一种数据迁移工具,可以方便我们把低版本的数据库数据向高版本的数据库迁移。下面是 Oracle 数据泵的详细介绍。 一、EXPDP 和 IMPDP 使用说明 EXPDP...

    Oracle数据泵并行导入导出.zip

    Oracle数据泵(Data Pump)是Oracle数据库系统中用于高效数据迁移和备份恢复的重要工具,它在数据导入导出过程中提供了显著的性能提升。本压缩包包含的资源将帮助你理解和运用Oracle数据泵进行并行导入导出操作,...

    ORACLE数据泵使用

    ### ORACLE数据泵使用详解 #### 一、简介 ##### 1.1 目的 本文档旨在为FMIS数据库10G或更高版本提供一套完整的数据备份与恢复方案。通过详细介绍ORACLE数据泵(Data Pump)的使用方法,帮助数据库管理员(DBA)有效...

    oracle数据库数据泵自动备份脚本

    linux下oracle数据泵备份完美解决了数据备份的完整性,这里提供大家数据泵自动备份的脚本,为各类生产环境中的数据的备份提供的较完善的解决方案

Global site tag (gtag.js) - Google Analytics