• 2.3 备份与恢复配置


    为了防止控制文件出现介质失败,应该多元化控制文件;为了提高DB 安全运行时间(MTBF),应该多元化重做日志;为了降低例程恢复时间,需要合理地配置初始化参数。

    2.3.1 多元化控制文件

    控制文件不仅记载了DB的物理结构及状态,还记载了与备份和恢复相关的动态信息。如果DB 只包含一个控制文件,并且控制文件出现介质失败,那么会导致数据库无法装载,此时DBA 必须要重新建立控制文件或者恢复控制文件。ORACLE 建议每个DB 至少包含两个或两个以上控制文件,并且部署到不同的磁盘上。在多元化控制文件之后,它们互为镜像,内容保持一致。此时如果某个控制文件出现介质失败,那么此时DB也无法装载,但DBA 只要从初始化参数 control_files 中去掉损坏的控制文件即可。

    示例:为示例数据库增加一个控制文件

    (1)确定已存在的控制文件。

    SQL>  conn / as sysdba
    已连接。
    SQL> select  * from v$controlfile;

    STATUS  NAME                           IS_ BLOCK_SIZE FILE_SIZE_BLKS
    ------- ------------------------------ --- ---------- --------------
            D:\DEMO\CONTROL01.CTL          NO       16384            430

    (2)修改初始化参数control_files。

    SQL> ALTER SYSTEM SET CONTROL_FILES =
      2  "D:\DEMO\CONTROL01.CTL", "C:\DEMO\CONTROL02.CTL"
      3  SCOPE=SPFILE;

    系统已更改。

    (3)关闭数据库并复制控制文件。

    SQL> SHUTDOWN IMMEDIATE
    数据库已经关闭。
    已经卸载数据库。
    ORACLE 例程已经关闭。
    SQL> host copy D:\DEMO\CONTROL01.CTL C:\DEMO\CONTROL02.CTL

     

    (4)启动数据库

    SQL> STARTUP
    ORACLE 例程已经启动。

    Total System Global Area  167772160 bytes
    Fixed Size                  1247900 bytes
    Variable Size              71304548 bytes
    Database Buffers           92274688 bytes
    Redo Buffers                2945024 bytes
    数据库装载完毕。
    数据库已经打开。


    SQL> SELECT * FROM V$CONTROLFILE;

    STATUS  NAME                           IS_ BLOCK_SIZE FILE_SIZE_BLKS
    ------- ------------------------------ --- ---------- --------------
            D:\DEMO\CONTROL01.CTL          NO       16384            430
            C:\DEMO\CONTROL02.CTL          NO       16384            430

    2.3.2 多元化重做日志

    重做日志用于记录数据库变化。

    在ORACLE 中至少要包含两个或两个以上的日志组。当建立日志组时至少要指定一个日志成员。

    如果日志组只有一个日志成员,并且该成员出现损坏,那么当LGWR 切换到该日志组时,ORACLE DB 会停止运行。当该组有多个日志成员时,LGWR 将事务变化写入到没有损坏的日志成员。

    示例:增加日志成员

    (1)确定原有成员的位置

    SQL> conn / as sysdba
    已连接。
    SQL> select * from v$logfile;

    GROUP# STATUS  TYPE    MEMBER                         IS_RECOVERY_DEST_FILE
    ------- ------- ------- ------------------------------ -------------------------
          3         ONLINE  D:\DEMO\REDO03.LOG             NO
          2         ONLINE  D:\DEMO\REDO02.LOG             NO
          1         ONLINE  D:\DEMO\REDO01.LOG             NO

    (2)增加日志成员

    SQL> alter database add logfile member
      2  'C:\DEMO\REDO01_2.LOG' TO GROUP 1,
      3  'C:\DEMO\REDO02_2.LOG' TO GROUP 2,
      4  'C:\DEMO\REDO03_2.LOG' TO GROUP 3;

    数据库已更改。

    SQL> select * from v$logfile;

    GROUP# STATUS  TYPE    MEMBER                         IS_RECOVERY_DEST_FILE
    ------- ------- ------- ------------------------------ -------------------------
          3         ONLINE  D:\DEMO\REDO03.LOG             NO
          2         ONLINE  D:\DEMO\REDO02.LOG             NO
          1         ONLINE  D:\DEMO\REDO01.LOG             NO
          1 INVALID ONLINE  C:\DEMO\REDO01_2.LOG           NO
          2 INVALID ONLINE  C:\DEMO\REDO02_2.LOG           NO
          3 INVALID ONLINE  C:\DEMO\REDO03_2.LOG           NO

    已选择6行。

    2.3.3 配置例程恢复参数

    例程恢复是指当出现例程失败时由后台进程SMON 自动同步数据文件、控制文件和重做日是志并打开DB的过程。主要有以下几种情况:

    • 电源断电导致ORACLE SERVER 不可用。
    • 硬件故障导致ORACLE SERVER 不可用,例如CPU失败、内存损坏。
    • 某个必需的后台进程(DBWR、LGWR、PMON、SMON、CKPT)出现失败。

    例程恢复时间由需要应用的脏缓冲区块个数确定,脏缓冲区块个数的最大值由检查点来确定,而以下初始化参数可以用于控制检查点:

    • fast_start_mttr_target:用于指定例程恢复的最大时间(单位:秒)。
    • log_checkpoint_timeout:用于指定发出检查点的时间间隔(单位:秒)。
    • log_checkpoint_inteval:用于指定发出检查点的重做日志块间隔(单位:OS块)。

    初始化参数log_checkpoint_timeout 和 log_checkpoint_inteval 是为了与早期版本兼容而保留,建议使用fast_start_mttr_target 控制例程恢复时间。

    示例:将例程恢复时间控制在10分钟之内

    SQL> alter system set fast_start_mttr_target=600 ;

    系统已更改。

    通过查询动态性能视V$INSTANCE_RECOVERY,可以监视例程恢复的动态信息。 

    SQL> select actual_redo_blks, target_redo_blks, estimated_mttr from v$instance_recovery;
    ACTUAL_REDO_BLKS TARGET_REDO_BLKS ESTIMATED_MTTR
    ---------------- ---------------- --------------
                  24              140             11

    ACTUAL_REDO_BLKS : 用于标识当前情况下例程恢复实际需要应用的重做块个数

    TARGET_REDO_BLKS : 用于标识当前情况下例程恢复最多需要应用的重做块个数

    ESTIMATED_MTTR : 用于标识例程恢复的预计时间。

    因为例程恢复时间主要由REDO 时间和UNDO 时间确定,所以为了降低例程恢复的实际时间,应该调整REDO 和 UNDO 的时间。

    1,调整REDO时间

    为了降低例程恢复的REDO时间,可以启动多个SLAVE 进程。通过配置初始化参数recovery_parallelism,可以指定SLAVE 进程个数(该参数是静态的,修改后要重新启动例程)。

    SQL> conn / as sysdba
    已连接。
    SQL>  Alter System Set Recovery_parallelism=3 Scope=spfile;

    系统已更改。

    SQL> shutdown immediate
    数据库已经关闭。
    已经卸载数据库。
    ORACLE 例程已经关闭。
    SQL> startup
    ORACLE 例程已经启动。

    Total System Global Area  167772160 bytes
    Fixed Size                  1247900 bytes
    Variable Size              79693156 bytes
    Database Buffers           83886080 bytes
    Redo Buffers                2945024 bytes
    数据库装载完毕。
    数据库已经打开。

    2,调整UNDO时间

    为了降低例程恢复的UNDO时间,可以启动多个SLAVE进程,参数fast_start_parallel_rollback 可以控制SLAVE进程的个数。如果设置为FALSE,则不会启动SLAVE进程;如果设置为LOW,则SLAVE进程个数为2倍的CPU个数;如果设置为HIGH,则SLAVE进程个数为4倍的CPU个数。

    SQL> alter system set fast_start_parallel_rollback=low;

    系统已更改。

    当执行例程恢复时,通过查询动态性能视图v$fast_start_servers可以用于监视UNDO 操作的进程信息。

    SQL> select pid, state, undoblocksdone from v$fast_start_servers;

    未选定行

    当执行例程恢复时,通过查询动态性能视图v$fast_start_transactions 可以用于监视事务恢复的信息。

    SQL> select * from v$fast_start_transactions;

    未选定行

    E-MAIL:yiwuya@hotmail.com
    MSN:yiwuya@hotmail.com
    QQ:304899972
    纺织软件
  • 相关阅读:
    linux内核的若干问题
    shell(四)--turboastat
    Mac系统维护
    花卉养殖(1) 黄叶
    你就是佛(1)- 本体、开悟与思想
    linux 工具(2)----- crontab定时任务管理
    vim (四) 使用技巧
    linux kernel __init和__exit宏的作用
    优秀的网站
    Mac OSX 快捷键&命令行
  • 原文地址:https://www.cnblogs.com/yiwuya/p/1283876.html
Copyright © 2020-2023  润新知