1.如何设计一个TB级数据库的RMAN备份策略
1.1 TB以下
- 用ORACLE即可实现(保存在磁盘上,5TB),也可以选择第三方备份软件 集中管理:
1)RMAN全备:每周,每天;开归档模式 2)逻辑全导出:每周 3)归档备份(第三方管理)
1.2 TB以下
- 用ORACLE+结合第三方软件(集中管理,带库,虚拟带库,大的备份存储,10TB):
1)RMAN全备:每周,开归档模式 2)归档备份:每天 3)逻辑导出:一个月只导一次结构就行了,或每天导一些重要的表。
1.3 2TB以上(集中管理,虚拟带库,第三方备份介质,几十TB,压缩功能,重复删除):
1)RMAN全备:每周,开归档模式;每个月一次加每周增量。 2)归档备份:每天 3)逻辑导出:一个月只导一次结构就行了,或每天导一些重要的表。
1.4 备份案列
- 环境
ORACLE RMAN+存储备份(1TB) 数据库1TB,每天的归档量50GB
- 备份策略
每周5,20:00全备,保留2份。5TB 归档保留10天。 1TB 恢复,全备+归档。 逻辑全导出:每周 2TB
- 备份脚本 rman_full_orcl.sh
rman target / catalog rman/rman@rman msglog '/u01/backup/logs/rman_full_itpux.log' << EOF
run {
CONFIGURE RETENTION POLICY TO REDUNDANCY 2;
allocate channel d1 type disk;
allocate channel d2 type disk;
setlimit channel d1 kbytes 102428750 maxopenfiles 32 readrate 200;
setlimit channel d2 kbytes 102428750 maxopenfiles 32 readrate 200;
sql 'alter system archive log current';
backup
incremental level 0
skip inaccessible
tag itpux_level0
filesperset 3
format '/u01//backup/datafile/orcl_rman_full_%s_%p_%t'
(database);
release channel d1;
release channel d2;
ALLOCATE CHANNEL d3 TYPE disk;
BACKUP
# recommended format
FORMAT '/u01//backup/orcl_rman_cntrl_%s_%p_%t'
CURRENT CONTROLFILE;
RELEASE CHANNEL d3;
ALLOCATE CHANNEL d4 TYPE DISK;
copy current controlfile to '/u01//backup/datafile/control_itpux.bak';
RELEASE CHANNEL d4;
}
ALLOCATE CHANNEL FOR MAINTENANCE DEVICE TYPE DISK;
run
{
report obsolete;
DELETE noprompt EXPIRED BACKUP;
DELETE noprompt EXPIRED COPY;
delete noprompt obsolete device type disk;
}
exit
EOF
- 删除归档 rman_delarch_orcl.sh
rman target / catalog rman/rman@rman msglog '/u01/backup/logs/rman_delarch_itpux.log' <<EOF
run{
crosscheck archivelog all;
delete noprompt archivelog until time "sysdate-7";
delete noprompt expired archivelog all;
}
exit
- 设置crontab
00 5 * * * su - oracle -c /u01/backup/scripts/rman_delarch_orcl.sh
00 18 * * 5 su - oracle -c /u01/backup/scripts/rman_full_orcl.sh
2.在非归档模式的RMAN备份案例
备份分为一致性备份和不完全性备份,也就是我们所说的归档模式与非归档模式的备份.创建非归档备份可以是在非归档模式下创建,并且数据库必须处于mount状态下,而且恢复的时候值能恢复到最后一次备份的状态。也就说从备份到发生故障的这段时间都将丢失
- 1.1. 检查归档状态
archive log list;
- 1.2 将数据库启动到mount状态
shutdown immediate
startup mount;
- 1.3 执行备份
rman target /
backup database;
- 2.1 非归档模式备份
shutdown immediate;
startup mount;
rman target /
backup database;
- 3.1 归档模式
alter database open
3.在归档模式的RMAN备份与恢复案例-丢失所有文件
如果要创建正式库的备份,一般不建议用非归档模式备份,也不建议用很简单的命令来完成。而是更多的采用脚本实现归档模式备份,这样将可通过backup+archive log+redo有效的将数据恢复到最近一次改变的状态,可以达到数据的丢失最小化。
- 创建归档模式备份
创建归档模式备份数据库必须处于归档(archivelog)模式,因为归档模式备份的数据库文件和控制文件的SCN号可能会不一致。 并且可以在数据库打开并不影响业务的情况下完成数据的备份工作;那么这样的备份将是归档模式的备份,那么如果要恢复可以通过backup+archive log+redo来恢复到最近一次日志切换时候的数据,而不是最后一次备份时候的数据。
- 寻找dbid
--1.可以在查看数据库警告日志
vim /u01/app/oracle/diag/rdbms/orcl/orcl/trace/alert_orcl.log
--2.在备份的控制文件中查找
--3.用BBED在备份的文件中查找
--4.在备份日志中查找
--5.配置控制文件强制启动数据库
--5.1 添加一个参数文件