归档日志

 Oracle可以将联机日志保存在多个不同位置,将联机日志转化为归档日志的过程叫做归档,相应的日志被称为归档日志。通过使用归档日志,可以保留所有重做历史记录,在数据库处于归档模式下进行日志切换时,后台ARCH进程会将重做日志内容保存到归档日志中。当数据库出现介质失败后,使用数据文件备份、归档日志和重做日志可以完全恢复数据库。

一、归档日志
    是联机重做日志的一个副本
    包含redo记录以及一个唯一的 log sequence number
    对日志组的一个日志文件进行归档,如果该组其中一个日志文件损坏,则另一个可用日志将会被归档
    对于归档模式的日志切换,当日志归档完成后,下一个日志才能被覆盖或者重新使用
    自动归档如开启,则后台ARCH进程在日志切换时自动完成归档,否则需要手动归档
    
    归档日志的作用
        恢复数据库
        更新standby数据库
        使用LogMiner提取历史日志的相关信息


二、日志的两种模式
    1、非归档模式NOARCHIVELOG
        不适用于生产数据库
        创建数据库时,缺省的日志管理模式是非归档模式
        当日志切换,检查点产生后,联机重做日志文件即可被重新使用
        联机日志被覆盖后,介质恢复仅仅支持到最近的完整备份
        不支持联机备份表空间,一个表空间损坏将导致整个数据库不可用,需要删除掉损坏的表空间或从备份中恢复
        对于操作系统级别的数据库备份需要将数据库一致性关闭
        应当备份所有的数据文件、控制文件、参数文件、密码文件、联机日志文件(可选)
    2、归档模式ARCHIVELOG
        能够对联机日志文件进行归档,生产数据库强烈建议归档
        在日志切换时,下一个即将被写入日志组必须归档完成之后,日志组才可以使用
        归档日志的log sequence number信息会记录在控制文件中
        必须有足够的磁盘空间用于存放归档日志
        9i需要设置参数log_archive_start=true才能够进行自动归档
        备份与恢复
            支持热备份,且当某个非系统表空间损坏,数据库仍然处于可用状态,且支持在线恢复
            使用归档日志能够实现联机与脱机时点恢复(恢复到指定时间点、指定的归档日志或者指定SCN)

三、日志模式切换及手段归档
    1、非归档到归档
        a、SQL>shutdown immediate  --一致性关闭数据库
        b、SQL>startup mount    --启动到mount阶段
        c、SQL>alter database archivelog [manual]
        d、SQL>alter database open      --打开数据库
        e、完成备份数据库    --之前数据库备份文件将失效

        SQL>  archive log list;          --查看数据库是否处于归档模式
        Database log mode        No Archive Mode   
        Automatic archival        Disabled
        Archive destination        USE_DB_RECOVERY_FILE_DEST
        Oldest online log sequence     14
        Current log sequence        17
        
        SQL>  select log_mode from v$database;

        LOG_MODE
        ------------
        NOARCHIVELOG
        
        确定归档日志的路径,可以生成多份一样的日志,保存在多个位置
        SQL> alter system set log_archive_dest_1='location=/opt/oradate/log/archive_log';
        SQL> alter system set log_archive_dest_2='location=/opt/oradate/log2/archive_log';
        SQL> shutdown immediate
        SQL> startup mount
        SQL> alter database archivelog;  切换到自动归档模式

        Database altered
        SQL> alter database open;
        
        SQL> archive log list   --查看数据库是否处于归档模式
        Database log mode        Archive Mode
        Automatic archival        Enabled         --自动归档
        Archive destination        USE_DB_RECOVERY_FILE_DEST
        Oldest online log sequence     14
        Next log sequence to archive   17
        Current log sequence        17

        SQL>  select log_mode from v$database;
        LOG_MODE
        ------------
        ARCHIVELOG     
    
    2、归档到非归档
        a、SQL>shutdown immediate  --一致性关闭数据库
        b、SQL>startup mount    --启动到mount阶段
        c、SQL>alter databse fashback off;   --若闪回数据库不关闭时,关闭归档日志时会出现ORA-38774错误
        d、SQL> alter database noarchivelog;
        e、SQL>alter database open;      --打开数据库
        f、完成备份数据库    --之前数据库备份文件将失效
    
    3、手动归档
        手动归档需要将日志切换为 alter database archivelog manual
        在使用alter system archive log current|all 实现归档
        注意
            手动归档模式不支持standby数据库
            在alter database archivelog 模式下也可实现对日志手工归档
            在手工归档模式,若未执行手工归档命令,则日志组的原有内容将不能被覆盖
            standby_archive_dest      string  ?/dbs/arch
            SQL>  alter system archive log current;

            System altered.

            SQL>  alter system archive log all;
            alter system archive log all
            *
            ERROR at line 1:
            ORA-00271: there are no logs that need archiving
            
        4、归档进程的调整
            通过设置log_archive_max_processes可以指定数据库规定的所需初始化的进程数,缺省进程数为2
            一般情况下不需要修改该参数,Oracle会根据归档情况自动启动额外的归档进程
            SQL> alter syetem set log_archive_max_processes=3;  --动态修改

