客戶透過 Ctrl+C 或 kill -9 強制終止 expdp 進程,導致資料庫後台 Job 仍在執行,轉儲檔案持續增長,表空間可用空間銳減。根因在於:DataPump 以 Job 形式在資料庫後台運行,客戶端進程終止不代表 Job 停止。
SQL> SELECT job_name, state FROM dba_datapump_jobs;
JOB_NAME STATE
SYS_EXPORT_TABLE_01 EXECUTING
SYS_EXPORT_TABLE_02 EXECUTING
$ expdp '/ as sysdba' attach=SYS_EXPORT_FULL_01
Export> stop_job=immediate
Are you sure? yes
Job 狀態轉為 IDLING。Export> kill_job
Are you sure? yes
Job 從 dba_datapump_jobs 消失,資源完全釋放。| 操作 | 效果 | 適用場景 |
|---|---|---|
stop_job | 優雅停止,保留 Job 元數據,可 start_job 繼續 | 計劃性暫停、維護窗口 |
stop_job=immediate | 立即中斷,不等待 Worker 完成當前單元 | 緊急停止、資源爭搶 |
kill_job | 徹底刪除 Job,釋放所有資源,不可恢復 | 異常終止後清理、重新導出 |
kill -9 DataPump 進程,務必透過 expdp attach 管理 Job 生命週期。nohup 或 screen 避免會話斷開導致誤操作。impdp)同理,異常中斷後同樣需透過 attach → kill_job 清理。dba_datapump_jobs,及時發現殘留 Job 防止空間洩漏。