oracle rman备份及删除脚本、

1.环境说明:

os--linux

oracle--11.2.03

一台服务器上两个库orcl prod

RAC双节点环境,采用节点1执行定制备份及删除脚本

2.备份策略说明:

1)周1 周4 周6 执行全库备份,加上备份产生的归档,周2 周3 周日执行归档日志备份

备注:因为数据库为10g以下的小库,采用全库备份;如果是大库而且变化较小的库,采用增量备份;

2)备份保存15天,15天以前的备份删除

3)oracle数据库的归档保存30天

举例以一台服务器上多个库(orcl 和prod两个库的情况下的脚本,如果一个库可以适当的去掉循环)

3.数据库配置

3.1更改控制文件记录的备份时长

alter system set control_file_record_keep_time=31;

备份及删除脚本上有配置configure retention policy to recovery window of 15 days;

备注:

CONTROL_FILE_RECORD_KEEP_TIME参数默认保留7天。

建议CONTROL_FILE_RECORD_KEEP_TIME参数值设置不小于选中数据库的备份保存周期的值。

理论上CONTROL_FILE_RECORD_KEEP_TIME的天数必须大于等于CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF xx DAYS

4.备份及删除脚本如下:

4.1全库备份脚本:

使用oracle用户创建如下脚本

vi /home/oracle/full_bak.sh

#! /bin/bash

export NLS_LANG='AMERICAN_AMERICA.AL32UTF8'

export ORACLE_BASE=/u01/app/oracle

export ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1

export PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin

current_day=`date +%Y%m%d`

basdir=/home/oracle/rmanbackup

for i in {orcl,prod}

do

export ORACLE_SID=${i}"1"

Rdir=$basdir/$i

if [ ! -d $Rdir/$current_day ]

then

mkdir -p $Rdir/$current_day

rman target / <

run{

allocate channel d1 type disk maxpiecesize=30G;

allocate channel d2 type disk maxpiecesize=30G;

backup as compressed backupset database format '$Rdir/$current_day/full_%d_%T_%u.bkp';

sql 'alter system archive log current';

sql 'alter system archive log current';

sql 'alter system archive log current';

backup archivelog all not backed up 1 times format '$Rdir/$current_day/arclog_%d_%T_%u.bkp';

backup spfile format '$Rdir/$current_day/spfile_%d_%T_%u.bkp';

backup current controlfile format '$Rdir/$current_day/controlfile_%d_%T_%u.bkp';

crosscheck backup;

delete noprompt expired backup;

configure retention policy to recovery window of 15 days;

delete noprompt obsolete;

release channel d1;

release channel d2;

}

EOF

else

echo "$i's full db backup  on $current_day has been completed;"

fi

done

4.2归档日志备份脚本:

vi /home/oracle/arclog_bak.sh

#! /bin/bash

export NLS_LANG='AMERICAN_AMERICA.AL32UTF8'

export ORACLE_BASE=/u01/app/oracle

export ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1

export PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin

current_day=`date +%Y%m%d`

basdir=/home/oracle/rmanbackup

for i in {orcl,prod}

do

export ORACLE_SID=${i}"1"

Rdir=$basdir/$i

if [ ! -d $Rdir/$current_day ]

then

mkdir -p $Rdir/$current_day

rman target / <

run{

allocate channel d1 type disk maxpiecesize=30G;

allocate channel d2 type disk maxpiecesize=30G;

sql 'alter system archive log current';

backup archivelog all not backed up 1 times format '$Rdir/$current_day/arclog_%d_%T_%u.bkp';

backup spfile format '$Rdir/$current_day/spfile_%d_%T_%u.bkp';

backup current controlfile format '$Rdir/$current_day/controlfile_%d_%T_%u.bkp';

crosscheck backup;

delete noprompt expired backup;

configure retention policy to recovery window of 15 days;

delete noprompt obsolete;

release channel d1;

release channel d2;

}

EOF

else

echo "$i's archivelog backup  on $current_day has been completed;"

fi

done

说明:

%d:Oracle数据库名称

%T:当前时间的年月日格式(YYYYMMDD)

%u:是一个由备份集编号和建立时间压缩后组成的8字符名称。利用%u可以为每个备份集生成一个唯一的名称

4.3日志删除脚本:

vi /home/oracle/del_arclog.sh

#! /bin/bash

export NLS_LANG='AMERICAN_AMERICA.AL32UTF8'

