RMAN定时备份和恢复脚本

来源:这里教程网 时间:2026-03-03 19:41:52 作者:

rman恢复数据文件

export ORACLE_BASE=/oracle/app
export ORACLE_HOME=/oracle/app/product/11.2.0/db_1
export ORACLE_SID=orc1
rman target / log=/oradata/backup/rman.log << EOF
run{
CATALOG BACKUPPIECE '/oradata/backup/FULL_BACKUP_20190702_49354.BAK';
CATALOG BACKUPPIECE '/oradata/backup/FULL_BACKUP_20190703_49355.BAK';
set newname for datafile 1 to '/oradata/orc1/system01.dbf';
set newname for datafile 2 to '/oradata/orc1/sysaux01.dbf';
set newname for datafile 3 to '/oradata/orc1/undotbs01.dbf';
set newname for datafile 4 to '/oradata/orc1/users01.dbf';
set newname for datafile 5 to '/oradata/orc1/example01.dbf';
set newname for datafile 6 to '/oradata/orc1/undotbs02.dbf';
set newname for datafile 7 to '/oradata/orc1/htbase01.dbf';
restore database;     
switch datafile all;
}
exit
EOF

 

windows中 rman 定时备份

rman_backup.bat 调用 backup_database.sh

rman_backup.bat

rman target / cmdfile= C:\TEMP\backup_database.sh > C:\TEMP\backupdatabaselog.log

 

backup_database.sh

run{
    crosscheck backupset;
    delete noprompt expired backupset;
    delete noprompt backupset completed before 'sysdate-10';
    backup as compressed backupset database format 'C:\TEMP\full_backup_%Y%M%D_%s.bak' tag='FULLDB';
    }

 

run{
    crosscheck backupset;
    delete noprompt expired backupset;
    delete noprompt backupset completed before 'sysdate-10';
    backup database format 'C:\TEMP\full_backup_%Y%M%D_%s.bak' tag='FULLDB';
    }

 

 

windows中rman定时备份 , 保留 2

rmanbak.bat

set var=%date:~0,4%%date:~5,2%%date:~8,2%
rman target / cmdfile='Z:\scripts\full_backup.txt' log='Z:\scripts\full_backup.log' append

 

Full_backup.txt

run{
delete noprompt backupset completed before 'sysdate-2' tag='FULLDB';
crosscheck archivelog all;
delete noprompt archivelog until time 'sysdate-7';
allocate channel d1 type disk;
backup database include current controlfile format 'Z:\rmanbak\EMRRMANFULL_%T_%s' tag='FULLDB';
release channel d1;
}

 

windows rman定时 备份脚本(只保留一天)

rmanbackp.bat :

echo %date% %time% >> C:\tmp\OracleBackUp.log
rman  target SYS/oracle nocatalog CMDFILE'C:\tmp\rmanbackup.rcv' >>C:\tmp\OracleBackUp.log

 

rmanbackup.rcv :

run {
allocate channel oem_disk_backup device type disk;
backup as compressed backupset full tag 'radinfo_full_backup' database format 'C:\tmp\full_%d_%t_%s_%p.bak';
backup as compressed backupset archivelog all format 'C:\tmp\archive_%d_%s_%p_%u.bak' delete all input;
release channel oem_disk_backup;
}
crosscheck backup;
delete noprompt expired backup;
delete noprompt obsolete;
exit

 

 

linux rman 定时备份脚本 (只保留一天)

#!/bin/ksh
. /home/oracle/.bash_profile
export ORACLE_BASE=/oracle/app
export ORACLE_HOME=/oracle/app/product/11.2.0/db_1
export ORACLE_SID=orcl2
rman target / log /backup/rman.log append<<EOF
run {
allocate channel oem_disk_backup device type disk;
backup as compressed backupset full tag 'radinfo_full_backup' database format '/backup/full_%d_%t_%s_%p.bak';
release channel oem_disk_backup;
}
crosscheck backup;
delete noprompt expired backup;--------------删除备份和归档,若要设置多保留几天,这两行勿用
delete noprompt obsolete;
#delete noprompt  backup completed before 'sysdate-7'; ------删除七天前的备份
#delete noprompt archivelog until time 'sysdate-7';------删除七天前的归档
EOF
#----set files to remote
#!/bin/bash
ftp -n 10.33.48.135 <<EOF
user root Snp123!@#
prompt
binary
lcd /backup
cd /data/dmp
mput *.bak
bye
EOF

相关推荐