签到成功

知道了

CNDBA社区CNDBA社区

Oracle RMAN备份脚本

2022-03-15 21:57 1131 0 原创 oracle
作者: hbhe0316

说明:这里的备份策略以周日全备,周一到周六归档备份为例
全库备份脚本http://www.cndba.cn/hbhe0316/article/107874

[oracle@db02 ~]$ cat rman.sh 
#!/bin/bash
export ORACLE_SID=orcl
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=/u01/app/oracle/product/19.3.0/dbhome_1
export PATH=$ORACLE_HOME/bin:$PATH
export NLS_DATE_FORMAT='YYYY-MM-DD HH24:MI:SS'

echo '-------------------------------------------------------------------'>>/tmp/full.log
echo '###################################################################'>>/tmp/full.log
echo '-------------------------------------------------------------------'>>/tmp/full.log

echo '-------------------------------------------------------------------'>>/tmp/full.log
echo '------------Start FULL Database Backup at:'`date +%Y-%m-%d:%H:%M:%S`>>/tmp/full.log
echo '-------------------------------------------------------------------'>>/tmp/full.log

rman target / nocatalog log /tmp/full.log append<<EOF
run{
allocate channel c1 type disk;
allocate channel c2 type disk;
allocate channel c3 type disk;
backup  database format '/u01/backup/full_%d_%T_%s_%p';
SQL 'alter system archive log current';
SQL 'alter system archive log current';
backup archivelog  all delete input  format '/u01/backup/arch_%d_%T_%s_%p'; 
backup current controlfile format '/u01/backup/ctl_%d_%T_%s_%p';
backup spfile format '/u01/backup/spfile_%d_%T_%s_%p';
}

EOF

echo '-------------------------------------------------------------------'>>/tmp/full.log
echo '--------------End Full Database Backup at:'`date +%Y-%m-%d:%H:%M:%S`>>/tmp/full.log
echo '-------------------------------------------------------------------'>>/tmp/full.log

rman target / nocatalog log /tmp/full.log append<<EOF
allocate channel  for maintenance type disk;
crosscheck backup;
crosscheck archivelog all;
delete noprompt obsolete;
delete noprompt expired backup;
delete noprompt expired archivelog all;
EOF
echo '-------------------------------------------------------------------'>>/tmp/full.log
echo '###################################################################'>>/tmp/full.log
echo '-------------------------------------------------------------------'>>/tmp/full.log
exit

二备份归档日志http://www.cndba.cn/hbhe0316/article/107874http://www.cndba.cn/hbhe0316/article/107874http://www.cndba.cn/hbhe0316/article/107874http://www.cndba.cn/hbhe0316/article/107874

[oracle@db02 ~]$ cat arch_backup.sh 
#!/bin/bash
export ORACLE_SID=orcl
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=/u01/app/oracle/product/19.3.0/dbhome_1
export PATH=$ORACLE_HOME/bin:$PATH
export NLS_DATE_FORMAT='YYYY-MM-DD HH24:MI:SS'

echo '-------------------------------------------------------------------'>>/tmp/arch.log
echo '###################################################################'>>/tmp/arch.log
echo '-------------------------------------------------------------------'>>/tmp/arch.log
echo '-------------------------------------------------------------------'>>/tmp/arch.log
echo '------------Start Database Arch Backup at:'`date +%Y-%m-%d:%H:%M:%S`>>/tmp/arch.log
echo '-------------------------------------------------------------------'>>/tmp/arch.log
rman target / nocatalog log /tmp/arch.log append<<EOF
run{
allocate channel c1 type disk;
allocate channel c2 type disk;
allocate channel c3 type disk;
sql 'alter system archive log current'; 
sql 'alter system archive log current'; 
sql 'alter system archive log current'; 
backup archivelog all format '/u01/backup/arch/arch_%d_%T_%s_%p' delete input ;
backup current controlfile format '/u01/backup/arch/ctl_%d_%T_%s_%p';
}
EOF