export ORACLE_BASE=/u01/app/oracle

export ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1

export PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin

basdir=/home/oracle/rmanbackup

current_day=`date +%Y%m%d`

for i in {orcl,prod}

do

export ORACLE_SID=${i}"1"

rman target / <

run{

delete noprompt archivelog all completed before 'sysdate-30';

}

EOF

done

4.4rman删除备份后的空文件夹命令:

vi /home/oracle/del_db_bak_empty_folder.sh

#!/bin/bash

removedir=/home/oracle/rmanbackup

dt=`date +%Y%m%d -d "15 day ago"`

current_day=`date +%Y%m%d`

for i in {orcl,prod}

do

Rdir=$removedir/$i

for subdir in `du -h --max-depth=1 $Rdir |grep 4.0K |cut -d "/" -f 6`;

do

if [ "${subdir}" -lt "${dt}" ];

then

rm -rf $Rdir/$subdir >/dev/null

echo "on $current_day the empty folder $Rdir/$subdir has been removed."

fi

done

done

备注:du -h --max-depth=1 $Rdir |grep 4.0K |cut -d "/" -f 6  $Rdir的路径长度不同,-f 后面的数字要做相应的更改

4.5备份删除脚本:

如果不使用rman策略删除法可以使用如下脚本删除,弊端不能保证一定最老的备份是全备,只能判断保留距当前最近的15天的备份文件夹,建议使用rman保留备份策略来执行删除备份

vi /home/oracle/del_db_bak.sh

#!/bin/bash

removedir=/home/oracle/rmanbackup

dt=`date +%Y%m%d -d "15 day ago"`

current_day=`date +%Y%m%d`

for i in {orcl,prod}

do

Rdir=$removedir/$i

for subdir in `ls $Rdir`;

do

if [ "${subdir}" -lt "${dt}" ];

then

rm -rf $Rdir/$subdir >/dev/null

echo "on $current_day the directory $Rdir/$subdir has been removed."

fi

done

done

5.调试脚本

5.1更改脚本具有可执行权限

su - oracle

chmod u+x full_bak.sh

chmod u+x arclog_bak.sh

chmod u+x del_arclog_bak.sh

chmod u+x del_db_bak_empty_folder.sh

chmod u+x del_db_bak.sh

5.2设置定时任务前调试脚本

于脚本当前路径下执行,测试脚本

./full_bak.sh >> full_bak.log 2>&1

./arclog_bak.sh >> arclog_bak.log 2>&1

./del_arclog.sh >> del_arclog.log 2>&1

./del_db_bak_empty_folder.sh >> del_empty_folder.log 2>&1

./del_db_bak.sh >> del_bak.log 2>&1

6.配置定时任务执行脚本

在节点1上执行:

=========================

输入crontab -e

按下a键进入到编辑模式

输入如下

10 0 * * 1,4,6  /home/oracle/full_bak.sh >> /home/oracle/rmanbackup/backup.log 2>&1

10 0 * * 2,3,5,0  /home/oracle/arclog_bak.sh >> /home/oracle/rmanbackup/backup.log 2>&1

10 2 * * *  /home/oracle/del_arclog.sh >> /home/oracle/rmanbackup/del.log 2>&1

10 3 * * 1  /home/oracle/del_db_bak_empty_folder.sh >> /home/oracle/rmanbackup/del.log 2>&1

同时按下ctrl+c退出编辑模式

每周1 4 6 的0:10分执行全备脚本

每周2 3 5 日的0:10执行归档日志备份脚本

每天2:10执行删除数据库归档日志脚本

每周一的3:10执行删除备份后剩下的空文件的脚本按下shift+: 输入wq 退出 crontab

备注:

crontab -l 查看已经建立的定时任务

crontab里表示时间的五列数字取值范围和含义如下:

分钟 (0-59)

小时 (0-23)

日期 (1-31)

月份 (1-12)

星期 (0-6)    // 0 代表星期天

