【ASK_ORACLE】刪除DBA_DATAPUMP_JOBS檢視中的異常資料泵JOB的方法
刪除DBA_DATAPUMP_JOBS檢視中的異常資料泵JOB的方法具體步驟
1. 檢視當前有哪些資料泵JOB
SET lines 200 COL owner_name FORMAT a10 COL job_name FORMAT a20 COL state FORMAT a12 COL operation LIKE state COL job_mode LIKE state COL owner.object for a50 SELECT owner_name, job_name, rtrim(operation) "OPERATION", rtrim(job_mode) "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
---------- ------------------- --------- --------- ----------- --------
xxx SYS_EXPDP_SCHEMA_01 EXPORT SCHEMA EXECUTING 1 --正在執行的schema匯出job
xxx SYS_EXPORT_SCHEMA_02 EXPORT TABLE NOT RUNNING 0 --正常暫停中的schema匯出job, 對於正常暫停的job可選擇性清理
xxx SYS_EXPORT_TABLE_01 EXPORT TABLE NOT RUNNING 0 -- 異常停止的table匯出job,因此需要刪除該job
SYSTEM SYS_EXPORT_FULL_01 EXPORT FULL NOT RUNNING 0 --正常暫停中的全庫匯出job,對於正常暫停的job可選擇性清理
2. 查出DataPump的外部表
set linesize 200 trimspool on set pagesize 2000 col owner form a30 col created form a25 col last_ddl_time form a25 col object_name form a30 col object_type form a25 select OWNER,OBJECT_NAME,OBJECT_TYPE, status, to_char(CREATED,'dd-mon-yyyy hh24:mi:ss') created ,to_char(LAST_DDL_TIME , 'dd-mon-yyyy hh24:mi:ss') last_ddl_time from dba_objects where object_name like 'ET$%' / select owner, TABLE_NAME, DEFAULT_DIRECTORY_NAME, ACCESS_TYPE from dba_external_tables order by 1,2 /
3. 刪除失敗job相關聯的外部表
需要結合DBA_OBJECTS和DBA_EXTERNAL來確認屬於這個失敗的作業所關聯的外部表,然後drop掉:
SQL> drop table system.xxx PURGE; --加上purge這個引數
4. 找出資料泵的primary表
(1)
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 68723 TABLE xxx.SYS_EXPDP_SCHEMA_01
VALID 68761 TABLE xxx.SYS_EXPDP_SCHEMA_02
VALID 68297 TABLE SYSTEM.SYS_EXPORT_FULL_01
注:
異常的job不會有輸出
(2)
select table_name, owner from dba_external_tables;
5. 刪除primary表(可選)
對於被終止的和根本不會再啟動的job,可以刪除它們的primary表:
SELECT 'DROP TABLE '||o.owner||'."'||object_name||'" PURGE;' --表名加了雙引號,用來解決有時大小寫不一致報錯的問題 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$%';
根據上面的SQL輸出,執行drop操作並清空回收站:
DROP TABLE XXX.SYS_EXPORT_SCHEMA_02 PURGE; --刪除正常暫停的job purge dba_recyclebin; --啟用了recyclebin就需要執行
6. 重新執行第2步和第4步的SQL,如果 dba_datapump_jobs 裡仍然有作業列出,並且這些作業根本沒有出現在Primary表,需要登入對應的job使用者來刪除
sqlplus xxx/xxx SET serveroutput on SET lines 100 DECLARE h1 NUMBER; BEGIN h1 := DBMS_DATAPUMP.ATTACH('SYS_EXPORT_TABLE_01','XXX'); DBMS_DATAPUMP.STOP_JOB (h1); END; / SELECT * FROM user_datapump_jobs; --刪除後再次檢視確認是否仍有輸出
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69992972/viewspace-2854526/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【ASK_ORACLE】重灌Oracle資料泵(Datapump)工具的方法Oracle
- 【DATAPUMP】Oracle資料泵定時備份刪除指令碼Oracle指令碼
- 資料夾刪除不了怎麼辦?資料夾刪除不了的解決方法
- 解決刪除Azure Active Directory的Enterprise Applications異常APP
- whk我【資料刪除】你個【資料刪除】的
- oracle db link的檢視建立與刪除Oracle
- oracle刪除重資料方法Oracle
- 如何刪除win10目錄中的資料夾_win10刪除開始選單裡資料夾的方法Win10
- 誤刪除資料了怎麼辦?小編交易誤刪除資料的恢復方法
- Oracle中刪除表中的重複資料Oracle
- 【Mongo】MongoDB索引管理-索引的建立、檢視、刪除MongoDB索引
- mysql 刪除表中重複的資料MySql
- 如何在Macbook中檢視並刪除最近下載的檔案?Mac
- 資料泵匯出匯入物化檢視(ORA-39083)
- 【北亞資料恢復】誤刪除oracle表和誤刪除oracle表資料的資料恢復方法資料恢復Oracle
- C#中刪除DataTable中的行的方法C#
- 怎麼刪除windows10的6個資料夾_windows10刪除6個資料夾的方法Windows
- Python按條件刪除Excel表格資料的方法PythonExcel
- MySQL防止delete命令刪除資料的兩種方法MySqldelete
- 怎麼刪除我的電腦裡的onedrive_win10刪除onedrive資料夾的方法Win10
- Linux環境變數的設定、檢視、刪除Linux變數
- win10系統刪除開始選單中的資料夾的方法Win10
- MySQL 中刪除的資料都去哪兒了?MySql
- Laravel 中利用『模型事件』來實現刪除資料時的連帶刪除Laravel模型事件
- mysql連結很多,批量刪除異常程式processlistMySql
- MySQL資料庫中刪除重複記錄的方法總結[推薦]MySql資料庫
- Laravel 資料庫裡的資料刪除Laravel資料庫
- 查詢陣列裡資料刪除和增加的方法陣列
- oracle刪除超過N天資料指令碼的方法Oracle指令碼
- 【常用方法推薦】如何刪除MySQL的重複資料?MySql
- sqlserver中刪除重複資料SQLServer
- 6.12php對資料庫的刪除和批量刪除PHP資料庫
- CnosDB的資料更新和刪除
- 刪除資料
- win10 異常關機檢視方法 win10 異常關機日誌怎麼看Win10
- PHP從陣列中刪除元素的方法PHP陣列
- Linux 中刪除目錄的多種方法Linux
- Python 中刪除列表元素的三種方法Python