【DB筆試面試164】在Oracle中,如何徹底停止expdp資料泵進程?

來源:互聯網
上載者:User

標籤:expdp

真題1、如何徹底停止expdp進程?


答案:許多同事在使用expdp命令時,不小心按了CTRL+C按鍵組合,然後又輸入exit命令(或者網路中斷等異常情況),導致expdp進程不存在,但Oracle資料庫的會話仍存在,所以dmp檔案也一直在增長。在這種情況下的處理辦法如下所示:

1、檢查expdp進程是否還在

ps -ef | grep expdp

若存在,則可用“kill -9 process”命令殺掉expdp的進程。

2、檢查會話是否仍存在,若存在則把相關的會話殺掉(注意:先使用命令“ALTER SYSTEM KILL SESSION SID,SERIAL# IMMEDIATE;”在資料庫層級殺掉會話,然後在OS層級使用kill -9殺掉進程),如無殺會話的許可權則可以將相關的表DROP掉,表名可以使用如下的SQL來查詢:

SELECT * FROM DBA_DATAPUMP_SESSIONS;

SELECT * FROM DBA_DATAPUMP_JOBS;

例如:

[email protected] > SELECT * FROM DBA_DATAPUMP_SESSIONS;

OWNER_NAME JOB_NAME                     INST_ID SADDR            SESSION_TYPE

---------- ------------------------- ---------- ---------------- --------------

LHR        SYS_EXPORT_SCHEMA_04               1 00000000A8B71D98 MASTER

LHR        SYS_EXPORT_SCHEMA_04               1 00000000AB98AFC8 WORKER

[email protected] > DROP TABLE LHR.SYS_EXPORT_SCHEMA_04 PURGE;

Table dropped.

[email protected] >  SELECT * FROM DBA_DATAPUMP_SESSIONS;

no rows selected

[email protected] > SELECT * FROM DBA_DATAPUMP_JOBS;

no rows selected

使用相同的辦法也刪除從視圖DBA_DATAPUMP_JOBS中查詢出來的表,直到這兩個視圖無記錄。

3、刪除匯出的dmp檔案。如不刪除,則在重新執行expdp命令時會報dmp檔案已存在的錯誤。

這裡作者給出自己常用的一個SQL語句,可以查詢expdp的相關會話的詳細資料,如下所示:

---------------------------如何徹底停止expdp進程?

SET LINE 9999

COL OWNER_NAME FOR A10

COL JOB_NAME FOR A25

COL OPERATION FOR A10

COL JOB_MODE FOR A10

COL STATE FOR A15

COL OSUSER FOR A10

COL "DEGREE|ATTACHED|DATAPUMP" FOR A25

COL SESSION_INFO FOR A20 

SELECT DS.INST_ID,

       DJ.OWNER_NAME,

       DJ.JOB_NAME,

       TRIM(DJ.OPERATION) OPERATION,

       TRIM(DJ.JOB_MODE) JOB_MODE,

       DJ.STATE,

       DJ.DEGREE || ',' || DJ.ATTACHED_SESSIONS || ',' ||DJ.DATAPUMP_SESSIONS "DEGREE|ATTACHED|DATAPUMP",

       DS.SESSION_TYPE,

       S.OSUSER ,

       (SELECT S.SID || ',' || S.SERIAL# || ',' || P.SPID

          FROM GV$PROCESS P

         WHERE S.PADDR = P.ADDR

           AND S.INST_ID = P.INST_ID) SESSION_INFO

  FROM DBA_DATAPUMP_JOBS DJ --GV$DATAPUMP_JOB 

  FULL OUTER JOIN DBA_DATAPUMP_SESSIONS DS --GV$DATAPUMP_SESSION

    ON (DJ.JOB_NAME = DS.JOB_NAME AND DJ.OWNER_NAME = DS.OWNER_NAME)

  LEFT OUTER JOIN GV$SESSION S

    ON (S.SADDR = DS.SADDR AND DS.INST_ID = S.INST_ID)

 ORDER BY DJ.OWNER_NAME, DJ.JOB_NAME;

 

 

 

 

select * from GV$DATAPUMP_SESSION;

select * from GV$datapump_jobs;

select * From dba_datapump_jobs;

 

 

 



【DB筆試面試164】在Oracle中,如何徹底停止expdp資料泵進程?

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.