一、Linux版本:
1、 备份脚本
[oracle@db1 ~]$ cat backup.sh
#!/bin/bash
. /home/oracle/.bash_profile
export ORACLE_HOME=$ORACLE_BASE/product/19.3.0/dbhome_1
export ORACLE_SID=orcl
export RMANBAK=/backup
export DATE=`date +%Y-%m-%d-%H%M`
export CMDFILE=/tmp/fullbak.rcv
export LOGFILE=$RMANBAK/$DATE/logs/rman_full_`date +%Y-%m-%d-%H%M`.log
if [ ! -d $RMANBAK/$DATE ]; then
mkdir $RMANBAK/$DATE
fi
if [ ! -d $RMANBAK/$DATE/logs ]; then
mkdir $RMANBAK/$DATE/logs
fi
cat > $CMDFILE <
connect target /
run{
CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default
CONFIGURE CONTROLFILE AUTOBACKUP ON;
allocate channel ch00 device type disk;
allocate channel ch01 device type disk;
allocate channel ch02 device type disk;
allocate channel ch03 device type disk;
crosscheck backup;
crosscheck archivelog all;
delete noprompt expired archivelog all;
delete noprompt expired backup;
report obsolete;
delete noprompt obsolete;
backup as compressed backupset database format '$RMANBAK/$DATE/full_%T_%u_%p.%d' tag='FULLDB-$DATE'
plus archivelog format '$RMANBAK/$DATE/arch_%T_%u_%p.%d' tag='ARCH-$DATE' delete all input ;
sql 'alter system archive log current';
backup current controlfile format '$RMANBAK/$DATE/control_%T_%u_%p.%d.bak';
backup spfile format '$RMANBAK\$DATE\spfile_%T_%u_%p.%d.bak';
crosscheck backup;
crosscheck archivelog all;
delete noprompt expired archivelog all;
delete noprompt expired backup;
report obsolete;
delete noprompt obsolete;
release channel ch00;
release channel ch01;
release channel ch02;
release channel ch03;
}
EOF
########################################################################
echo "started backup at : "`date +%Y%m%d-%H%M` >> $LOGFILE
echo "---------------------------------------------------">>$LOGFILE
$ORACLE_HOME/bin/rman @$CMDFILE log $LOGFILE append
echo "---------------------------------------------------">>$LOGFILE
echo "finished backup at: "`date +%Y%m%d-%H%M` >> $LOGFILE
2 、计划任务
[oracle@db1 ~]$ crontab -l
30 20 * * * /home/oracle/backup.sh
3 、检查保留备份时间或份数
[oracle@db1 ~]$ rman target /
Recovery Manager: Release 19.0.0.0.0 - Production on Mon Jul 28 21:00:25 2025
Version 19.3.0.0.0
Copyright (c) 1982, 2019, Oracle and/or its affiliates. All rights reserved.
connected to target database: ORCL (DBID=1726369794)
RMAN> show all;
using target database control file instead of recovery catalog
RMAN configuration parameters for database with db_unique_name ORCL are:
CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default (保留一份备份数据)
CONFIGURE BACKUP OPTIMIZATION ON; # default
CONFIGURE DEFAULT DEVICE TYPE TO DISK;
CONFIGURE CONTROLFILE AUTOBACKUP OFF;
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/backup/auto_%T_%F.%d';
CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET; # default
CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE MAXSETSIZE TO UNLIMITED; # default
CONFIGURE ENCRYPTION FOR DATABASE OFF; # default
CONFIGURE ENCRYPTION ALGORITHM 'AES128'; # default
CONFIGURE COMPRESSION ALGORITHM 'BASIC' AS OF RELEASE 'DEFAULT' OPTIMIZE FOR LOAD TRUE ; # default
CONFIGURE RMAN OUTPUT TO KEEP FOR 7 DAYS; # default
CONFIGURE ARCHIVELOG DELETION POLICY TO NONE; # default
CONFIGURE SNAPSHOT CONTROLFILE NAME TO '/u01/app/oracle/product/19.3.0/dbhome_1/dbs/snapcf_orcl.f'; # default
一、Windows版本:
1、 备份脚本
backup.bat(可执行文件)
@echo off
set timestamp=%date:~0,4%%date:~5,2%%date:~8,2%
mkdir d:\backup\%timestamp%
rman target / nocatalog CMDFILE 'd:\scripts\full_backup.sql' log 'd:\scripts\log\rman_backup_%timestamp%.log' append
full_backup.sql(命令文本)
run{
CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default
CONFIGURE CONTROLFILE AUTOBACKUP ON;
allocate channel ch00 device type disk;
allocate channel ch01 device type disk;
allocate channel ch02 device type disk;
allocate channel ch03 device type disk;
crosscheck backup;
crosscheck archivelog all;
delete noprompt expired archivelog all;
delete noprompt expired backup;
report obsolete;
delete noprompt obsolete;
backup as compressed backupset database format 'D:\backup\%T\full_%T_%u_%p.%d' tag='FULLDB-%T'
plus archivelog format 'D:\backup\%T\arch_%T_%u_%p.%d' delete all input;
sql 'alter system archive log current';
backup current controlfile format 'D:\backup\%T\control_%T_%u_%p.%d.bak';
backup spfile format 'D:\backup\%T\spfile_%T_%u_%p.%d.bak';
crosscheck backup;
crosscheck archivelog all;
delete noprompt expired archivelog all;
delete noprompt expired backup;
report obsolete;
delete noprompt obsolete;
release channel ch00;
release channel ch01;
release channel ch02;
release channel ch03;
}
2、 保留数据备份时间或份数
CONFIGURE RETENTION POLICY TO REDUNDANCY 2;
备注:在磁盘空间允许情况下,可以配置多个副本。