使用impdp命令对Oracle数据库dump文件进行导入的常用功能

一、排除某些对象(表、索引、包 等)

使用EXCLUDE参数,用法如下:

EXCLUDE=object_type[:name_clause] [, ...]

示例:
1、使用par文件,新建一个.par文件,文件名随意如exclude.par,内容如下示例

EXCLUDE=FUNCTION
EXCLUDE=PROCEDURE
EXCLUDE=PACKAGE
EXCLUDE=INDEX:"LIKE 'EMP%' "

2、在impdp命令中加入参数使用par文件,示例如下:

impdp system DIRECTORY=dpump_dir1 DUMPFILE=expfull.dmp PARFILE=exclude.par

注意:引号需使用转义方式,示例如下:

EXCLUDE=TABLE:\"IN (\'TABLE1\', \'TABLE2\')\"

二、查询导入任务的状态:

1、确定job名称,导入日志的开头会显示job名称,如下:

2、使用如下命令查询当前job的状态:

impdp system attach=JOBNAME

三、清除DBA_DATAPUMP_JOBS视图中的异常数据泵作业

DBA_DATAPUMP_JOBS视图中可查询数据泵作业的信息,因为强行终端导入导出任务等原因有时会产生异常作业,可用以下步骤清除:

1、查找在数据库中有哪些数据泵作业:

set lines 200 pages 200
COL owner_name FORMAT a10; 
COL job_name FORMAT a20 
COL state FORMAT a12
COL operation LIKE state 
COL job_mode LIKE state

SELECT owner_name, job_name, operation, job_mode, 
state, attached_sessions 
FROM dba_datapump_jobs 
WHERE job_name NOT LIKE 'BIN$%' 
ORDER BY 1,2;

OWNER_NAME JOB_NAME             OPERATION    JOB_MODE     STATE        ATTACHED_SESSIONS
---------- -------------------- ------------ ------------ ------------ -----------------
SYS        CSBLOG_JOB           EXPORT       SCHEMA       NOT RUNNING                  0

确保查询出的作业不是活动的数据泵作业,状态应该是“NOT RUNNING”,而且是非暂停作业。

2、查找相关的master表

col "OWNER.OBJECT" for a30
SELECT o.status, o.object_id, o.object_type, 
       o.owner||'.'||object_name "OWNER.OBJECT" 
  FROM dba_objects o, dba_datapump_jobs j 
 WHERE o.owner=j.owner_name AND o.object_name=j.job_name 
   AND j.job_name NOT LIKE 'BIN$%' ORDER BY 4,2;  

STATUS   OBJECT_ID OBJECT_TYPE         OWNER.OBJECT
------- ---------- ------------------- ------------------------------
VALID       252249 TABLE               SYS.CSBLOG_JOB

3、对于以前终止的或者以后不会再启动的作业,删除它对应的master表

drop table SYS.CSBLOG_JOB purge;

4、再次检查,确认作业不再存在。

上一篇
下一篇