echo '-------------------------------------------------------------------'>>/tmp/arch.log
echo '---------------End Databae Arch Backup at:'`date +%Y-%m-%d:%H:%M:%S`>>/tmp/arch.log
echo '-------------------------------------------------------------------'>>/tmp/arch.log
rman target / nocatalog log /tmp/arch.log append<<EOF
allocate channel  for maintenance type disk;
crosscheck backup;
crosscheck archivelog all;
delete noprompt obsolete;
delete noprompt expired backup;
delete noprompt expired archivelog all;
EOF
echo '-------------------------------------------------------------------'>>/tmp/arch.log
echo '###################################################################'>>/tmp/arch.log
echo '-------------------------------------------------------------------'>>/tmp/arch.log
exit

注意如果是DG环境
–如果有dg备库,需要配置归档删除策略,防止备库收到不归档就被删除了。
CONFIGURE ARCHIVELOG DELETION POLICY TO APPLIED ON STANDBY;

http://www.cndba.cn/hbhe0316/article/107874
http://www.cndba.cn/hbhe0316/article/107874

[oracle@db02 ~]$ cat arch_backup_dg.sh 
#!/bin/bash
export ORACLE_SID=orcl
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=/u01/app/oracle/product/19.3.0/dbhome_1
export PATH=$ORACLE_HOME/bin:$PATH
export NLS_DATE_FORMAT='YYYY-MM-DD HH24:MI:SS'

echo '-------------------------------------------------------------------'>>/tmp/arch.log
echo '###################################################################'>>/tmp/arch.log
echo '-------------------------------------------------------------------'>>/tmp/arch.log
echo '-------------------------------------------------------------------'>>/tmp/arch.log
echo '------------Start Database Arch Backup at:'`date +%Y-%m-%d:%H:%M:%S`>>/tmp/arch.log
echo '-------------------------------------------------------------------'>>/tmp/arch.log
rman target / nocatalog log /tmp/arch.log append<<EOF
run{
CONFIGURE ARCHIVELOG DELETION POLICY TO APPLIED ON STANDBY;
allocate channel c1 type disk;
allocate channel c2 type disk;
allocate channel c3 type disk;
sql 'alter system archive log current'; 
sql 'alter system archive log current'; 
sql 'alter system archive log current'; 
backup archivelog all format '/u01/backup/arch/arch_%d_%T_%s_%p' delete input ;
backup current controlfile format '/u01/backup/arch/ctl_%d_%T_%s_%p';
}
EOF

echo '-------------------------------------------------------------------'>>/tmp/arch.log
echo '---------------End Databae Arch Backup at:'`date +%Y-%m-%d:%H:%M:%S`>>/tmp/arch.log
echo '-------------------------------------------------------------------'>>/tmp/arch.log
rman target / nocatalog log /tmp/arch.log append<<EOF
allocate channel  for maintenance type disk;
crosscheck backup;
crosscheck archivelog all;
delete noprompt obsolete;
delete noprompt expired backup;
delete noprompt expired archivelog all;
EOF
echo '-------------------------------------------------------------------'>>/tmp/arch.log
echo '###################################################################'>>/tmp/arch.log
echo '-------------------------------------------------------------------'>>/tmp/arch.log
exit

–或者这样写每次只备份和删除半天前的归档
backup archivelog until time ‘sysdate-1/2’ all delete input format ‘/orabak/fullbak/arch%D%s%p%T’;http://www.cndba.cn/hbhe0316/article/107874http://www.cndba.cn/hbhe0316/article/107874http://www.cndba.cn/hbhe0316/article/107874

[oracle@db02 ~]$ crontab -l
0 1 * * 0 bash /home/oracle/rman.sh
0 1 * * 1,2,3,4,5,6 bash /home/oracle/arch_backup.sh

版权声明:本文为博主原创文章,未经博主允许不得转载。

oracle

用户评论
* 以下用户言论只代表其个人观点,不代表CNDBA社区的观点或立场
hbhe0316

hbhe0316

关注

1.只有承认无知,才能装下新的东西; 2.进步来自一点点滴滴的积累; 3.广博让你更优秀,而专业让你无法替代; 4.挫折和失败能够转换为一种财富。

  • 889
    原创
  • 1
    翻译
  • 13
    转载
  • 24
    评论
  • 访问:1039040次
  • 积分:1523
  • 等级:核心会员
  • 排名:第6名
精华文章
    最新问题
    查看更多+
    热门文章
      热门用户
      推荐用户
        Copyright © 2016 All Rights Reserved. Powered by CNDBA · 皖ICP备2022006297号-1·

        QQ交流群

        注册联系QQ