监控RMAN备份恢复的进度_监控EXPDP_IMPDP备份恢复的进度
监控RMAN备份恢复的进度_监控EXPDP_IMPDP备份恢复的进度
我们在Oracle数据库备份与恢复过程中,如果数据量过大,有什么办法知道目前的进度如何呢?以下介绍如何监控Oracle数据库RMAN备份恢复的进度及Oracle数据库
EXPDP_IMPDP备份恢复的进度
1、监控Oracle RMAN备份恢复的进度
查看rman的备份进度,可以用如下语句:
[mw_shl_code=sql,true]select sid,serial#,context,sofar,totalwork,round(sofar/totalwork*100,2) "% Complete" from v$session_longops where opname like 'RMAN:%' and opname not like 'RMAN:aggregate%' and totalwork!=0;[/mw_shl_code]
2、监控Oracle EXPDP-IMPDP备份恢复的进度
1)通过视图DBA_DATAPUBMP_JOBS和DBA_DATAPUMP_SESSIONS
当你当如导出的时候,如果数据量比较大,中途有些人会着急,不免想看看进度如何,利用DBA_DATAPUBMP_JOBS和DBA_DATAPUMP_SESSIONS两个视图就可以完成。
可以使用DBA_DATAPUBMP_JOBS和DBA_DATAPUMP_SESSIONS视图来显示数据泵取作业的信息。例如:
[mw_shl_code=sql,true]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;[/mw_shl_code]
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=test.exp
ATTACH参数解释:将你的数据泵取客户机会话加入到一个运行的作业中,并使你进行交互方式。此参数只能与用户名/密码组合一起使用。
此时你可以使用如下命令重新连接任务,并达到提前终止任务的目的:
expdp system/xxx attach=test.exp
连接进去之后再执行help命令可以查到停止任务的命令,这里就不列出来了
(3) longops视图
可以通过v$session_longops视图来监控长期运行的会话。
单机:
[mw_shl_code=sql,true]col start_time format a20
col last_update_time a30
select sid,message, start_time,last_update_time,time_remaining,elapsed_seconds from V$SESSION_LONGOPS where time_remaining>0;[/mw_shl_code]
或者:[mw_shl_code=sql,true]SELECT SE.SID,OPNAME,TRUNC(SOFAR / TOTALWORK * 100, 2) || '%' AS PCT_WORK,ELAPSED_SECONDS ELAPSED,
ROUND(ELAPSED_SECONDS * (TOTALWORK - SOFAR) / SOFAR) REMAIN_TIME,
SQL_TEXT
FROM V$SESSION_LONGOPS SL, V$SQLAREA SA, V$SESSION SE
WHERE SL.SQL_HASH_VALUE = SA.HASH_VALUE
AND SL.SID = SE.SID
AND SOFAR != TOTALWORK
ORDER BY START_TIME;[/mw_shl_code]
Oracle RAC:
[mw_shl_code=sql,true]col start_time format a20
col last_update_time a30
select inst_id,sid,message, start_time,last_update_time,time_remaining,elapsed_seconds from GV$SESSION_LONGOPS where time_remaining>0;[/mw_shl_code]
3)通过语句查看impdp进度
[mw_shl_code=sql,true]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(+);[/mw_shl_code]