【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%';
本次分享到此结束啦~
如果觉得文章对你有帮助,点赞、收藏、关注、评论,一键四连支持,你的支持就是我创作最大的动力。
【Oracle数据库】RMAN备份恢复脚本分享,附SQL实时查看进度的更多相关文章
- Windows下Oracle数据库自动备份批处理脚本
expdb命令版本 @echo off REM ########################################################### REM # Windows Se ...
- Oracle之RMAN备份恢复1-基础篇
1,rman的作用与体系架构 1.1 什么是rman rman(recovery manager)是oracle8i以后dba的一重要工具一般位于$oracle_home/bin目录下,主要用来备份, ...
- oracle数据库rman备份计划及恢复
1.rman完全恢复的前提条件:历史的datafile,controlfile和spfile备份,加上完整的archivelog和完好的redolog. 2.rman备份脚本: a.RMAN 0级备份 ...
- oracle数据库rman异地恢复
自己想做两组rac之间的data guard,由于datafile,controlfile,甚至是archivelog都是存放在asm上的,直接复制数据有点不现实,asm磁盘总归都是要用的,所以想从a ...
- 通过expdp/impdp进行oracle数据库的备份恢复详细指导
假定导出oracle数据库home目录为/opt/oracle,数据库用户为exp_user/test,导入用户为imp_user/test,给出如下样例,具体使用时根据实际情况修改路径及用户名/密码 ...
- oracle数据库rman备份与还原
我是oracle 界的小白,由于公司领导要求,不得不硬着头皮在网上找rman备份还原的方法,废话不多说,具体看例子(window) 运行CMD: rman target 管理员账号/密码@orcl 备 ...
- oracle数据库视图,序列,索引的sql语句查看
1.视图:相当于表,可以用select * from tab;查看所有表和视图: 2.序列和索引可以利用select * from user_indexes 或者user_sequences;进行查看 ...
- Oracle 【IT实验室】数据库备份与恢复之:如何对Oracle数据库文件进行恢复与备份
任何数据库在长期使用过程中,都会存在一定的安全隐患.对于数据库管理员来说不能仅寄希望于计算机操作系统的安全运行,而是要建立一整套的数据库备份与恢复机制.当数据库发生故障后,希望能重新建立一个完整的数据 ...
- rman备份/恢复
全备脚本 cat rman_full.sh #!/bin/bash export ORACLE_BASE=/opt/oracle export ORACLE_HOME=$ORACLE_BASE/pro ...
- DG环境数据库RMAN备份策略制定
DG环境数据库RMAN备份策略制定: 主库(Primary) 全库备份 归档备份 删除历史文件夹 备库(Standby) 删除归档 引用说明 主库(Primary) $ crontab -l 0 1 ...
随机推荐
- k8s node节点网络插件工作正常、kubelet工作正常情况下,node状态为NotReady,导致pod调度失败的排查过程。
问题背景: 生产环境中部署的K8S环境,一个业务pod无法异常退出,状态为Termnation状态,导致业务系统部分功能不可用. 排查过程: 1.使用kubectl describe pod $pod ...
- HDFS常用命令操作
HDFS常用操作命令如下: 查询目录 # 查看/目录下的目录和文件 hadoop fs -ls / # 递归查看/目录下的目录和文件 hadoop fs -lsr / 创建目录 # 新增目录/user ...
- DotTrace系列:1. 理解四大经典的诊断类型(上)
一:背景 1. 讲故事 在所有与 .NET相关的JetBrains产品中,我觉得 DotTrace 是最值得深入学习和研究的一款,个人觉得它的优点如下: 跨平台诊断 (Windows,Linux,Ma ...
- 揭秘 ChunJun:如何实现 e2e&session 日志隔离
本文将从 e2e 的基本介绍,e2e 的使用与扩展,session 日志隔离三个维度为大家带来 ChunJun e2e & session 日志隔离的分享. 大量具体代码和演示请看视频教程️ ...
- vscode GDB远程调试安卓
如果是比较新的android ndk的版本,建议使用lldb进行调试,参考:vscode lldb远程调试 - OpenFDE - OpenFDE Docs,将lldbserver push到移动端, ...
- 如何彻底关闭Antimalware Service Executable
如何彻底关闭Antimalware Service Executable? - Microsoft Community ------------------------------------< ...
- C# 字符串 MD5 转Base64 (PHP 的编码一样)
https://www.cnblogs.com/xiaochu/p/4402195.html MD5加密字符串并转化为base64(C#和PHP代码相同实现) -------PHP------代码-- ...
- 4G DTU在废品智能回收系统中的应用
1.概述 废品智能回收系统要实现的功能描述: 可回收物:可投放到智能垃圾分类回收箱的大致有这五大品类:纸类.纺织物.金属.塑料.玻璃.回收柜上各品类是分开箱体的,需要把对应的可回收物投放到对应的箱体内 ...
- ?? js 语法糖
leetcode 2619 遇到了 ?? 语法糖,简而言之 可选链功能 就是防止抛出异常 caught TypeError: Cannot read properties of undefined ( ...
- glbegin undefined 解决方案 windows
简介 RT answer 加入这两个库. LIBS += -lGLU32 LIBS += -lOpengl32 其实不用下载编译,vs自带了在目录E:\Windows Kits\10\Lib\10.0 ...