Oracle 11G R2 官方文档

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 添加一个参数文件

4.RMAN恢复案例-丢失单个数据文件如何恢复

5.RMAN恢复案例-丢失整个数据表空间如何恢复

6.RMAN恢复案例-丢失SYSTEM表空间如何恢复

7.RMAN恢复案例-丢失控制文件如何恢复

8.RMAN恢复案例-丢失参数文件如何恢复

9.RMAN恢复案例-丢失重做日志文件如何恢复

10.RMAN恢复案例-存储损坏数据丢失如何恢复

11.RMAN恢复案例-不完全恢复

12.RMAN基于时间点(time)的不完全恢复

13.RMAN基于系统改变号(scn)的不完全恢复

14.RMAN基于部分数据文件与部分归档丢失的cancel不完全恢复

15.RMAN基于当前重做日志丢失的cancel不完全恢复

16.RMAN基于备份控制文件不完全恢复