为数据库的可恢复性作准备

参考:http://blog.csdn.net/robinson_0612/article/details/5784713

        http://docs.oracle.com/cd/B13789_01/server.101/b10759/statements_2013.htm

        http://storage.chinaunix.net/stor/g/2008/07/21/1223005.shtml

为了保证数据库的最大可恢复性,

       1、必须多路复用控制文件;

       2、必须多路复用联机重做日志;

   3、必须以归档日志模式运行数据库,并多路复用归档日志文件;

       最后必须做常规备份。

一、保护控制文件

     控制文件虽小,但很重要。他用于加载数据库,在数据库加载的时候,可不断的读写控制文件。如果控制文件丢失了,则可进行恢复,但这一操作并不是很容易。因此最好不要出现这种情况。因此必须至少有两个位于不同物理设备上的控制文件副本,

    注意:最多可有八个控制文件的多路复用副本

    要移动或者增加控制文件副本,

    首先:需要关闭数据库,在数据库的打开状态,不能进行任何的控制文件操作3,

    然后,使用操作系统命令移动或者复制文件,

    再接着,编辑CONTROL_FILES参数,指向新的位置,如果使用的是静态的initSID.ora参数文件,则可以使用任何文本 编辑它,如果使用是动态的spfileD.ora参数文件,则需要以NOMOUNT模式启动数据库,发出alter system命令,并把作用域置为spfile(之所以是必要的,因为他是个静态参数),将新的副本用于数据库的加载时,

    最后,向平常一样,关闭并打开数据库。

操作过程如下:

二、保护联机重做日志

     Oracle数据库运行时,至少需要两个联机重做日志文件组(为了安全起见,每个日志文件组中,总是存在至少两个成员),

我们已经了解到:

   执行COMMIT命令的时候,在LGWR将日志缓冲区将内容写入磁盘之前,指定的会话将被挂起。只有向用户进程返回‘commit complete(提交结束)’消息后,指定会话才会继续进行,这意味着对联机重做日志的写操作,最终将会成为Oracle环境中的一个瓶颈:执行DML语句的速度不能快于LGWR进程将变更写入磁盘的速度,因此,在高吞吐量的系统中,需要确保重做日志文件位于速度最快的控制器所服务的最快的磁盘上。

   每个重做日志文件都具有一条记录的V$LOG视图,以及每个日志文件成员都具有一行的V$LOGFILE的视图,默认的使用DBCA创建的库将具有三个联机重做日志文件组,不过,每个组只包含一个成员。

    该查询表明,数据库具有三个日志文件组,此时LGWR进程正在写的组是3,其他两个组是不活动的。这首先说明。LGWR进程没有对这两个组进行写操作,其次,说明,在实例失败时,SMON进程进行实例回复不需要这两个组,换句话说,检查点(CKPT)位置被移入组3。SEQIENCE#列说明,自创建数据库以来,总共发生了19次日至切换,随着每次日志的切换,这个数字都会递增。MEMBERS列说明每个日志组由1个日志成员组成。这中做法非常的糟糕,DBA应尽可能的修复这个问题。

       该查询显示了不同的联机重做日志文件.其中每个联机重做日志文件都有GROP#来标识,并具有唯一的名称。STATUS列应该使用为空,如果日志成员为被使用(原因通常是数据库刚刚打开,并且尚未发生日志切换),则STATUS为STALE(陈旧),这种状态会一直持续到第一次日志发生切换时。如果其日志状态为INVALID,则说明存在问题。

      可以使用ALTER SYSTEM SWITCH LOGFILE来强制的进行日志的切换,但是,当切换后,原来的日志文件的状态变为active,这意味着,如果此时出现实例失败,SMON进程仍然需要刚刚切换的日志文件进行恢复,由于检查点的位置前移,因此这个组的状态不就就变为INACTIVE.

  可以发出如下的命令

ALTER SYSTEM CHECKPOINT;

可强制检查点进入最新的状态。之前的切换的日志组将即刻变为inactive 

      为了防止数据库在联机重做日志文件组受到破坏时丢失数据,请准备多路复用副本。可以使用下面的命令将多路复用副本添加到联机日志中。

 三、归档日志模式和归档器进程

      在切换日志的时候,会重写联机重做日志文件:将数据库修改为归档日至模式能够确保:如果联机重做日志文件组没有首先被复制为归档日志文件,那么不能被重写。

     归档器进程(ARCN)在每次日志切换后,将联机重做日志文件复制到一个归档日志文件,每次派生一个唯一的名称,从而生成一串连续的且能用于恢复备份的日志文件,这些日志文件的名称和位置由若干初始化参数控制,为了安全期间,归档日志可以像联机重做日志一样可以实现多路复用的功能。

    数据库只有在干净的关闭后,并且在处于加载模式时,才能被转换至归档日志模式,并且必须由建立SYSDBA的用户才可以完成。此外,还必须,设置若干控制所生成的归档日志名称和位置的初始化参数。

SELECT a.ARCHIVER FROM v$instance a;
--
SELECT ta.LOG_MODE FROM v$database ta

从非归档转为归档:

ALTER DATABASE ARCHIVELOG

 

从归档转为非归档:

ALTER DATABASE NOARCHIVELOG

可以使用

ALTER SYSTEM SWITCH LOGFILE

来强制进行日志的切换,来生成归档日志、

设置归档目的地:

使用

alter database add logfile member 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST_AUTO\REDO01a.LOG' to group 1

来设置归档日志的目的地

允许最多设置10个目标的LOG_ARCHIVE_DEST_N。

 

posted on 2012-07-22 11:00  Coldest Winter  阅读(502)  评论(0编辑  收藏  举报