如何監控Expdp/Impdp會話進度
有時候由於expdp導出的數據量太大,而會話不小心關閉了,如何查看expdp進度如何?通過下面兩個視圖可以查看到關於expdp工作的進度和相關信息:
1、查看正在運行的job:
SELECT * FROM DBA_DATAPUBMP_JOBS;
SELECT * FROM DBA_DATAPUMP_SESSIONS;
SELECT SID,SERIAL# FROM V$SESSION S,DBA_DATAPUMP_SESSIONS D WHERE S.SADDR=D.SADDR;
SELECT SID,
SERIAL#,
S.SADDR,
S.PROGRAM,
S.USERNAME,
S.STATUS,
S.SQL_ID,
SQL.SQL_FULLTEXT
FROM V$SESSION S, DBA_DATAPUMP_SESSIONS D, V$SQLAREA SQL
WHERE S.SADDR = D.SADDR
AND S.SQL_ADDRESS = SQL.ADDRESS
AND S.SQL_ID = SQL.SQL_ID;
2、使用attach參數:
1)查看任務進度
當你使用crontab後臺任務運行導入導出任務的時候,想查看任務進度,該參數很有用,可以讓你再次連接到已經斷開的會話中,再次接管導出或導入的任務,當然你得先用前面2個視圖查到jobname。
2)中途想停止crontab後臺任務
假如之前後臺任務的腳本中,有類似命令:
expdp system/xxx DIRECTORY=DATA_PUMP_DIR2 parallel=32 DUMPFILE=xxxx-%U.dmp filesize=50G LOGFILE=xxx.log SCHEMAS=xxx job_name=lurou.exp
此時你可以使用如下命令重新連接任務,並達到提前終止任務的目的:
expdp system/xxx attach=lurou.exp
3、 v$session_longops
另也可以通過v$session_longops視圖來監控長期運行的會話。
4、通過語句查看impdp進度
SELECT a.tablespace_name,
ROUND (a.total_size) "total_size(MB)",
ROUND (a.total_size) - ROUND (b.free_size, 3) "used_size(MB)",
ROUND (b.free_size, 3) "free_size(MB)",
ROUND (b.free_size / total_size * 100, 2) || '%' free_rate
FROM ( SELECT tablespace_name, SUM (bytes) / 1024 / 1024 total_size
FROM dba_data_files
GROUP BY tablespace_name) a,
( SELECT tablespace_name, SUM (bytes) / 1024 / 1024 free_size
FROM dba_free_space
GROUP BY tablespace_name) b
WHERE a.tablespace_name = b.tablespace_name(+);
另外,還可以使用視圖v$session_longops查看RMAN備份進度
SELECT SID,OPNAME, SERIAL#, CONTEXT, SOFAR, TOTALWORK,
ROUND(SOFAR/TOTALWORK*100,2) "%_COMPLETE"
FROM V$SESSION_LONGOPS
WHERE OPNAME LIKE 'RMAN%'
AND OPNAME NOT LIKE '%aggregate%'
AND TOTALWORK != 0
AND SOFAR <> TOTALWORK
order by "%_COMPLETE"
desc
1、查看正在運行的job:
SELECT * FROM DBA_DATAPUBMP_JOBS;
SELECT * FROM DBA_DATAPUMP_SESSIONS;
SELECT SID,SERIAL# FROM V$SESSION S,DBA_DATAPUMP_SESSIONS D WHERE S.SADDR=D.SADDR;
SELECT SID,
SERIAL#,
S.SADDR,
S.PROGRAM,
S.USERNAME,
S.STATUS,
S.SQL_ID,
SQL.SQL_FULLTEXT
FROM V$SESSION S, DBA_DATAPUMP_SESSIONS D, V$SQLAREA SQL
WHERE S.SADDR = D.SADDR
AND S.SQL_ADDRESS = SQL.ADDRESS
AND S.SQL_ID = SQL.SQL_ID;
2、使用attach參數:
1)查看任務進度
當你使用crontab後臺任務運行導入導出任務的時候,想查看任務進度,該參數很有用,可以讓你再次連接到已經斷開的會話中,再次接管導出或導入的任務,當然你得先用前面2個視圖查到jobname。
2)中途想停止crontab後臺任務
假如之前後臺任務的腳本中,有類似命令:
expdp system/xxx DIRECTORY=DATA_PUMP_DIR2 parallel=32 DUMPFILE=xxxx-%U.dmp filesize=50G LOGFILE=xxx.log SCHEMAS=xxx job_name=lurou.exp
此時你可以使用如下命令重新連接任務,並達到提前終止任務的目的:
expdp system/xxx attach=lurou.exp
3、 v$session_longops
另也可以通過v$session_longops視圖來監控長期運行的會話。
4、通過語句查看impdp進度
SELECT a.tablespace_name,
ROUND (a.total_size) "total_size(MB)",
ROUND (a.total_size) - ROUND (b.free_size, 3) "used_size(MB)",
ROUND (b.free_size, 3) "free_size(MB)",
ROUND (b.free_size / total_size * 100, 2) || '%' free_rate
FROM ( SELECT tablespace_name, SUM (bytes) / 1024 / 1024 total_size
FROM dba_data_files
GROUP BY tablespace_name) a,
( SELECT tablespace_name, SUM (bytes) / 1024 / 1024 free_size
FROM dba_free_space
GROUP BY tablespace_name) b
WHERE a.tablespace_name = b.tablespace_name(+);
另外,還可以使用視圖v$session_longops查看RMAN備份進度
SELECT SID,OPNAME, SERIAL#, CONTEXT, SOFAR, TOTALWORK,
ROUND(SOFAR/TOTALWORK*100,2) "%_COMPLETE"
FROM V$SESSION_LONGOPS
WHERE OPNAME LIKE 'RMAN%'
AND OPNAME NOT LIKE '%aggregate%'
AND TOTALWORK != 0
AND SOFAR <> TOTALWORK
order by "%_COMPLETE"
desc
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.