没有合适的资源?快使用搜索试试~ 我知道了~
首页记一次oracle rman增量备份恢复计划
1.1 备份时间 凌晨2点(02:00:00) 1.2 备份操作 注: 增量备份模式为cumulative(累积模式) 1. 周日:0级增量备份 1. 周一:1级增量备份 1. 周二:1级增量备份 1. 周三:1级增量备份 1. 周四:0级增量备份 1. 周五:1级增量备份 1. 周六:1级增量备份 1.3 效果 保留策略为保存14天,也就是能恢复到14天内的任何时间点 并且实现本地备份+异地备份
资源详情
资源评论
资源推荐

1、备份计划
1.1 备份时间
凌晨2点(02:00:00)
1.2 备份操作
注: 增量备份模式为cumulative(累积模式)
1. 周日:0级增量备份
2. 周一:1级增量备份
3. 周二:1级增量备份
4. 周三:1级增量备份
5. 周四:0级增量备份
6. 周五:1级增量备份
7. 周六:1级增量备份
1.3 效果
保留策略为保存14天,也就是能恢复到14天内的任何时间点
并且实现本地备份+异地备份
1.4 备份的路径
归档文件备份路径: /data/oracle/ora_backup/arch/
控制文件备份路径: /data/oracle/ora_backup/controlfile/
数据库文件备份路径:/data/oracle/ora_backup/dbfile/
数据库文件备份日志路径:/data/oracle/ora_backup/dbfile_log/
数据库文件备份脚本存放目录:/data/oracle/ora_backup/script/
2、备份脚本
2.1 备份操作步骤
2.2 rman脚本
a.零级备份脚本(rman_bak_0)
#零级备份
run{

sql'alter system set control_file_record_keep_time = 15';#设置保留恢复时间
configure retention policy to recovery window of 14 days;#设置保留恢复时间
configure backup optimization on;#设置备份优化
configure controlfile autobackup on;#开启归档日志自动备份
configure controlfile autobackup format for device type disk to
'/data/oracle/ora_backup/controlfile/levl_0_incr_data%Y%m%d/PID-%F';#指定归档日志备份位置
configure device type disk parallelism 2;#采用并行度为2且压缩备份集的方式备份到磁盘
crosscheckbackup;#核对所有备份集
deletenopromptobsolete;#删除过期的备份集
deletenopromptexpiredbackup;#删除过期的备份集
sql'altersystemarchivelogcurrent';#对数据库中的所有实例执行日志切换(只归档当前日志)
b.一级备份脚本(rman_bak_1)
sql'altersystemsetcontrol_file_record_keep_time=15';
configureretentionpolicytorecoverywindowof14days;
configurebackupoptimizationon;
configurecontrolfileautobackupon;
configurecontrolfileautobackupformatfordevicetypediskto
'/data/oracle/ora_backup/level_0_incr_%T/controlfile/control_%F';
configuredevicetypediskparallelism2;
crosscheckbackup;
deletenopromptobsolete;
deletenopromptexpiredbackup;
allocatechanneldev1typedisk;
allocatechanneldev2typedisk;
backupascompressedbackupsetincrementallevel0cumulativetag='level0%t'format
'/data/oracle/ora_backup/level_0_incr_%T/dbfile/db_%n_%T_%U'database;
sql'altersystemarchivelogcurrent';
backuparchivelogallformat'/data/oracle/ora_backup/levl_0_incr_%T/arch/arc_%n_%T_%U'
deleteallinput;
releasechanneldev1;
releasechanneldev2;
}
#一级备份
run{
sql'altersystemsetcontrol_file_record_keep_time=15';
configureretentionpolicytorecoverywindowof14days;
configurebackupoptimizationon;
configurecontrolfileautobackupon;
configurecontrolfileautobackupformatfordevicetypediskto

2.3 linux脚本
a. expect脚本来自动输入密码(expect_scp)
a.零级备份(shell_rman_bak_0.sh)
'/data/oracle/ora_backup/level_1_incr_%T/controlfile/control_%F';
configuredevicetypediskparallelism2;
crosscheckbackup;
deletenopromptobsolete;
deletenopromptexpiredbackup;
allocatechanneldev1typedisk;
allocatechanneldev2typedisk;
backupascompressedbackupsetincrementallevel=1cumulativetag='level1%t'format
'/data/oracle/ora_backup/level_1_incr_%T/dbfile/db_%n_%T_%U'database;
sql'altersystemarchivelogcurrent';
backuparchivelogallformat'/data/oracle/ora_backup/levl_1_incr_%T/arch/arc_%n_%T_%U'
deleteallinput;
releasechanneldev1;
releasechanneldev2;
}
#!/data/oracle/ora_backup/script
settimeout100
setpassword"123456"#目标服务器指定用户登录密码
setsrc_file[lindex$argv0]
setdest_file[lindex$argv1]
spawnscp‐2‐r$src_file用户名@服务器ip:$dest_file
expect{
"(yes/no)?"
{
send"yes\n"
expect"*assword:"{send"$password\n"}
}
"*assword:"
{
send"$password\n"
}
}
expect"100%"
expecteof
#!/bin/bash
#incrementallevel0backupscript
#零级备份脚本
source/home/oracle/.bash_profile
current_day=`date+%Y%m%d`

