oralce备份脚本

一、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;

备注:在磁盘空间允许情况下,可以配置多个副本。


请使用浏览器的分享功能分享到微信等