关于备份和恢复的10个最佳实践
时间:2014-08-30 19:32 来源:linux.it.net.cn 作者:it
和大家分享下有关于备份和恢复的10个最佳的实践。
- 在 Archivelog 模式下运行
- 多路镜像控制文件
- 定期执行备份
- 周期性执行全库恢复测试
1.开启块检查。
这样做的目标是尽早发现数据库中的坏块。这只会占用很少的性能开销,但却可以让 Oracle 尽早检测出由底层磁盘、存储系统、或 I/O 系统问题导致的坏块。
SQL> alter system set db_block_checking = true scope=both;
2.使用 RMAN 增量备份时开启块更改跟踪(Block Change Tracking)功能(10g 及更高版本)。
更改跟踪文件包含了可以使 RMAN 增量备份进程避免读取自上次备份以来未修改的数据所需要的信息。如果不使用块更改跟踪功能,则必须读取所有块来确定自上次备份以来是否对其进行了修改。
SQL> alter database enable block change tracking using file '/u01/oradata/ora1/change_tracking.f';
3.镜像 重做日志组和成员,并将归档日志存放在多个目标位置。
通过在多个位置存放多个副本,当某个归档日志损坏或丢失时,其他日志仍然存在并可以使用。
如果某个在线日志被删除或损坏,在需要时还可以使用其他成员进行恢复。
SQL> alter system set log_archive_dest_2='location=/new/location/archive2' scope=both;
SQL> alter database add logfile member '/new/location/redo21.log' to group 1;
4. 使用 RMAN 备份数据库时使用 CHECK LOGICAL选项。
这可以使 RMAN 对数据块除了进行常规的校验和验证之外,还检查块内的逻辑损坏。这是确保您获得完好备份的最佳方法。
RMAN> backup check logical database plus archivelog delete input;
5. 测试备份。
这将执行除实际回复(restore)数据库之外的所有操作。要确定在出现问题(此时备份非常重要)之前备份是否完好以及可用,这是最好的办法。
如果使用 RMAN,可以使用以下命令执行此操作:
RMAN> restore validate database;
6. 使用 RMAN 时,将每个数据文件存放在单独的备份片(backup piece)中。
执行部分恢复时,RMAN 必须读取完整的备份片以获取需要的数据文件/归档日志。因此,备份片越小,恢复完成的速度越快。这尤其适用于对大型数据库进行的磁带备份或仅对单个/少数几个文件进行的恢复。
然而,如果 filesperset 的值很小,也会导致创建更多的备份片,因而会降低备份性能并增加维护操作时间。因此必须根据所需的恢复时间要求对这些因素加以权衡。
RMAN> backup database filesperset 1 plus archivelog delete input;
7. 维护 RMAN 目录(catalog)/控制文件
认真选择保留策略(retention policy)。确保它可以满足磁带保留策略以及备份恢复策略的要求。如果未使用目录,确保 CONTROL_FILE_RECORD_KEEP_TIME 参数与保留策略匹配。
SQL> alter system set control_file_record_keep_time=21 scope=both;
这会将备份记录在控制文件中保留 21 天。
定期运行以下目录维护命令。
原因:Delete obsolete 将删除保留策略以外的备份。
如果过期的备份未删除,则目录将不断增长,直至出现性能问题。
RMAN> delete obsolete;
原因:crosschecking 将检查目录/控制文件是否与物理备份匹配。
如果某个备份丢失,此命令会将该备份片 设为“EXPIRED”,在开始恢复时,将不使用这个备份,而使用更早的备份。要删除目录/控制文件中已过期的备份,请使用 delete expired 命令。
RMAN> crosscheck backup;
RMAN> delete expired backup;
8. 为控制文件丢失做准备。
这将确保您始终能够拥有最新的控制文件,控制文件备份在当前备份结束时执行,而不是在备份期间。
RMAN> configure controlfile autobackup on;
保留备份日志
原因:备份日志包含了磁带存取的参数、控制文件备份的位置,如果所有文件都丢失了,则可以利用该日志。
9. 测试恢复
原因:在需要执行恢复的时候,您可以不实际执行恢复就知道恢复流程是如何操作的,并可避免再次回复数据文件。
SQL> recover database test;
10. 使用RMAN 备份时,在备份归档日志时不要指定“delete all input”
原因:“delete all input”在备份一个归档目录下的归档日志后,会删除该归档日志在不同归档目录下的所有副本,而“delete input”在备份一个归档目录下的归档日志后,仅删除该目录下的归档日志,下一次备份将备份归档目录 2 下的日志以及归档目录 1 的新日志,然后删除所有备份过的日志。这意味着您将保留自最后一次备份以来在归档目录2 下可用的归档日志(包括曾备份的日志)以及上次备份之前备份的两份副本。
(责任编辑:IT)
和大家分享下有关于备份和恢复的10个最佳的实践。
- 在 Archivelog 模式下运行
1.开启块检查。
SQL> alter system set db_block_checking = true scope=both;
2.使用 RMAN 增量备份时开启块更改跟踪(Block Change Tracking)功能(10g 及更高版本)。 更改跟踪文件包含了可以使 RMAN 增量备份进程避免读取自上次备份以来未修改的数据所需要的信息。如果不使用块更改跟踪功能,则必须读取所有块来确定自上次备份以来是否对其进行了修改。
SQL> alter database enable block change tracking using file '/u01/oradata/ora1/change_tracking.f';
3.镜像 重做日志组和成员,并将归档日志存放在多个目标位置。 通过在多个位置存放多个副本,当某个归档日志损坏或丢失时,其他日志仍然存在并可以使用。 如果某个在线日志被删除或损坏,在需要时还可以使用其他成员进行恢复。
SQL> alter system set log_archive_dest_2='location=/new/location/archive2' scope=both;
SQL> alter database add logfile member '/new/location/redo21.log' to group 1; 4. 使用 RMAN 备份数据库时使用 CHECK LOGICAL选项。 这可以使 RMAN 对数据块除了进行常规的校验和验证之外,还检查块内的逻辑损坏。这是确保您获得完好备份的最佳方法。
RMAN> backup check logical database plus archivelog delete input;
5. 测试备份。 这将执行除实际回复(restore)数据库之外的所有操作。要确定在出现问题(此时备份非常重要)之前备份是否完好以及可用,这是最好的办法。 如果使用 RMAN,可以使用以下命令执行此操作:
RMAN> restore validate database;
6. 使用 RMAN 时,将每个数据文件存放在单独的备份片(backup piece)中。 执行部分恢复时,RMAN 必须读取完整的备份片以获取需要的数据文件/归档日志。因此,备份片越小,恢复完成的速度越快。这尤其适用于对大型数据库进行的磁带备份或仅对单个/少数几个文件进行的恢复。 然而,如果 filesperset 的值很小,也会导致创建更多的备份片,因而会降低备份性能并增加维护操作时间。因此必须根据所需的恢复时间要求对这些因素加以权衡。
RMAN> backup database filesperset 1 plus archivelog delete input;
7. 维护 RMAN 目录(catalog)/控制文件 认真选择保留策略(retention policy)。确保它可以满足磁带保留策略以及备份恢复策略的要求。如果未使用目录,确保 CONTROL_FILE_RECORD_KEEP_TIME 参数与保留策略匹配。
SQL> alter system set control_file_record_keep_time=21 scope=both;
这会将备份记录在控制文件中保留 21 天。 定期运行以下目录维护命令。 原因:Delete obsolete 将删除保留策略以外的备份。 如果过期的备份未删除,则目录将不断增长,直至出现性能问题。
RMAN> delete obsolete;
原因:crosschecking 将检查目录/控制文件是否与物理备份匹配。 如果某个备份丢失,此命令会将该备份片 设为“EXPIRED”,在开始恢复时,将不使用这个备份,而使用更早的备份。要删除目录/控制文件中已过期的备份,请使用 delete expired 命令。
RMAN> crosscheck backup;
RMAN> delete expired backup; 8. 为控制文件丢失做准备。 这将确保您始终能够拥有最新的控制文件,控制文件备份在当前备份结束时执行,而不是在备份期间。
RMAN> configure controlfile autobackup on;
保留备份日志 原因:备份日志包含了磁带存取的参数、控制文件备份的位置,如果所有文件都丢失了,则可以利用该日志。 9. 测试恢复 原因:在需要执行恢复的时候,您可以不实际执行恢复就知道恢复流程是如何操作的,并可避免再次回复数据文件。
SQL> recover database test;
10. 使用RMAN 备份时,在备份归档日志时不要指定“delete all input” 原因:“delete all input”在备份一个归档目录下的归档日志后,会删除该归档日志在不同归档目录下的所有副本,而“delete input”在备份一个归档目录下的归档日志后,仅删除该目录下的归档日志,下一次备份将备份归档目录 2 下的日志以及归档目录 1 的新日志,然后删除所有备份过的日志。这意味着您将保留自最后一次备份以来在归档目录2 下可用的归档日志(包括曾备份的日志)以及上次备份之前备份的两份副本。 (责任编辑:IT) |