b.一级备份(shell_rman_bak_1.sh)
name=`date‐dnow+%F`
incr_day=level_0_incr_$current_day
mkdir/data/oracle/ora_backup/$incr_day
mkdir/data/oracle/ora_backup/$incr_day/arch
mkdir/data/oracle/ora_backup/$incr_day/controlfile
mkdir/data/oracle/ora_backup/$incr_day/dbfile
mkdir/data/oracle/ora_backup/$incr_day/dbfile_log
echo'‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐'
echo"‐‐BeginIncrementBackupofDBDateTime:`date`‐‐"
echo'‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐'
$ORACLE_HOME/bin/rmantarget/
log=/data/oracle/ora_backup/$incr_day/dbfile_log/backup_log_$name.log<<EOF
@/data/oracle/ora_backup/script/rman_bak_0
exit
EOF
echo'‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐'
echo"‐‐EndIncrementBackupofDB10.103.23.102DateTime:`date`‐‐"
echo'‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐'
echo"‐‐startofSendfileto10.103.23.103DateTime:`date`‐‐"
/data/oracle/ora_backup/script/expect_scp/data/oracle/ora_backup/$incr_day/data/test#调用
expect_scp脚本实现异机备份
echo'‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐'
echo"‐‐EndofSendfileto10.103.23.103DateTime:`date`‐‐"
echo'‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐'
echo''
echo''
#!/bin/bash
#一级级份脚本
source/home/oracle/.bash_profile
current_day=`date+%Y%m%d`
name=`date‐dnow+%F`
incr_day=level_1_incr_$current_day
mkdir/data/oracle/ora_backup/$incr_day
mkdir/data/oracle/ora_backup/$incr_day/arch
mkdir/data/oracle/ora_backup/$incr_day/controlfile
mkdir/data/oracle/ora_backup/$incr_day/dbfile
mkdir/data/oracle/ora_backup/$incr_day/dbfile_log
echo'‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐'
echo"‐‐BeginIncrementBackupofDBDateTime:`date`‐‐"
echo'‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐'
$ORACLE_HOME/bin/rmantarget/
log=/data/oracle/ora_backup/$incr_day/dbfile_log/backup_log_$name.log<<EOF
@/data/oracle/ora_backup/script/rman_bak_1
exit
EOF
echo'‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐'
echo"‐‐EndIncrementBackupofDB10.103.23.102DateTime:`date`‐‐"
echo'‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐'
echo"‐‐startofSendfileto10.103.23.103DateTime:`date`‐‐"

源服务器 目标服务器
oracle 版本 11.2.0.1.0 - Production 11.2.0.1.0 - Production
安装目录(ORACL_HOME) /home/oracle/app/oracle/product/11.2.0/dbhome_1 /data/database/oracle/product/11.2.0/db_1
文件备份目录 /data/oracle/ora_backup /home/oracle/oradata/backup
实例名称 backdb orcl
2.4 linux 定时任务
3、恢复
RMAN恢复分为完全恢复和不完全恢复。完全恢复,顾名思义,就是基于全备的基础上对数据进行恢复。但是真实
环境中这样的恢复用得很少。相反,不完全恢复使用较多。不完全恢复,也就是通过备份文件,恢复某一个误操作
或者是某一段时间丢失的数据。不完全恢复可以基于时间,基于SCN,基于日志序列号、基于备份控制文件。本文
讲解基于时间点的不完全恢复
3.1 异机恢复
这里只给出异机完全恢复
参考:Linux平台下RMAN异机恢复总结
3.1.1 环境说明
3.1.2 将备份文件考到目标服务器的相关目录(以备份目录为例)
将在源服务器数据库备份的数据文件拷贝至目标服务器的备份目录(/home/oracle/oradata/backup)
注意: 如果在备份的linux脚本中有如图所示的命令、且expect_scp脚本中的 IP地址、目录均正确 ,则可以省略
这一步
#scp‐2‐r/data/oracle/ora_backup/$incr_dayroot@124.235.118.12:/data/test
/data/oracle/ora_backup/script/expect_scp/data/oracle/ora_backup/$incr_day/data/test#调用
expect_scp脚本实现异机备份
echo'‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐'
echo"‐‐EndofSendfileto10.103.23.103DateTime:`date`‐‐"
echo'‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐'
echo''
echo''
[oracle@liuxscript]$crontab‐e
02**0,4/data/oracle/ora_backup/script/shell_rman_bak_0.sh
02**1,2,3,5,6/data/oracle/ora_backup/script/shell_rman_bak_1.sh
剩余27页未读,继续阅读
















安全验证
文档复制为VIP权益,开通VIP直接复制

评论0