Oracle数据库的可恢复性设置

整理自《Oracle 11g OCP/OCA 认证指南

001
    为了保证数据库的最大可恢复性,必须多路复用控制文件;必须多路复用联机重做日志;必须以归档日志模式运行数据库,并多路复用归档日志文件;最后必须作常规备份。

002 保护控制文件
    控制文件虽小,但很重要。它用于加载数据库,在数据库打开时,可不断地读和写控制文件。如果控制文件丢失了,则可以进行恢复;但这一操作并不总是很容易,因此最好不要出现这种情况,因为必须至少有两个位于不同物理设备上的控制文件的副本。最多可有8个控制文件的多路复用副本。
    如果控制文件是多路复用的,那么从导致控制文件丢失的介质失败中恢复只要将备份的控制文件复制到受损或丢失的控制文件之上就行了。但控制文件受损会导致停机。当Oracle检测控制文件是受损还是丢失时,实例会因为实例失败立即终止。
    要移动或添加控制文件副本,首先关闭数据库。在数据库打开时不能进行任何控制文件操作。然后使用操作系统命令移动或复制控制文件。再接着,编辑control_files参数,指向新的位置。如果使用静态的initSID.ora参数文件,则可以用任何文本编辑器编辑它。如果使用动态的spfileSID.ora参数文件,则以nomount模式启动数据库,发出alter system命令并把作用域设为spfile(之所以是必要的,因为它是个静态参数),将新的副本用于数据库下次加载时。最后,像平常一样关闭然后打开数据库。

003 保护联机重做日志文件
    DBA不允许丢失当前联机日志文件组的所有备份。如果出现这种情况,那么就会丢失数据。在丢失当前联机日志文件组的所有成员时不丢失数据的唯一方式是配置一个无数据损失的data guard环境。
    为什么受不丢失当前联机日志文件组的所有成员至关重要呢?答案与实例恢复有关。实例崩溃后,SMON进程会使用当前联机日志文件组的内容进行前滚恢复,从而修复数据库中的任何损坏。如果当前联机日志文件组由于未被多路复用以及一个成员因介质受损被破坏而变得不可用,那么SMON进程无法进行前滚恢复。如果SMON进程无法进行前滚修正数据库的损坏,那么不可能打开数据库。
    与多路复用的控制文件一样,一个日志文件组中的多个成员在理想情况下应当位于不同的磁盘上不同的控制器上。
    对联机重做日志文件的写操作最终将成为Oracle环境中的一个瓶颈:执行DML语句的速度不能快于LGWR进程将变更写至磁盘的速度。因此在高吞吐量的系统中,需要确保重做日志文件位于速度最快的控制器所服务的最快速磁盘上。
    如果重做日志文件组的一个成员被损坏或丢失,那么数据库在存在备份成员的情况下仍然会保持打开状态。这与控制文件不同,控制文件的任何副本的损坏都会使数据库立即崩溃。同样,只要存在至少两个重做日志文件组并且每个组至少具有一个有效的成员,那么在数据库打开时也可以添加或移动重做日志文件组以及组中的成员。

004 归档日志模式和归档器进程
变量
描述
%d
唯一的数据库标识符,如果将多个数据库归档到同一目录,这是必须的
%t
线程号,显示为v$instances视图的thread#列,除了在RAC数据库中使用之外,这个变量没有任何意义
%r
场景(incarnation)号。如果进行了不完全恢复,这个变量就十分重要
%s
日志切换序列号。这个变量能够保证任何一个数据库中的归档日志都不会彼此重写
归档相关的几个参数:
log_archive_dest_n
log_archive_dest
log_archive_duplex_dest
log_archive_min_succeed_dest

    如果ARCn进程遇到写归档日志文件的问题,最终数据库会挂起。这将取决于目标数、必须成功的最少数目,以及有问题的目标是否是强制的。归档失败的一般原因是目标已满。因此有必要监视归档的进程,将归档日志文件从磁盘目标迁移至磁带,为更多的归档操作释放空间。在任何情况下,应定期将所有归档日志备份到磁带上。这可手动或使用RMAN完成。
上一篇:数论之同余


下一篇:【项目篇】Android团队项目开发之统一代码规范