数据泵导入导出十分灵活,可以分为以下级别:
一,全库级别
全库级别数据泵导出也可以理解为逻辑全库备份。生成的导出文件含有重建数据库的所有必要信息。并且在schema级别或者表级别等导入操作时也可以使用全库导出文件。在生产环境中体积较小的数据库常常采用这种方法做备份。和rman相比才用数据泵全库导出不包含SYS schema下的表,这个做法是防止在数据迁移时修改了目标库的SYS schema下的数据字典内部的表和试图,导致数据库不可用。还有一点就是不会导出用于重建索引的DDL语句。
下面的例子执行了全库导出操作:
[root@snow ~]# su - oracle
[oracle@snow ~]$ export ORACLE_SID=ora12c
[oracle@snow ~]$ sqlplus / as sysdba
创建数据泵用户dp
SYS@ora12c >grant dba to dp identified by dp;
创建数据泵目录dp_dir
SYS@ora12c >create or replace directory dp_dir as '/home/oracle';
数据泵用户dp在目录dp_dir下有读写权限
SYS@ora12c >grant read,write on directory dp_dir to dp;
SYS@ora12c >exit
执行全库导出操作
[oracle@snow ~]$ expdp dp/dp directory=dp_dir dumpfile=full.dmp logfile=full.log full=y
接下来做些破坏工作,删除用户hr,再使用impdp恢复该用户
[oracle@snow ~]$ sqlplus / as sysdba
SYS@ora12c >drop user hr cascade;
SYS@ora12c >exit
[oracle@snow ~]$ imp dp/dp directory=dp_dir dumpfile=full.dmp logfile=full.log full=y
由于我们只是删除了一个用户hr,在执行全库导入时就不会跳过这些已经存在的对象,节省时间。但是这些已经存在的对象会出现各种抱错信息,例如ORA-39151: Table "SH"."COSTS" exists. 等等
二,schema级别
schemas参数可以设置一个或者多个要导出的schema。
导入时可以选择从schema级别的导出文件中提取,也可以从全库级别的导出文件提取。需要注意的是如果用户已经存在系统会显示错误提示,而导入作业会继续执行下一个任务。
[oracle@snow ~]$ expdp dp/dp directory=dp_dir dumpfile=shhr.dmp logfile=shhr.log schemas=hr,sh
[oracle@snow ~]$ impdp dp/dp directory=dp_dir dumpfile=shhr.dmp logfile=shhr.log schemas=sh,hr
[oracle@snow ~]$ impdp dp/dp directory=dp_dir dumpfile=full.dmp logfile=shhr.log schemas=sh,hr
三,表级别
使用tables参数可以选择多个表。在生产环境中经常使用该方法,比如ogg表级别初始化。如果表的数量较多推荐使用parfile.
[oracle@snow ~]$ vi tables_exp.par
userid=dp/dp
directory=dp_dir
dumpfile=tables.dmp
logfile=tables.log
tables=
HR.REGIONS,
HR.LOCATIONS,
HR.DEPARTMENTS,
HR.JOBS,
HR.EMPLOYEES,
HR.JOB_HISTORY,
SH.TIMES,
SH.PRODUCTS,
SH.CHANNELS,
SH.PROMOTIONS,
SH.CUSTOMERS,
SH.COUNTRIES
[oracle@snow ~]$ expdp parfile=tables_exp.par
导入时如果表已经存在可以使用TABLE_EXISTS_ACTION参数跳过(skip)、替换(replace)或者截断(truncate)
[oracle@snow ~]$ vi tables_imp.par
userid=dp/dp
directory=dp_dir
dumpfile=tables.dmp
logfile=tables.log
tables=
HR.REGIONS,
HR.LOCATIONS,
HR.DEPARTMENTS,
HR.JOBS,
HR.EMPLOYEES,
HR.JOB_HISTORY,
SH.TIMES,
SH.PRODUCTS,
SH.CHANNELS,
SH.PROMOTIONS,
SH.CUSTOMERS,
SH.COUNTRIES
table_exists_action=replace
[oracle@snow ~]$ impdp parfile=tables_imp.par
四,表空间级别
表空间级别导入操作会创建表空间中包含的所有表和索引,但是导入操作不会重建表空间本身。和前面的例子一样,impdp也可以使用全库导出的dmp文件。
[oracle@snow ~]$ expdp dp/dp directory=dp_dir dumpfile=tbs.dmp logfile=tbs.log tablespaces=example
[oracle@snow ~]$ impdp dp/dp directory=dp_dir dumpfile=tbs.dmp logfile=tbs.log tablespaces=example
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/29047826/viewspace-1441157/
,如需转载,请注明出处,否则将追究法律责任。