oracle 清理定期备份文件,RAC RMAN定期备份及删除脚本相关推荐

  1. oracle存档模式,Oracle开启归档模式并设置RMAN自动备份策略

    title: Oracle开启归档模式并设置RMAN自动备份策略 categories: 数据库 tags: - Oracle - RMAN timezone: Asia/Shanghai date: ...

  2. Oracle 10g RAC RMAN备份异机单实例恢复

    本文通过将Oracle 10g RAC RMAN的完整的备份进行异机恢复的过程,可以对在恢复的过程中可以发现备份时的一些问题.比如规档日志的冗余,控制文件与参数文件的自动备份的利用等,本示例是拿了rm ...

  3. oracle rman备份时间,Oracle使用RMAN进行备份详述

    备份理论和基本语法 备份概念 执行备份或还原的数据库称为目标.在一些环境下,有许多数据库,因此有许多RMAN目标.应一次连接每个数据库.目标的每个备份都有一些属性: 打开或关闭 完整或部分 完整或增量 ...

  4. RAC RMAN备份

    这篇主要介绍的是RAC 环境下的RMAN 备份. 关于Oracle 备份与恢复的一些理论知识参考我的Blog:       Oracle 备份 与 恢复 概述 http://blog.csdn.net ...

  5. oracle11g rac转换单机,oracle11g rac RMAN备份恢复至单机

    在一节点上进行全备 确定备份路径,并赋予属组 mkdir /rmanbackup chown oracle:oinsatll /rmanbackup 进入rman进行全备 rman target / ...

  6. oracle adg 备份,Oracle Physical Dataguard环境使用RMAN备份和恢复

    Oracle Physical Dataguard环境使用RMAN备份和恢复 由于Physical Dataguard使用的是块恢复技术来保持和PRIMARY的一致性,因此可以在STANDBY 上进行 ...

  7. rac rman备份和恢复

    RAC Rman备份和恢复 和单实例的备份和恢复稍有不同,ORACLE RAC主要是有多个实例,但是千万不要把多实例和多数据库搞混淆,在RAC中通常情况下一台服务器就是一个实例,多台服务器有一个共享存 ...

  8. rac rman 备份和恢复 1

    原创转载请注明出处 rac rman 备份和恢复 和单实例的备份和恢复稍有不同,ORACLE RAC主要是有多个实例,但是千万不要把多实例和多数据库搞混淆,在RAC中通常情况下一台服务器就是一个实例, ...

  9. oracle catalog表,RMAN catalog备份

    Oracle开启归档模式 1.开启归档 sqlplus>shutdown immediate;(启动归档前先要停止数据库) sqlplus>startup mount;(数据库以mount ...

最新文章

  1. 获取远程文章内容时,显示图片的两种方式
  2. 【Paper】2020_多智能体系统的分布式故障估计方法研究
  3. 深圳SEO外包公司×××,如何选择合适的SEO外包公司?
  4. PNG,GIF,JPG的区别及如何选
  5. mysql 用户授权
  6. css 百分比 怎么固定正方形_web前端入门到实战:一次搞懂CSS字体单位:px、em、rem和%
  7. 海报中应用广泛的书法(手写)字体素材
  8. 面试java常问的问题_java面试官常问的问题
  9. 服务中没有telnet_win7 服务中没有 prints pooler
  10. 【自学系列一】HTML5大前端学习路线+视频教程(完整版)
  11. Trello使用向导
  12. 6步学会VS封装DLL
  13. 罗技dpi计算机配置文件,罗技游戏鼠标的配置文件修改方法 Logitech 游戏软件为游戏鼠标的配置文件设置不同的 DPI...
  14. aardio - 时钟例程
  15. web手机端真机测试
  16. 07.rpx布局与样式导入
  17. 一个锂电源的恒流充电电路
  18. 计算机专业硕士毕业论文,计算机专业硕士毕业论文致谢范文
  19. MGN:Learning Discriminative Features with Multiple Granularities for Person Re-Identification阅读笔记
  20. 起点web端体验报告

热门文章

  1. 批量提取出apk文件中的classes.dex文件
  2. cytocape绘图(三)
  3. 蚂蚁森林最高效的合种团队,新树冷杉6天合种成员招募
  4. QIIME 2教程. 16纵向和成对样本比较q2-longitudinal(2021.2)
  5. 扩增子图表解读5火山图:差异OTU数量及变化规律
  6. pandas使用dropna函数计算返回dataframe中不包含缺失值的行索引列表list(index of rows without missing values in dataframe)
  7. pandas使用groupby函数、agg函数获取每个分组聚合对应的均值(mean)实战:计算分组聚合单数据列的均值、计算分组聚合多数据列的均值
  8. R语言广义线性模型Logistic回归模型列线图分析(nomogram)
  9. R可视化绘制卡方分布图(Chi-Square Distribution)
  10. python和R数据类型查看、赋值、列表、for循环、函数用法对比示例