zoukankan      html  css  js  c++  java
  • 手动创建数据库实例全攻略9:Archive Log

    一、Archive Log作用说明

    在Oracle中,数据一般是存放在数据文件中,不过数据库与Oracle最大的区别之一就是数据库可以在数据出错的时候进行恢复。这个也就是我们常见的Oracle中的重做日志(REDO FILE)的功能了。在重做日志分成2部分,一个是在线重做日志文件,另外一个就是归档日志文件。前面已经写过redo的相关信息不再详细说明在线重做日志,而是说一下归档日志(Archive Log)。在线重做日志大小毕竟是有限的,当都写满了的时候,就面临着2个选择,第一个就是把以前在线重做日志从头擦除开始继续写,第二种就是把以前的在线重做日志先进行备份,然后对被备份的日志擦除开始写新的在线Redo File。这种备份的在线重做日志就是归档日志。而数据库如果采用这种生成归档日志的模式的话,就是归档日志模式(ARCHIVELOG模式),反之如果不生成归档日志,就是非归档日志模式(NOARCHIVELOG模式)。
    
      归档日志的好处。比如在这个月1号的时候备份了一次数据,然后过了10天,这10天生成了成百上千个在线重做日志,突然发现其中有一个数据磁盘出问题了,不能用了,那我该如何是好呢。
    
      如果没有采用归档日志,那么实际上磁盘中只会有几个最新的在线重做日志。那么我只能要不然把出问题的数据磁盘上所占据的表空间都删除掉。但是如果是SYSTEM表空间所涉及的磁盘出错,就没办法这么做了,只能用第二种方法。那第二种方法就是把1号备份的数据拿出来恢复。那么1号到10号之间的10天的数据都丢了,如果是关键系统,比如证券金融什么的系统,就要让你赔钱赔死掉。
    
      但是如果有了归档日志,那么你这10天的重做日志都会存放起来,那么DBA首先把1号的备份数据恢复,然后再拿这10天的REDO日志来进行一次数据操作重放,那么就可以完全恢复最新的数据库,不会有什么后果了。
    
      在软件开发的时候,由于测试服务器的配置有限,特别是磁盘空间有限,所以有可能要限制REDO文件的大小,有可能就把系统设置为NOARCHIVELOG模式了。但是在实际的生产运行环境下,基本上一定要使用ARCHIVELOG模式,否则万一出了问题,真是哭都来不及了。
    
      有人可能会怕归档日志造成性能损失。其实这个完全是杞人忧天的,归档日志只是做一个备份,其实也就是多耗一些磁盘空间而已。在当前的软件系统中,硬盘的存储容量成本已经属于低到可以忽略的地步,而最重要的是数据库的安全。DBA的任务本来就是确保数据的安全,如果连安全都保证不了,那点微乎其微的性能提高又有什么用呢。
    
      归档日志(Archive Log)是非活动的重做日志备份.通过使用归档日志,可以保留所有重做历史记录,当数据库处于ARCHIVELOG模式并进行日志切换式,后台进程ARCH会将重做日志的内容保存到归档日志中.当数据库出现介质失败时,使用数据文件备份,归档日志和重做日志可以完全恢复数据库.
    
    归档日志(Archive Log)是非活动的重做日志备份.通过使用归档日志,可以保留所有重做历史记录,当数据库处于ARCHIVELOG模式并进行日志切换式,后台进程ARCH会将重做日志的内容保存到归档日志中.当数据库出现介质失败时,使用数据文件备份,归档日志和重做日志可以完全恢复数据库.

    二、归档非归档之间调整
    1、非归档-->归档
    1.1 关闭数据库(shutdown immediate)
    1.2 启动到mount阶段(startup mount)
    1.3 切换到归档模式(alter database archivelog [auto|manual])
    1.4 切换到open阶段(alter database open)
    1.5 完整备份(expdp/rman)

    2、手动归档管理归档[manual]
    默认是auto归档管理,如果设置为手动归档管理
    alter system archive log current | all [当前和所有]

    3、LOG_ARCHIVE_MAX_PROCESSES参数
    定制归档进程数,缺省为2
    增加归档进程数:ALTER SYSTEM SET LOG_ARCHIVE_MAX_PROCESSES=5;

    4、归档的配置和管理
    4.1 归档到本地
    alter system set log_archive_dest = '/u01/app/oracle/archivelog1' scope = spfile;
    alter system set log_archive_duplex_dest = '/u01/app/oracle/archivelog2' scope = spfile
    4.2 归档到remote设备
    alter system set log_archive_dest_1 = 'LOCATION=/u01/app/oracle/archivelog3';
    alter system set log_archive_dest_2 = 'SERVICE=standby1';
    对于远程归档位置,SERVICE选项需要指定远程数据库的网络服务名(在tnsnames.ora文件中配置)
    LOG_ARCHIVE_DEST_n的两个常用选项
    MANADATORY | OPTIONAL:
    MANADATORY表示归档必须成功复制到目的路径之后,联机重做日志才能被复用,OPTIONAL正好相反
    REOPEN:
    指定归档失败后指定间隔多少时间重试归案,缺省的为300秒
    示例:
    log_archive_dest_1 = 'LOCATION=/u01/app/oracle/archivelog3 manadatory reopen = 600'
    log_archive_dest_2 = 'SERVICE=standby1 manadatory reopen'

    c.两种归档方法异同(前者log_archive_dest、log_archive_duplex_dest ,后者log_archive_dest_n) 
    两者都可以归档到本机,后者可以归档到远程主机,前者不支持该功能 
    前者最多配置两个归档位置,后者可以配置10个归档位置 
    两者互不兼容,要么使用前者,要么使用后者 
    使用后者归档到本地时需要增加LOCATION选项,备份到远程主机需要使用SERVICE选项 
    但上述两种方式未指定路径时,归档日志位于db_recovery_file_dest 缺省为$ORACLE_BASE/flash_recovey_area

    d.归档日志命名格式 
    设置LOG_ARCHIVE_FORMAT参数,Unix下的缺省设置为LOG_ARCHIVE_FORMAT=%t_%s_%r.dbf 
    %s: 日志序列号: 
    %S: 日志序列号(带有前导) 
    %t: 重做线程编号. 
    %T: 重做线程编号(带有前导) 
    %a: 活动ID号 
    %d: 数据库ID号 
    %r RESETLOGS的ID值. 
    alter system set log_archive_format = 'arch_%t_%s_%r.arc'; 

    e.归档位置状态 
    Valid/Invalid --磁盘位置及服务名等是否有效 
    Enabled/Disabled --磁盘位置的可用状态及数据库能否使用该归档位置 
    Active/Inactive --访问归档目的地是否有异常 

    f.归档成功的最小个数(使用参数log_archive_min_succeed_dest = n) 
    alter system set log_archive_min_succeed_dest = 2; --缺省为1 
    联机重做日志组能够被覆盖的前提 
    所有强制路径归档位置成功实现归档 
    归档目的地的成功归档的个数大于或等于上述参数设定的值 
    当强制个数大于该参数设定的个数,则以强制个数为准 
    当强制个数小于该参数设定的个数,则可选的成功归档路径加上强制的归档路径个数至少等于该参数设定值 

    g.控制归档的可用性(使用参数log_archive_dest_state_n) 
    alter system set log_archive_dest_state_1 = enable | defer 
    enable -->缺省状态,可以在该归档位置进行归档 
    defer -->禁用该归档位置 

    5、归档-->非归档
    2.1 关闭数据库(shutdown immediate)
    2.2 启动到mount阶段(startup mount)
    2.3 切换到归档模式(alter database noarchivelog)
    2.4 切换到open阶段(alter database open)
    2.5 完整备份(expdp/rman)

    三、归档日志相关视图

    v$archived_log -->从控制文件中获得归档的相关信息
    v$archive_dest -->归档路径及状态
    v$log_history -->控制文件中日志的历史信息
    v$database -->查看数据库是否处于归档状态
    v$archive_processes -->归档相关的后台进程信息

    四、归档日志调整和修改

    五、小结

    归档日志是在线联机日志的备份,在数据库恢复过程中至关重要。一般生产环境均要求保持归档日志一定时间,通常保持6个月数据(看公司对数据重视程度不一而足)。归档日志操作和管理比较简单,但是日常操作应该注意和脚本化、自动化。

    六、参考

    1、robinson:http://blog.csdn.net/robinson_0612/article/details/5784713

    2、比特网:http://soft.chinabyte.com/database/46/11361046.shtml

  • 相关阅读:
    AGC037F Counting of Subarrays
    AGC025F Addition and Andition
    CF506C Mr. Kitayuta vs. Bamboos
    AGC032D Rotation Sort
    ARC101F Robots and Exits
    AGC032E Modulo Pairing
    CF559E Gerald and Path
    CF685C Optimal Point
    聊聊Mysql索引和redis跳表
    什么是线程安全
  • 原文地址:https://www.cnblogs.com/alexy/p/createdb9.html
Copyright © 2011-2022 走看看