【Oracle数据库】RMAN备份恢复脚本分享,附SQL实时查看进度
时间:2021-07-18
本文章向大家介绍【Oracle数据库】RMAN备份恢复脚本分享,附SQL实时查看进度,主要包括【Oracle数据库】RMAN备份恢复脚本分享,附SQL实时查看进度使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
前言
https://blog.csdn.net/m0_50546016/article/details/118863062?spm=1001.2014.3001.5501
- 使用rman进行备份恢复时,通过客户端执行记录无法直观看出进度如何,可以通过SQL进行查询。
一、RMAN备份
- 以下命令,直接复制执行即可。
1 配置备份路径和计划任务
- 备份路径设置
SCRIPTSDIR=/home/oracle/scripts BACKUPDIR=/backup mkdir -p $BACKUPDIR $SCRIPTSDIR
- 写入计划任务
cat <<EOF>>/var/spool/cron/oracle 30 00 * * 0 ${SCRIPTSDIR}/dblevel0_backup.sh 30 00 * * 1-6 ${SCRIPTSDIR}/dbleve1_backup.sh EOF
2 全备脚本
{ echo '#!/bin/sh' echo 'source ~/.bash_profile' echo 'backtime=`date +"20%y%m%d%H%M%S"`' echo "rman target / log=${BACKUPDIR}/full_backup_\${backtime}.log<<EOF" echo 'run {' echo 'allocate channel c1 device type disk;' echo 'allocate channel c2 device type disk;' echo 'crosscheck backup;' echo 'crosscheck archivelog all; ' echo 'sql"alter system switch logfile";' echo 'delete noprompt expired backup;' echo 'delete noprompt obsolete device type disk;' echo "backup database include current controlfile format '${BACKUPDIR}/backfull_%d_%T_%t_%s_%p';" echo 'backup archivelog all DELETE INPUT format '${BACKUPDIR}/archivelog_%d_%T_%t_%s_%p';' echo 'release channel c1;' echo 'release channel c2;' echo '}' echo 'EOF' } >>${SCRIPTSDIR}/dbbackup_full.sh
注意:全备脚本和增量0级备份等同。
3 增量备份脚本
- 每周日00:30 做0级增量备份脚本
{ echo '#!/bin/sh' echo 'source ~/.bash_profile' echo 'backtime=`date +"20%y%m%d%H%M%S"`' echo "rman target / log=${BACKUPDIR}/level0_backup_\${backtime}.log<<EOF" echo 'run {' echo 'allocate channel c1 device type disk;' echo 'allocate channel c2 device type disk;' echo 'crosscheck backup;' echo 'crosscheck archivelog all; ' echo 'sql"alter system switch logfile";' echo 'delete noprompt expired backup;' echo 'delete noprompt obsolete device type disk;' echo "backup incremental level 0 database include current controlfile format '${BACKUPDIR}/backlv0_%d_%T_%t_%s_%p';" echo 'backup archivelog all DELETE INPUT format '${BACKUPDIR}/archivelog_%d_%T_%t_%s_%p';' echo 'release channel c1;' echo 'release channel c2;' echo '}' echo 'EOF' } >>${SCRIPTSDIR}/dbbackup_lv0.sh
- 每周一至周六00:30 做1级增量备份脚本
{ echo '#!/bin/sh' echo 'source ~/.bash_profile' echo 'backtime=`date +"20%y%m%d%H%M%S"`' echo "rman target / log=${BACKUPDIR}/level1_backup_\${backtime}.log<<EOF" echo 'run {' echo 'allocate channel c1 device type disk;' echo 'allocate channel c2 device type disk;' echo 'crosscheck backup;' echo 'crosscheck archivelog all; ' echo 'sql"alter system switch logfile";' echo 'delete noprompt expired backup;' echo 'delete noprompt obsolete device type disk;' echo "backup incremental level 1 database include current controlfile format '${BACKUPDIR}/backlv1_%d_%T_%t_%s_%p';" echo 'backup archivelog all DELETE INPUT format '${BACKUPDIR}/archivelog_%d_%T_%t_%s_%p';' echo 'release channel c1;' echo 'release channel c2;' echo '}' echo 'EOF' } >>${SCRIPTSDIR}/dbbackup_lv1.sh
4 查看rman备份进度sql
SELECT sid, serial#, CONTEXT, sofar, totalwork, round(sofar / totalwork * 100, 2) "%_COMPLETE" FROM gv$session_longops WHERE opname LIKE 'RMAN%' AND opname NOT LIKE '%aggregate%' AND totalwork != 0 AND sofar <> totalwork;
二、RMAN恢复
1 恢复脚本
- 数据库开启到nomount
sqlplus / as sysdba
startup nomount
- rman恢复控制文件,开启数据库到mount
rman target / restore controlfile from '/backup/control.bak'; alter database mount;
- rman 恢复数据库
rman target / restore database; recover database;
- 打开数据库到resetlogs
alter database open resetlogs;
2 查看rman恢复进度sql
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%';
本次分享到此结束啦~
如果觉得文章对你有帮助,点赞、收藏、关注、评论,一键四连支持,你的支持就是我创作最大的动力。
原文地址:https://www.cnblogs.com/janus2003/p/15026038.html
- 建立可扩展的silverlight 应用框架 step-6
- .NET4.0下网站应用程序用UrlRewriter.dll重写无后缀路径 (在IIS7.5中的配置方法)
- 苹果为你的心跳开发一个读者
- 建立可扩展的silverlight 应用框架 step-5
- 安卓 iOS 版双双更新!还带来一大波小游戏
- 建立可扩展的silverlight 应用框架 step-4
- 全自动驾驶,吹牛容易实现难!有90%的人都不了解这些细节
- .NET4.0下web应用程序用UrlRewriter.dll重写无后缀路径
- Silverlight中摄像头的运用—part2
- 区块链小白投资入门操作指南(上)
- 《我的WCF之旅》博文系列汇总
- 网站出现“Service Unavailable”提示该如何解决
- Silverlight 4 中摄像头的运用—part1
- Silverlight 4 中摄像头的运用—part1
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- LeetCode题目38:外观数列
- GPUManager虚拟化方案
- [网络安全] 二.Web渗透信息收集之域名、端口、服务、指纹、旁站、CDN和敏感信息
- 程序员进阶系列:你真的懂 HelloWorld 吗?
- 零基础Python教程040期 序列分片技术
- JS实现图片弹窗效果
- [网络安全] 一.Web渗透入门基础与安全术语普及
- 多线程系列(二)之Thread类
- 多线程系列(三)之线程池
- 13 个 JavaScript 数组精简技巧
- 增强型的 <input type=number>
- Python-sqlite3-08-往数据库中写入Excel中信息
- 键盘敲入 A 字母时,操作系统期间发生了什么...
- 类与对象」NSObject对象的分类
- 如何取SQL结果集的第一条记录