一、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 <<EOF 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; 备注:在磁盘空间允许情况下,可以配置多个副本。
