运维过程中没有备份工具,例如NBU等自动备份工具时,需要手动写备份脚本进行备份,下面展示0级全备份和1级增量备份脚本:
0级全备份:
#!/bin/bash
ORACLE_SID=kjdb1
ORACLE_HOME=/oracle/app/db/11.2.0
ORACLE_BASE=/oracle/app/db
export ORACLE_SID=$ORACLE_SID
export ORACLE_HOME=$ORACLE_HOME
export ORACLE_BASE=$ORACLE_BASE
backuptime='date +%Y-%m-%d_%H-%M-%S'
echo $backuptime
$ORACLE_HOME/bin/rman log=/backuporacle/log/kjdb1_backuplv0_$backuptime.log<<EOF
connect target
run{
allocate channel c1 type disk;
allocate channel c2 type disk;
allocate channel c3 type disk;
backup incremental level=0 database format '/backuporacle/kjdb/kjdb0_%d_%T_%U';
sql 'alter system archive log current';
backup archivelog all format '/backuporacle/kjdb/arch0_%t_%s' delete all input;
backup format '/backuporacle/kjdb/ctl0_%s_%p' current controlfile ;
backup spfile;
release channel c1;
release channel c2;
release channel c3;
}
crosscheck archivelog all;
crosscheck backupset;
delete noprompt obsolete;
delete noprompt expired backup;
list backup summary;
exit;
EOF
1级增量备份:
#!/bin/bash
ORACLE_SID=kjdb1
ORACLE_HOME=/oracle/app/db/11.2.0
ORACLE_BASE=/oracle/app/db
export ORACLE_SID=$ORACLE_SID
export ORACLE_HOME=$ORACLE_HOME
export ORACLE_BASE=$ORACLE_BASE
backuptime=`date +%Y-%m-%d_%H-%M-%S`
echo $backuptime
$ORACLE_HOME/bin/rman log=/backuporacle/log/kjdb1_backup1_$backuptime.log<<EOF
connect target
run{
allocate channel c1 type disk;
allocate channel c2 type disk;
backup incremental level=1 database format '/backuporacle/kjdb/kjdb1_%d_%T_%U' tag='level1';
sql 'alter system archive log current';
backup archivelog all format '/backuporacle/kjdb/arch1_%t_%s' delete all input;
backup format '/backuporacle/kjdb/ctl2_%s_%p' current controlfile;
backup spfile;
release channel c1;
release channel c2;
}
crosscheck archivelog all;
crosscheck backupset;
delete noprompt obsolete;
delete noprompt expired backup;
list backup summary;
exit;
EOF
部署定时任务,根据需求进行部署,一般按照每周做一个周期进行全备份和增量备份。