有时候在进行导出任务时可能发生紧急情况(如磁盘空间不够了等)需要停止导出,这种时候直接按Ctrl + c终止到后台查看进程多半会发现expdp进程还是存在的,而且dmp文件还一直在增加,任务并没有实际停止下来。
例如:
先按Ctrl + c,expdp会跳到命令行状态,再键入exit退出。
Export> exit
会发现实际dmp文件的大小还在增加,登录数据库查询,会发现任务还在进行。
SQL> SELECT JOB_NAME,STATE FROM DBA_DATAPUMP_JOBS;
JOB_NAME STATE
------------------------ --------------
SYS_EXPORT_SCHEMA_01 EXECUTING
1 rows selected.
SQL>
正确停止任务的方法是使用stop_job:
[shell]$ expdp user/pass@orcl attach=SYS_EXPORT_SCHEMA_01
Export: Release 12.2.0.1.0 - Production on Fri Jul 12 21:03:37 2019
Copyright (c) 1982, 2017, Oracle and/or its affiliates. All rights reserved.
Connected to: Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
Job: SYS_EXPORT_SCHEMA_01
.........
Export> stop_job=immediate
Are you sure you wish to stop this job ([yes]/no): yes
再次查询任务状态
SQL> SELECT JOB_NAME,STATE FROM DBA_DATAPUMP_JOBS;
JOB_NAME STATE
------------------------ --------------
SYS_EXPORT_SCHEMA_01 NOT RUNNING
1 rows selected.
SQL>
发现任务已经是NOT RUNNING状态了。
再删除dmp文件即可。