四、配置归档
    a、归档到本地且少于等于两个归档位置
        设置log_archive_dest和log_archive_duplex_dest参数
        SQL> alter system set log_archive_dest='/opt/oradata/orcl/log1' scope=spfile;
        SQL> alter system set log_archive_deplex_dest='/opt/oradata/orcl/log2' scope=spfile;

    b、归档到本地和远程主机
        设置log_archive_dest_n参数,n最大值为10
        SQL> alter system set log_archive_dest_1='location=/opt/oradata/orcl/log1' 
        SQL> alter system set log_archive_dest_2='service=standby1';
        
        对于远程归档位置,service选项需要指定远程数据库的网络服务名(tnsnames.ora文件配置)
        log_archive_dest_n的两个常用选项
        MANDATORY | OPTIONAL;
            MANDATORY表示归档必须成功复制到目的路径后,联机重做日志才能被复用,OPTIONAL正好相反
        REOPEN
            指定归档失败后指定间隔多少时间重试归档,缺省为300秒
        示例:
        SQL> alter system set log_archive_dest_1='location=/opt/oradata/orcl/log1 mandatory reopen=600'
        SQL> alter system set log_archive_dest_2='service=standby1 mandatory reopen';
    
    c、两种归档方式异同
        两者都可以归档到本地,后者可以归档到远程主机,前者不支持该功能
        前者最多配置两个归档位置,后者可以配置10个归档位置
        两者不兼容,要么使用前者,要么使用后者     
        SQL> alter system set log_archive_dest='/opt/oradata mandatory reopen';
        --ORA-16018: cannot use LOG_ARCHIVE_DEST with LOG_ARCHIVE_DEST_n or DB_RECOVERY_FILE_DEST 
        使用后者备份到本地时需要增加location选项,备份到远程主机需要使用service选项
        当上述两种方式未指定路径时,归档日志位于db_recovery_file_dest 缺省值为$ORACLE_BASE/flash_recovery_area

    d、归档日志命名格式
        设置log_archive_format参数,10g中缺省设置为log_archive_format=%t_%s_%r.dbf
        %s:日志序列号
        %S:日志序列号(带有前导)
        %t:重做线程编号
        %T:重做线程编号(带有前导)
        %a:活动ID号
        %d:数据库ID号
        %r:resetlogs的ID值
        10g开始配置归档文件格式必须带有%s,%t和%r匹配符,配置之后必须重启数据库
        SQL> alter system set log_archive_format = '%a_%s.arc' scope=spfile;

        System altered.

        SQL> shutdown immediate;
        SQL> startup
        ORA-19905: log_archive_format must contain %s, %t and %r

        SQL> alter sytem set log_archive_format='arch_%t_%s_%r.arc';
        
        e、归档位置状态
            Valid/Invalid   --磁盘位置及服务名等是否有效
            Enable/Disable  --磁盘位置的可用状态及数据库能否使用该归档位置
            Active/Inactive --访问归档目的地是否有异常
        
        f、归档成功的最小个数
            SQL> alter system set log_archive_min_succeed_dest = 2;  --默认为1
            联机重做日志能够被覆盖的前提
                所有强制路径归档位置成功实现归档
                归档目的地的成功归档个数大于或等于上述参数设置的值
                当强制个数大于该参数设置的个数,则以强制个数为准
                当强制个数小于该参数设置的个数,则可选的成功归档路径加上强制的归档路径个数至少等于该参数设定值
        
        g、控制归档的可用性
            SQL> alter system set log_archive_dest_stat_1 = enable | defer;
            enable:缺省状态,可以再该归档位置进行归档
            defer:禁用该归档位置
            
        h、查看归档信息
        SQL>  host ps -ef |grep ora_arc;    --查看归档进程是否已经启动
        oracle    4679     1  0 06:45 ?        00:00:00 ora_arc0_oral
        oracle    4681     1  0 06:45 ?        00:00:00 ora_arc1_oral
        oracle    4683     1  0 06:45 ?        00:00:00 ora_arc2_oral
        
        

        SQL>  show parameter archive;

        NAME      TYPE  VALUE
        ------------------------------------ ----------- ------------------------------
        archive_lag_target      integer  0
        log_archive_config      string
        log_archive_dest        string
        log_archive_dest_1      string
        log_archive_dest_10     string
        log_archive_dest_2      string
        log_archive_dest_3      string
        log_archive_dest_4      string
        log_archive_dest_5      string
        log_archive_dest_6      string
        log_archive_dest_7      string    
        log_archive_dest_8      string
        log_archive_dest_9      string
        log_archive_dest_state_1      string  enable
        log_archive_dest_state_10      string  enable
        log_archive_dest_state_2      string  enable
        log_archive_dest_state_3      string  enable
        log_archive_dest_state_4      string  enable
        log_archive_dest_state_5      string  enable
        log_archive_dest_state_6      string  enable
        log_archive_dest_state_7      string  enable
        log_archive_dest_state_8      string  enable
        log_archive_dest_state_9      string  enable
        log_archive_duplex_dest       string
        log_archive_format      string  %t_%s_%r.dbf
        log_archive_local_first       boolean  TRUE
        log_archive_max_processes      integer  2
        log_archive_min_succeed_dest      integer  1
        log_archive_start      boolean  FALSE
        log_archive_trace      integer  0
        remote_archive_enable      string  true
        standby_archive_dest      string  ?/dbs/arch


        更改log_archive_dest与log_archive_duplex为log_archive_dest_1步骤
        SQL>alter system set log_archive_dest = '';  --先将一种归档方式路径置空
        SQL>alter system set log_archive_duplex  = '';
        SQL>alter system set log_archive_dest_1  = 'location /opt/oradata/orcl';

        SQL> select dest_name,status,archiver,destination,log_sequence,reopen_secs,
             transmit_mode,process from v$archive_dest; --查看归档目的地相关参数

        SQL> alter system set log_archive_dest_state_3  = defer;  --停用
        SQL> show parameter log_archive_dest_state;  

        NAME      TYPE  VALUE
        ------------------------------------ ----------- ------------------------------
        log_archive_dest_state_1      string  enable
        log_archive_dest_state_10      string  enable
        log_archive_dest_state_2      string  enable
         log_archive_dest_state_3     string DEFER
        log_archive_dest_state_4      string  enable
        log_archive_dest_state_5      string  enable
        log_archive_dest_state_6      string  enable
        log_archive_dest_state_7      string  enable
        log_archive_dest_state_8      string  enable
        log_archive_dest_state_9      string  enable
        
五、归档相关视图
    v$archived_log      -->从控制文件中获取
    v$archive_dest      -->归档路径及状态
    v$log_history       -->控制文件中日志的信息
    v$database          -->查看数据库归档状态
    v$archive_processes -->归档相关的后台信息

    SQL> select name,sequence#,registrar,standby_dest,archived,status from v$archived_log;

    NAME                                                                             SEQUENCE# REGISTR STA ARC S
    ---------------------------------------------------------------------------  ----------- ------- --- --- -
    /opt/oradata/orcl/1_18_814865186.dbf                                             18 FGRD    NO  YES A
    /opt/oracle/product/10.2.0/db_1/dbs/db_recovery_file_dest1_18_814865186.dbf      18 FGRD    NO  YES A
    /opt/oradata/orcl/1_19_814865186.dbf                                             19 FGRD    NO  YES A     
    /opt/oracle/product/10.2.0/db_1/dbs/db_recovery_file_dest1_19_814865186.dbf      19 FGRD    NO  YES A
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值