• OCA读书笔记(14)


    备份恢复概念

    如何判断数据库的一致性

    在mount状态下,oracle如何判断数据库的一致性

    scn:system change number,它是数据库时钟

    如何查询当前系统的scn:

    select current_scn from v$database;

    几个特殊的scn,在控制文件和数据文件头

    控制文件中有三个:

    1. 系统检查点scn:

    select checkpoint_change# from v$database;

    CHECKPOINT_CHANGE#
    ------------------
    1077050

    2. 控制文件中为每个数据文件记录一个检查点scn:

    ORA10G>select file#,checkpoint_change# from v$datafile;

    FILE# CHECKPOINT_CHANGE#
    ---------- ------------------
    1 1077050
    2 1077050

    3. 控制文件中还要记录每个文件的终止scn,数据库在正常运行的时候,它是无穷大的,只有在一致性关闭数据库
    的时候才不为空:

    select file#,last_change# from v$datafile;

    FILE# LAST_CHANGE#
    ---------- ------------
    1
    2

    shutdown immediate
    startup mount

    ORA10G>select file#,last_change# from v$datafile;

    FILE# LAST_CHANGE#
    ---------- ------------
    1 1079328
    2 1079328

    为什么一致性关闭就不为空?

    因为一致性关闭的时候执行了检查点,检查点通知数据库写进程写脏块,然后更新控制文件和数据文件头的检查点scn

    如果last_change#不为空,说明数据库是一致性关闭的,再次打开的时候不需要进行实例恢复

    在数据文件的文件头也记录了数据文件的检查点scn,我们一般称它为启动scn

    ORA10G>select file#,checkpoint_change# from v$datafile_header;

    FILE# CHECKPOINT_CHANGE#
    ---------- ------------------
    1 1079329
    2 1079329

    oracle通过以上的检查点scn来判断是否要进行恢复

    数据库在mount状态下,当发出open命令的时候,他要安装下列顺序检查一致性:

    首先启动scn与控制文件中记录的数据文件的检查点scn进行比较,如果一致,则继续,否则要执行恢复:

    shutdown immediate
    startup mount

    ORA10G>select file#,checkpoint_change# from v$datafile_header;

    FILE# CHECKPOINT_CHANGE#
    ---------- ------------------
    1 1080854
    2 1080854

    ORA10G>select file#,checkpoint_change# from v$datafile;

    FILE# CHECKPOINT_CHANGE#
    ---------- ------------------
    1 1080854
    2 1080854

    如一致,则比较启动scn和终止scn:

    ORA10G>select file#,checkpoint_change# from v$datafile_header;

    FILE# CHECKPOINT_CHANGE#
    ---------- ------------------
    1 1080854
    2 1080854

    ORA10G>select file#,last_change# from v$datafile;

    FILE# LAST_CHANGE#
    ---------- ------------
    1 1080854
    2 1080854

    如果一致,数据库就可以打开了,否则要就行恢复


    select file#,checkpoint_change#,last_change# from v$datafile; -- 来自控制文件
    select file#,checkpoint_change# from v$datafile_header; -- 来自数据文件文件头

    shutdown immediate;
    startup mount;

    数据文件last_change# -- A
    数据文件checkpoint_change# -- B

    数据文件头checkpoint_change# -- C
    C与A不同,需要实例恢复。
    C与B不同,则需要介质恢复。
    需要介质恢复时,决定使用哪个日志文件?比较C与日志文件中的first_change#
    select group#, sequence#, first_change# from v$log;

    MTTR(实例恢复)
    show parameter fast_start_mttr_target;

    介质故障
    常规备份
    多路复用控制文件

    多路复用日志文件组
    sqlplus / as sysdba;
    select group#,member from v$logfile;

    alter database add logfile member '/u01/app/oracle/oradata/orcl/redo0102.log' to group 1;
    select group#,member from v$logfile;

    alter database drop logfile member '/u01/app/oracle/oradata/orcl/redo0102.log';
    select group#,member from v$logfile;

    备份归档重做日志文件

    快速闪回区
    强烈建议配置快速闪回区
    存储空间与数据文件分开

    启动归档模式
    archive log list;
    shutdown immediate;
    starup mount;
    alter database archivelog;
    alter database open;
    mkdir -p /u01/app/oracle/archivelog
    alter system set log_archive_dest_1='location=/u01/app/oracle/archivelog';

    alter system switch logfile;

  • 相关阅读:
    数据库
    多并发之协程
    坚持就是胜利
    线程
    python—函数
    pycharm—项目文件下的子目录的删除
    python—字符串连接方式
    python—字符串的切割
    pycharm教程
    python—迭代
  • 原文地址:https://www.cnblogs.com/thlzhf/p/3382524.html
Copyright © 2020-2023  润新知