Oracle Data Pump
Oracle Data Pump
Oracle Data Pump is a newer, faster and more flexible alternative to the "exp" and "imp" utilities used in
previous Oracle versions. In addition to basic import and export functionality data pump provides a
PL/SQL API and support for external tables.
Getting Started
Table Exports/Imports
Schema Exports/Imports
Database Exports/Imports
INCLUDE and EXCLUDE
Network Exports/Imports (NETWORK_LINK)
Flashback Exports
Miscellaneous Information
Data Pump API
External Tables (Unloading/Loading Data Using External Tables)
Help
o expdp
o impdp
Related articles.
Data Pump Enhancements in Oracle Database 11g Release 1 (expdp and impdp)
Data Pump Enhancements in Oracle Database 12c Release 1 (expdp and impdp)
SQL Developer 3.1 Data Pump Wizards (expdp, impdp)
Transportable Tablespaces
Getting Started
For the examples to work we must first unlock the SCOTT account and create a directory object it can
access. The directory object is only a pointer to a physical directory, creating it does not actually create
the physical directory on the file system of the database server.
CONN / AS SYSDBA
ALTER USER scott IDENTIFIED BY tiger ACCOUNT UNLOCK;
CREATE OR REPLACE DIRECTORY test_dir AS '/u01/app/oracle/oradata/';
GRANT READ, WRITE ON DIRECTORY test_dir TO scott;
Existing directories can be queried using the ALL_DIRECTORIES view.
Note. Data Pump is a server-based technology, so it typically deals with directory objects pointing to
physical directories on the database server. It does not write to the local file system on your client PC.
Table Exports/Imports
The TABLES parameter is used to specify the tables that are to be exported. The following is an example
of the table export and import syntax.
Schema Exports/Imports
The OWNER parameter of exp has been replaced by the SCHEMAS parameter which is used to specify the
schemas to be exported. The following is an example of the schema export and import syntax.
expdp scott/tiger@db10g schemas=SCOTT directory=TEST_DIR dumpfile=SCOTT.dmp
logfile=expdpSCOTT.log
impdp scott/tiger@db10g schemas=SCOTT directory=TEST_DIR dumpfile=SCOTT.dmp
logfile=impdpSCOTT.log
Database Exports/Imports
The FULL parameter indicates that a complete database export is required. The following is an example
of the full database export and import syntax.
expdp system/password@db10g full=Y directory=TEST_DIR dumpfile=DB10G.dmp
logfile=expdpDB10G.log
impdp system/password@db10g full=Y directory=TEST_DIR dumpfile=DB10G.dmp
logfile=impdpDB10G.log
The following code shows how they can be used as command line parameters.
expdp scott/tiger@db10g schemas=SCOTT include=TABLE:"IN ('EMP', 'DEPT')"
directory=TEST_DIR dumpfile=SCOTT.dmp logfile=expdpSCOTT.log
expdp scott/tiger@db10g schemas=SCOTT exclude=TABLE:"= 'BONUS'"
directory=TEST_DIR dumpfile=SCOTT.dmp logfile=expdpSCOTT.log
If the parameter is used from the command line, depending on your OS, the special characters in the
clause may need to be escaped, as follows. Because of this, it is easier to use a parameter file.
include=TABLE:\"IN (\'EMP\', \'DEPT\')\"
A single import/export can include multiple references to the parameters, so to export tables, views and
some packages we could use either of the following approaches.
INCLUDE=TABLE,VIEW,PACKAGE:"LIKE '%API'"
or
INCLUDE=TABLE
INCLUDE=VIEW
INCLUDE=PACKAGE:"LIKE '%API'"
Multiple objects can be targeted in once statement using the LIKE and IN operators.
EXCLUDE=SCHEMA:"LIKE 'SYS%'"
EXCLUDE=SCHEMA:"IN
('OUTLN','SYSTEM','SYSMAN','FLOWS_FILES','APEX_030200','APEX_PUBLIC_USER','AN
ONYMOUS')"
The valid object type paths that can be included or excluded can be displayed using
the DATABASE_EXPORT_OBJECTS, SCHEMA_EXPORT_OBJECTS, andTABLE_EXPORT_OBJECTS views.
In the case of exports, the NETWORK_LINK parameter identifies the database link pointing to the source
server. The objects are exported from the source server in the normal manner, but written to a directory
object on the local server, rather than one on the source server. Both the local and remote users require
theEXP_FULL_DATABASE role granted to them.
expdp test/test@db10g tables=SCOTT.EMP network_link=REMOTE_SCOTT
directory=TEST_DIR dumpfile=EMP.dmp logfile=expdpEMP.log
For imports, the NETWORK_LINK parameter also identifies the database link pointing to the source server.
The difference here is the objects are imported directly from the source into the local server without being
written to a dump file. Although there is no need for a DUMPFILE parameter, a directory object is still
required for the logs associated with the operation. Both the local and remote users require
the IMP_FULL_DATABASE role granted to them.
impdp test/test@db10g tables=SCOTT.EMP network_link=REMOTE_SCOTT
directory=TEST_DIR logfile=impdpSCOTT.log remap_schema=SCOTT:TEST
Flashback Exports
The exp utility used the CONSISTENT=Y parameter to indicate the export should be consistent to a point
in time. By default the expdp utility exports are only consistent on a per table basis. If you want all tables
in the export to be consistent to the same point in time, you need to use
the FLASHBACK_SCN orFLASHBACK_TIME parameter.
The FLASHBACK_TIME parameter value is converted to the approximate SCN for the specified time.
expdp ..... flashback_time=systimestamp
# In parameter file.
flashback_time="to_timestamp('09-05-2011 09:00:00', 'DD-MM-YYYY HH24:MI:SS')"
# Escaped on command line.
expdp ..... flashback_time=\"to_timestamp\(\'09-05-2011 09:00:00\', \'DD-MMYYYY HH24:MI:SS\'\)\"
Not surprisingly, you can make exports consistent to an earlier point in time by specifying an earlier time
or SCN, provided you have enough UNDO space to keep a read consistent view of the data during the
export operation.
If you prefer to use the SCN, you can retrieve the current SCN using one of the following queries.
SELECT current_scn FROM v$database;
SELECT DBMS_FLASHBACK.get_system_change_number FROM dual;
SELECT TIMESTAMP_TO_SCN(SYSTIMESTAMP) FROM dual;
That SCN is then used with the FLASHBACK_SCN parameter.
The following queries may prove useful for converting between timestamps and SCNs.
SELECT TIMESTAMP_TO_SCN(SYSTIMESTAMP) FROM dual;
SELECT SCN_TO_TIMESTAMP(5474751) FROM dual;
In 11.2, the introduction of legacy mode means that you can use the CONSISTENT=Y parameter with
the expdp utility if you wish.
Miscellaneous Information
Unlike the original exp and imp utilities all data pump ".dmp" and ".log" files are created on the Oracle
server, not the client machine.
All data pump actions are performed by multiple jobs (server processes not DBMS_JOB jobs). These jobs
are controlled by a master control process which uses Advanced Queuing. At runtime an advanced
queue table, named after the job name, is created and used by the master control process. The table is
dropped on completion of the data pump job. The job and the advanced queue can be named using
the JOB_NAME parameter. Cancelling the client process does not stop the associated data pump job.
Issuing "ctrl+c" on the client during a job stops the client output and presents a command prompt. Typing
"status" at this prompt allows you to monitor the current job.
Export> status
Job: SYS_EXPORT_FULL_01
Operation: EXPORT
Mode: FULL
State: EXECUTING
Bytes Processed: 0
Current Parallelism: 1
Job Error Count: 0
Dump File: D:\TEMP\DB10G.DMP
bytes written: 4,096
Worker 1 Status:
State: EXECUTING
Object Schema: SYSMAN
Object Name: MGMT_CONTAINER_CRED_ARRAY
Object Type: DATABASE_EXPORT/SCHEMA/TYPE/TYPE_SPEC
Completed Objects: 261
Total Objects: 261
Data pump performance can be improved by using the PARALLEL parameter. This should be used in
conjunction with the "%U" wildcard in the DUMPFILEparameter to allow multiple dumpfiles to be created
or read. The same wildcard can be used during the import to allow you to reference multiple files.
JOB_NAME
OPERATION
------------------------------ --------------STATE
DEGREE
EXPORT
1
DBMS_DATAPUMP.metadata_filter(
handle => l_dp_handle,
name
=> 'SCHEMA_EXPR',
value => '= ''SCOTT''');
DBMS_DATAPUMP.start_job(l_dp_handle);
DBMS_DATAPUMP.detach(l_dp_handle);
END;
/
Once the job has started the status can be checked using.
system@db10g> select * from dba_datapump_jobs;
The syntax to create the external table pointing to an existing file is similar, but without the "AS" clause. In
this case we will do it the same schema, but this could be in a different schema in the same instance, or
in an entirely different instance.
DROP TABLE emp_xt;
CREATE TABLE emp_xt (
EMPNO
NUMBER(4),
ENAME
VARCHAR2(10),
JOB
VARCHAR2(9),
MGR
NUMBER(4),
HIREDATE DATE,
SAL
NUMBER(7,2),
COMM
NUMBER(7,2),
DEPTNO
NUMBER(2))
ORGANIZATION EXTERNAL (
TYPE ORACLE_DATAPUMP
DEFAULT DIRECTORY test_dir
LOCATION ('emp_xt.dmp')
);
SELECT * FROM emp_xt;
Creating an external table using the ORACLE_DATAPUMP access driver is restricted to dump files created
by the external table unload.
Help
The HELP=Y option displays the available parameters.
expdp
expdp help=y
Export: Release 10.1.0.2.0 - Production on Tuesday, 23 March, 2004 8:33
Copyright (c) 2003, Oracle.
The Data Pump export utility provides a mechanism for transferring data
objects
between Oracle databases. The utility is invoked with the following command:
Example: expdp scott/tiger DIRECTORY=dmpdir DUMPFILE=scott.dmp
You can control how Export runs by entering the 'expdp' command followed
by various parameters. To specify parameters, you use keywords:
Format: expdp KEYWORD=value or KEYWORD=(value1,value2,...,valueN)
Example: expdp scott/tiger DUMPFILE=scott.dmp DIRECTORY=dmpdir
SCHEMAS=scott
or TABLES=(T1:P1,T1:P2), if T1 is partitioned table
USERID must be the first parameter on the command line.
Keyword
Description (Default)
----------------------------------------------------------------------------ATTACH
Attach to existing job, e.g. ATTACH [=job name].
CONTENT
Specifies data to unload where the valid keywords are:
(ALL), DATA_ONLY, and METADATA_ONLY.
DIRECTORY
Directory object to be used for dumpfiles and logfiles.
DUMPFILE
List of destination dump files (expdat.dmp),
e.g. DUMPFILE=scott1.dmp, scott2.dmp,
dmpdir:scott3.dmp.
ESTIMATE
ESTIMATE_ONLY
EXCLUDE
FILESIZE
FLASHBACK_SCN
FLASHBACK_TIME
FULL
HELP
INCLUDE
JOB_NAME
LOGFILE
NETWORK_LINK
NOLOGFILE
PARALLEL
PARFILE
QUERY
SCHEMAS
STATUS
TABLES
only.
TABLESPACES
TRANSPORT_FULL_CHECK
TRANSPORT_TABLESPACES
unloaded.
VERSION
Keyword
Description (Default)
----------------------------------------------------------------------------COMPRESSION
Reduce size of dumpfile contents where valid
keyword values are: (METADATA_ONLY) and NONE.
ENCRYPTION_PASSWORD
Password key for creating encrypted column data.
SAMPLE
Percentage of data to be exported;
The following commands are valid while in interactive mode.
Note: abbreviations are allowed
Command
Description
----------------------------------------------------------------------------FILESIZE
Default filesize (bytes) for subsequent ADD_FILE
commands.
Oracle 11g Release 2 (11.2) altered the format of the help output as well as adding the following
parameters.
CLUSTER
Utilize cluster resources and distribute workers across the Oracle RAC.
Valid keyword values are: [Y] and N.
SERVICE_NAME
Name of an active Service and associated resource group to constrain Oracle
RAC resources.
SOURCE_EDITION
Edition to be used for extracting metadata.
impdp
impdp help=y
Import: Release 10.1.0.2.0 - Production on Saturday, 11 September, 2004 17:22
Copyright (c) 2003, Oracle.
The Data Pump Import utility provides a mechanism for transferring data
objects
between Oracle databases. The utility is invoked with the following command:
Example: impdp scott/tiger DIRECTORY=dmpdir DUMPFILE=scott.dmp
You can control how Import runs by entering the 'impdp' command followed
by various parameters. To specify parameters, you use keywords:
Format: impdp KEYWORD=value or KEYWORD=(value1,value2,...,valueN)
Example: impdp scott/tiger DIRECTORY=dmpdir DUMPFILE=scott.dmp
USERID must be the first parameter on the command line.
Keyword
Description (Default)
----------------------------------------------------------------------------ATTACH
Attach to existing job, e.g. ATTACH [=job name].
CONTENT
Specifies data to load where the valid keywords are:
(ALL), DATA_ONLY, and METADATA_ONLY.
DIRECTORY
files.
DUMPFILE
dmpdir:scott3.dmp.
ESTIMATE
EXCLUDE
FLASHBACK_SCN
FLASHBACK_TIME
FULL
HELP
INCLUDE
JOB_NAME
LOGFILE
NETWORK_LINK
NOLOGFILE
PARALLEL
PARFILE
QUERY
REMAP_DATAFILE
REMAP_SCHEMA
REMAP_TABLESPACE
REUSE_DATAFILES
(N).
SCHEMAS
SKIP_UNUSABLE_INDEXES
SQLFILE
STATUS
KILL_JOB
PARALLEL
START_JOB
skipping
STATUS
STOP_JOB
the
Data Pump job.
Oracle 11g Release 2 (11.2) altered the format of the help output as well as adding the following
parameters.
CLUSTER
Utilize cluster resources and distribute workers across the Oracle RAC.
Valid keyword values are: [Y] and N.
SERVICE_NAME
Name of an active Service and associated resource group to constrain Oracle
RAC resources.
SOURCE_EDITION
Edition to be used for extracting metadata.
TARGET_EDITION