如何监控oracle数据库的备份

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何监控oracle数据库的备份相关的知识,希望对你有一定的参考价值。

监控数据备份恢复完成进度(EXPDP/IMPDP/RMAN)

 

一、查看EXPDP/IMPDP的进度

1 两个视图

当你当如导出的时候,如果数据量比较大,中途有些人会着急,不免想看看进度如何,利用两个视图就可以看:

DBA_DATAPUBMP_JOBS和DBA_DATAPUMP_SESSIONS视图 
col owner_name for a10 
col job_name for a20 
col operation for a10 
col job_mode for a10 
col state for a20 
col degree for a10 
col  ATTACHED_SESSIONS for a30 
col DATAPUMP_SESSIONS for a30 
set linesize 200

格式化只是为了好看,也可以不用,直接用PL/SQL DEVELOPER图形工具。

 

可以使用DBA_DATAPUBMP_JOBS和DBA_DATAPUMP_SESSIONS视图来显示数据泵取作业的信息。

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;

补充一下,前面的sql命令行格式化有点问题,number型的字段应该用9999xxx(多个9) 而不是axx,否则会出现一串串的#。

2 attach参数

1)查看任务进度

当你使用crontab后台任务运行导入导出任务的时候,想查看任务进度,该参数很有用,可以让你再次连接到已经断开的会话中,再次接管导出或导入的任务,当然你得先用前面2个视图查到jobname。

2)中途想停止crontab后台任务

此时,该参数非常好用。因为你不这样做,就得杀进程,而那么多进程,通常都会出错,如此暴利的杀进程方式,强烈滴不推荐。

举例:

假如之前后台任务的脚本中,有类似命令:

expdp system/xxx   DIRECTORY=DATA_PUMP_DIR2  parallel=32  DUMPFILE=xxxx-%U.dmp 

ATTACH参数解释:将你的数据泵取客户机会话加入到一个运行的作业中,并使你进行交互方式。此参数只能与用户名/密码组合一起使用。
 
此时你可以使用如下命令重新连接任务,并达到提前终止任务的目的:
 
expdp system/xxx   attach=lurou.exp
连接进去之后再执行help命令可以查到停止任务的命令,这里就不列出来了
3 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(+);

 

二、查看RMAN备份进度
另外,查看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
参考技术A 主要是2方面:rman的log来看是否报错,进度可以看V$SESSION_LONGOPS

请高手解答下:如何把oracle数据库备份成压缩包的形式??

谢谢各位,是我的问题没说清楚,我想要个bat命令形式的:
1、备份数据库以当前系统日期为文件名;
2、压缩备份好的数据库,压缩完成后删除原来的备份

用 rman 可以备份成压缩包的形式
冷备后用系统自带或第三方的压缩工具通过定时作业控制, 也可以.
参考技术A 先用命令导出 ,再使用winrar压缩就行了

以上是关于如何监控oracle数据库的备份的主要内容,如果未能解决你的问题,请参考以下文章

oracle如何备份单表并在新数据库恢复?

oracle有多个整个数据库备份集 如何选择恢复的备份集

oracle如何备份表前1000行

oracle数据库如何备份与恢复

Linux/Unix shell 监控Oracle实例(monitor instance)

oracle数据库如何每天自动执行脚本完成正式数据库到备份数据库的备份