q Oracle DATAPUMP utility – Expdp | Impdp
q Data pump (EXPDP & IMPDP) utilities are used to take Import and Export of Oracle databases.
& Following levels of Data Pump Export | Import is possible:
v Database Level
v Schema Level
v Table Level
v Row Level
v Tablespace Level
& We can Export and Import from two users; one is the user who owns the object & another is the SYS user. In real time it is always good to perform export & import using SYS user. You don't have to bother about this permission and all
q DATA PUMP [SERVER-SIDE UTILITY/INFRASTRUCTURE FAST DATA MOVEMENT BETWEEN ORACLE DATABASE]
v EXPDP
v IMPDP
q DATAPUMP UTILITY USES STREAMS POOL SIZE MEMORY AREA
SQL> show parameter streams;
NAME
TYPE
VALUE
------------------------------------
----------- ------------------------------
streams_pool_size big integer 0
SQL> alter system set STREAMS_POOL_SIZE=200M scope=both; [CURRENTLY AUTOMATIC MEMORY MANAGEMENT]
q Create Directory at OS level
[oracle@dbserver]$
export ORACLE_PDB_SID=maxpdb
[oracle@dbserver]$ mkdir -p /u01/backup
[oracle@dbserver]$ sqlplus / as sysdba
SQL*Plus: Release 19.0.0.0.0 - Production on
Mon Oct 2 21:47:11 2023
Version 19.3.0.0.0
Copyright (c) 1982, 2019, Oracle. All
rights reserved.
Connected to:
Oracle Database 19c Enterprise Edition Release
19.0.0.0.0 - Production
Version 19.3.0.0.0
SQL> show con_name
CON_NAME
------------------------------
MAXPDB
q To Create Directory on Database level
SQL> create or replace directory datapump as '/u01/backup';
Directory created.
q To view Directory Information
SQL> select OWNER, DIRECTORY_NAME, DIRECTORY_PATH from dba_directories where DIRECTORY_NAME='DATAPUMP';
OWNER
DIRECTORY_NAME
DIRECTORY_PATH
------------------------------
------------------------------ ------------------------------
SYS DATAPUMP /u01/backup
q Check Estimate Export Time
[oracle@dbserver] expdp estimate_only=y
schemas=hr
Username: / as sysdba
Password: oracle
q To take DATABASE Level export
[oracle@dbserver]$ expdp \"sys/oracle@maxpdb as sysdba\" directory=datapump dumpfile=fullprod.dmp logfile=fullprod.log full=y
[oracle@dbserver]$ expdp directory=datapump
dumpfile=fullprod.dmp logfile=fullprod.log full=y
Export: Release 19.0.0.0.0 - Production on Wed
Jan 31 20:03:58 2024
Version 19.3.0.0.0
Copyright (c) 1982, 2019, Oracle and/or its
affiliates. All rights reserved.
Username: / as sysdba
Password: oracle
q To Import a Database
[oracle@dbserver]$ impdp directory=datapump dumpfile=fullprod.dmp logfile=fullprod_imp.log full=y
q To taka SCHEMA level export
[oracle@dbserver]$ expdp directory=datapump
dumpfile=hr.dmp logfile=hr.log schemas=hr
Export: Release 19.0.0.0.0 - Production on Wed
Jan 31 21:01:14 2024
Version 19.3.0.0.0
Copyright (c) 1982, 2019, Oracle and/or its
affiliates. All rights reserved.
Username: / as sysdba
Password: oracle
SQL> grant read, write on directory datapump to hr;
[oracle@dbserver]$ expdp \"hr/hr@maxpdb\" directory=datapump dumpfile=hr.dmp logfile=hr.log schemas=hr
[oracle@dbserver]$ expdp directory=datapump
dumpfile=hr.dmp logfile=hr.log schemas=hr
Export: Release 19.0.0.0.0 - Production on Wed
Jan 31 21:27:56 2024
Version 19.3.0.0.0
Copyright (c) 1982, 2019, Oracle and/or its
affiliates. All rights reserved.
Username: hr/hr@maxpdb
q To Import a Schema
[oracle@dbserver]$ impdp directory=datapump
dumpfile=hr.dmp logfile=hr_imp.log
Import: Release 19.0.0.0.0 - Production on Wed
Jan 31 23:37:06 2024
Version 19.3.0.0.0
Copyright (c) 1982, 2019, Oracle and/or its
affiliates. All rights reserved.
Username: / as sysdba
Password: oracle
[oracle@dbserver]$ impdp \"hr/hr@maxpdb\" directory=datapump dumpfile=hr.dmp logfile=hr_imp.log remap_schema=hr:xy
q To taka schema level export using CONTENT METADATA
[oracle@dbserver]$ expdp directory=datapump dumpfile=hr_content.dmp logfile=hr_content.log schemas=hr content=METADATA_ONLY
q To Import a Schema using CONTENT METADATA
[oracle@dbserver]$ impdp directory=datapump
dumpfile=hr_content.dmp logfile=hr_content_imp.log
q To taka schema level export using CONTENT DATA
[oracle@dbserver]$ expdp directory=datapump dumpfile=hr_content.dmp logfile=hr_content.log schemas=hr content=DATA_ONLY
q To Import a Schema using CONTENT DATA
[oracle@dbserver]$ impdp directory=datapump
dumpfile=hr_content.dmp logfile=hr_content_imp.log
q TABLE_EXISTS_ACTION=[SKIP|APPEND|TRUNCATE|REPLACE]
using IMPDP
q To taka Schema level export using ENCRYPTION
[oracle@dbserver]$ expdp directory=datapump dumpfile=hr_enc_pass.dmp logfile=hr_enc_pass.log encryption=all encryption_mode=password encryption_password=hrpass123 schemas=hr
q To Import a Schema using Encryption
[oracle@dbserver]$ impdp directory=datapump
dumpfile=hr_enc_pass.dmp logfile=hr_enc_pass.log encryption=all
encryption_mode=password encryption_password=hrpass123
q To taka Schema level export using COMPRESSION
[oracle@dbserver]$ expdp directory=datapump dumpfile=hr_compress.dmp logfile=hr_compress.log schemas=hr compression=all compression_algorithm=high
q To Import a Schema using compression
[oracle@dbserver]$ impdp directory=datapump
dumpfile=hr_compress.dmp logfile=hr_compress_imp.log compression=all
compression_algorithm=high
q To taka Schema level export using PARALLEL
[oracle@dbserver]$ expdp directory=datapump dumpfile=hr.dmp logfile=hr.log schemas=hr parallel=4
q To Import a Schema using
[oracle@dbserver]$ impdp directory=datapump
dumpfile=hr.dmp logfile=hr_imp.log parallel=4
q To take table level export
[oracle@dbserver]$ expdp directory=datapump dumpfile=hr_emp.dmp logfile=hr_emp.log tables=hr.employees
Export: Release 19.0.0.0.0 - Production on Mon
Oct 2 21:53:35 2023
Version 19.3.0.0.0
Copyright (c) 1982, 2019, Oracle and/or its affiliates. All rights reserved.
Username: / as sysdba
Password: oracle
q To import table level
[oracle@dbserver]$ impdp directory=datapump
dumpfile=hr_emp.dmp logfile=hr_emp_imp.log tables=hr.employees
[oracle@dbserver]$ impdp directory=datapump
dumpfile=hr_emp.dmp logfile=hr_emp_imp.log remap_table=hr.employees:emp
q To take table level export using Include
[oracle@dbserver]$ expdp directory=datapump dumpfile=hr_emp_include.dmp logfile=hr_emp_include.log schemas=hr include=TABLE:\""IN ('employees')\""
q To Import a Table using Include
[oracle@dbserver]$ impdp directory=datapump
dumpfile=hr_emp_include.dmp logfile=hr_emp_include_imp.log schemas=hr
include=TABLE:\""IN ('employees')\""
q To take table level export using Exclude
[oracle@dbserver]$ expdp directory=datapump dumpfile=hr_emp_exclude.dmp logfile=hr_emp_exclude.log schemas=hr exclude=TABLE:\""IN ('employees')\""
q To Import a Table using Exclude
[oracle@dbserver]$ impdp directory=datapump
dumpfile=hr_emp_exclude.dmp logfile=hr_emp_exclude_imp.log schemas=hr
exclude=TABLE:\""IN ('employees')\""
q To taka row level export
[oracle@dbserver]$ expdp directory=datapump dumpfile=emprows.dmp logfile=emprows.log tables=hr.employees query=\"where department_id=10\"
q To Import a row level
[oracle@dbserver]$ impdp directory=datapump
dumpfile=emprows.dmp logfile=emprows_imp.log tables=hr.employees
query=\"where department_id=10\"
q To taka tablespace level export
[oracle@dbserver]$ expdp directory=datapump dumpfile=userstbs.dmp logfile=userstbs.log tablespaces=users
q To Import a tablespace
[oracle@dbserver]$ impdp directory=datapump
dumpfile=userstbs.dmp logfile=userstbs_imp.log
[oracle@dbserver]$ impdp directory=datapump
dumpfile=userstbs.dmp logfile=userstbs_imp.log remap_tablespace=users:xyz
q To Export | Import Transportable Tablespaces
Transportable Tablespaces (TTS) is a feature in Oracle databases that allows to move large amounts of data between databases quickly by transporting entire tablespaces.
v SOURCE Database: 192.168.56.33
[oracle@dbserver]$ sqlplus / as sysdba
SQL*Plus: Release 19.0.0.0.0 - Production on
Thu Oct 5 18:42:27 2023
Version 19.3.0.0.0
Copyright (c) 1982, 2019, Oracle. All
rights reserved.
Connected to:
Oracle Database 19c Enterprise Edition Release
19.0.0.0.0 - Production
Version 19.3.0.0.0
v Switching the Tablespace to read only mode
SQL> ALTER TABLESPACE SRTBS READ ONLY;
Tablespace altered.
q Export the tablespace MetaData
[oracle@dbserver]$ expdp directory=datapump transport_tablespaces=SRTBS dumpfile=SRTBS_Transport.dmp logfile=SRTBS_Transport.log
Export: Release 19.0.0.0.0 - Production on Thu
Oct 5 18:44:42 2023
Version 19.3.0.0.0
Copyright (c) 1982, 2019, Oracle and/or its affiliates. All rights reserved.
Username: / as sysdba
Password: oracle
Datafiles required for transportable
tablespace SRTBS:
/data/oradata/MAXCDB/maxpdb/srtbs01.dbf
[oracle@dbserver]$ cd /u01/backup/
[oracle@dbserver backup]$ ls
SRTBS_Transport.dmp
SRTBS_Transport.log
[oracle@dbserver backup]$ scp
/u01/backup/SRTBS_Transport.dmp oracle@192.168.56.98:/u01/backup/
The authenticity of host '192.168.56.98
(192.168.56.98)' can't be established.
ECDSA key fingerprint is
SHA256:03rpoIcbmOdnzUsNLdt49TS76MexJny3nw+ayshne1o.
ECDSA key fingerprint is
MD5:7b:0c:36:29:68:83:9a:6f:d9:6c:19:c4:85:83:d2:71.
Are you sure you want to continue connecting
(yes/no)? yes
Warning: Permanently added '192.168.56.98'
(ECDSA) to the list of known hosts.
oracle@192.168.56.98's password:
SRTBS_Transport.dmp 100% 532KB 44.8MB/s 00:00
[oracle@dbserver backup]$ scp
/data/oradata/MAXCDB/maxpdb/srtbs01.dbf
oracle@192.168.56.98:/u01/app/oracle/oradata/MAXCDB/maxpdb/
oracle@192.168.56.98's password:
srtbs01.dbf
100% 100MB 27.2MB/s 00:03
v Switching back the Tablespace to read/write mode
SQL> ALTER TABLESPACE SRTBS READ WRITE;
Tablespace altered.
v TARGET Database: 192.168.56.98
[oracle@19c]$ export ORACLE_PDB_SID=maxpdb
[oracle@19c]$ sqlplus / as sysdba
SQL*Plus: Release 19.0.0.0.0 - Production on
Thu Oct 5 19:36:32 2023
Version 19.3.0.0.0
Copyright (c) 1982, 2019, Oracle. All
rights reserved.
Connected to:
Oracle Database 19c Enterprise Edition Release
19.0.0.0.0 - Production
Version 19.3.0.0.0
SQL> CREATE USER shohan IDENTIFIED BY oracle;
User created.
SQL> GRANT CONNECT, RESOURCE, DBA TO shohan;
Grant succeeded.
[oracle@19c maxpdb]$ impdp directory=datapump dumpfile=SRTBS_Transport.dmp logfile=SRTBS_Transport_imp.log transport_datafiles='/u01/app/oracle/oradata/MAXCDB/maxpdb/srtbs01.dbf'
Import: Release 19.0.0.0.0 - Production on Thu
Oct 5 19:50:16 2023
Version 19.3.0.0.0
Copyright (c) 1982, 2019, Oracle and/or its affiliates. All rights reserved.
Username: / as sysdba
Password: oracle
Connected to: Oracle Database 19c Enterprise
Edition Release 19.0.0.0.0 - Production
Master table
"SYS"."SYS_IMPORT_TRANSPORTABLE_01" successfully
loaded/unloaded
Starting
"SYS"."SYS_IMPORT_TRANSPORTABLE_01": /******** AS
SYSDBA directory=datapump dumpfile=SRTBS_Transport.dmp
logfile=SRTBS_Transport_imp.log
transport_datafiles=/u01/app/oracle/oradata/MAXCDB/maxpdb/srtbs01.dbf
Processing object type
TRANSPORTABLE_EXPORT/PLUGTS_BLK
Processing object type
TRANSPORTABLE_EXPORT/TABLE
Processing object type
TRANSPORTABLE_EXPORT/CONSTRAINT/CONSTRAINT
Processing object type
TRANSPORTABLE_EXPORT/INDEX/STATISTICS/INDEX_STATISTICS
Processing object type
TRANSPORTABLE_EXPORT/CONSTRAINT/REF_CONSTRAINT
Processing object type
TRANSPORTABLE_EXPORT/STATISTICS/TABLE_STATISTICS
Processing object type
TRANSPORTABLE_EXPORT/STATISTICS/MARKER
Processing object type
TRANSPORTABLE_EXPORT/POST_INSTANCE/PLUGTS_BLK
Job
"SYS"."SYS_IMPORT_TRANSPORTABLE_01" successfully completed
at Thu Oct 5 19:50:38 2023 elapsed 0 00:00:16
v Switching back the Tablespace to read/write mode
SQL> ALTER TABLESPACE SRTBS READ WRITE;
Tablespace altered.
q EXPORT | IMPORT using PARFILE [Parameter]
v EXPORT as PAR file
[oracle@19c u01]$ vi /u01/tab.par
DIRECTORY=datapump
DUMPFILE=hr_exp_par.dmp
LOGFILE=hr_exp_par.log
SCHEMAS=hr
[oracle@19c u01]$ expdp parfile=/u01/tab.par
Export: Release 19.0.0.0.0 - Production on Sun
Sep 3 10:35:07 2023
Version 19.3.0.0.0
Copyright (c) 1982, 2019, Oracle and/or its affiliates. All rights reserved.
Username: sys/oracle@maxpdb as sysdba
v IMPORT as PAR file
[oracle@19c u01]$ vi /u01/imp_tab.par
DUMPFILE=hr_exp_par.dmp
LOGFILE=xy_imp_par.log
REMAP_SCHEMA=hr:xy
[oracle@19c u01]$ impdp directory=datapump parfile=imp_tab.par
Import: Release 19.0.0.0.0 - Production on Sun
Sep 3 12:11:42 2023
Version 19.3.0.0.0
Copyright (c) 1982, 2019, Oracle and/or its affiliates. All rights reserved.
Username: sys/oracle@maxpdb as sysdba
SQL> select CHECKPOINT_CHANGE#, CURRENT_SCN, ARCHIVELOG_CHANGE# from v$database;
CHECKPOINT_CHANGE# CURRENT_SCN
ARCHIVELOG_CHANGE#
------------------ -----------
------------------
2137910
2202280
2137910
SQL> select FILE#, CHECKPOINT_CHANGE#, CHECKPOINT_TIME from v$datafile;
FILE#
CHECKPOINT_CHANGE# CHECKPOIN
----------- ---------- ---------------
9
2137910 24-MAR-23
10
2137910 24-MAR-23
11
2137910 24-MAR-23
12
2139676 24-MAR-23
SQL> desc v$backup
Name
Null? Type
-----------------------------------------
-------- ----------------------------
FILE#
NUMBER
STATUS
VARCHAR2(18)
CHANGE#
NUMBER
TIME
DATE
CON_ID
NUMBER
q NETWORK_LINK - EXPORT - IMPORT OVER THE NETWORK | DB LINK
DB Link (Database Link):
A Database Link (DB Link) like a bridge between two databases. It allows one Oracle database to connect to and access objects (like tables, views, etc.) in another Oracle database—as if they were part of the same system.
Two types of Database links:
·
Private DB Links (Only user who created the link)
CREATE DATABASE LINK dblink_name CONNECT
TO remote_db_user IDENTIFIED BY password USING ‘tnsnames_entry’;
·
Public DB Links (All the database users)
CREATE PUBLIC DATABASE LINK dblink_name
CONNECT TO remote_db_user IDENTIFIED BY password USING ‘tnsnames_entry’;
Dictionary View - DBA_DB_LINKS
v
Local Database [20.20.20.21]
[oracle@local admin]$ cat tnsnames.ora
MAXPDB =
(DESCRIPTION =
(ADDRESS =
(PROTOCOL = TCP)(HOST = 20.20.20.21)(PORT = 1521))
(CONNECT_DATA =
(SERVER =
DEDICATED)
(SERVICE_NAME
= maxpdb)
)
)
v Remote Database [20.20.20.23] – where I want to access table from Local Database [20.20.20.21]
Ñ
Require information from Local Database [20.20.20.21]
·
Username
·
Password
· TNS details
[oracle@remote admin]$ vi tnsnames.ora
LOCALPDB =
(DESCRIPTION =
(ADDRESS =
(PROTOCOL = TCP)(HOST = 20.20.20.21)(PORT = 1521))
(CONNECT_DATA =
(SERVER =
DEDICATED)
(SERVICE_NAME
= maxpdb)
)
)
[oracle@remote ~]$ sqlplus sys/oracle@maxpdb as sysdba
SQL*Plus: Release 19.0.0.0.0 - Production on Tue Apr 15
20:40:49 2025
Version 19.3.0.0.0
Copyright (c) 1982, 2019, Oracle. All rights reserved.
Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0
- Production
Version 19.3.0.0.0
SQL> show con_name
CON_NAME
------------------------------
MAXPDB
SQL> CREATE DATABASE LINK testdb CONNECT TO hr IDENTIFIED BY hr USING 'LOCALPDB';
Database link created.
----------------------------------------------------------------------------------------------------
CREATE DATABASE LINK testdb CONNECT TO hr IDENTIFIED BY
hr USING '(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=20.20.20.21)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=maxpdb)))';
-----------------------------------------------------------------------------------------------------
SQL> SELECT * FROM employees@testdb;
v Drop Database Link
SQL> DROP DATABASE LINK testdb;
Database link dropped.
A NETWORK_LINK is a parameter used with the impdp (Data Pump Import) utility that allows you to import data directly from a remote database over the network — without needing to create or copy .dmp files. It relies on a database link (DB LINK) to connect the target database (where you're running impdp) to the source database (where the data lives).
#Source (Local) Database:
Step 1: Create schema source side
SQL> create user
ocp identified by ocp quota unlimited on users;
SQL> grant connect, resource to ocp;
Connect with OCP users and create a table and then insert some records.
SQL> conn ocp/ocp
SQL> create table t1 (id number, name varchar2(10));
SQL> insert into t1
values(10,'AARAV');
SQL> insert into t1
values(20,'SHRIPAL');
SQL> insert into t1
values(30,'SACHIN');
SQL> insert into t1
values(40,'VIKRAM');
SQL> insert into t1
values(50,'VIKASH');
SQL> commit;
Step 2: Grant export and import privileges OCP schema
Using the below query grants privileges to the user.
SQL> grant imp_full_database, exp_full_database to ocp;
Grant succeeded.
Step 3: Copy source
TNS entry at target side
copy source tns entry and past it at target side in tnsnames.ora file.
My Source TNS Entry:
REMOTE =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 20.20.20.21)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = maxpdb)
)
)
#Target (remote) Database:
Step 1: Adding TNS entry in tnsnames.ora
After adding the tns entry, my tnsnames.ora file looks like below:
REMOTE =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 20.20.20.21)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = maxpdb)
)
)
Step 2: Create a directory
Create a directory for the export backup on the target side.
SQL> create directory dump_dir as '/u01/EXPORT_BKP';
Directory created.
Step 3: Create DB Link
It's time to create a DB Link using the source service name and schema name, which you want to move in another database like OCP.
SQL> CREATE DATABASE LINK testdb CONNECT TO hr IDENTIFIED BY hr USING 'REMOTE';
Database link created.
Step 4: Import schema using a DB link
The below command helps us to import schemas directly from the source Database. Datapump with network_link.
$ impdp directory=dump_dir logfile=imp_ocp.log network_link=testdb schemas=ocp
Import: Release
12.2.0.1.0 - Production on Sun Dec 26 12:54:34 2021
Copyright (c) 1982, 2017, Oracle and/or its affiliates. All rights reserved.
Username: / as sysdba