Decode360's Blog

业精于勤而荒于嬉 QQ:150355677 MSN:decode360@hotmail.com

  BlogJava :: 首页 :: 新随笔 :: 联系 ::  :: 管理 ::
  302 随笔 :: 26 文章 :: 82 评论 :: 0 Trackbacks
一、存档日志概念
 
    已填满的联机重做日志文件组可以保存到一个或多个脱机目的地,这些日志就是存档日志。必须要将DATABASE设定ARCHIVELOG模式才可以使用存档,可以选择自动存档和手动存档两种方式。
 
    存档日志与被复制的联机重做日志是完全相同的,并且可以保留组的唯一日志序号。当ARCn进程进行存档时,不允许日志写入进程LGWR的使用,也不能重写联机重做日志组,直到存档完成为止。
 
 
二、ARCHIVELOG模式
 
    1、NOARCHIVELOG模式
 
    ① 当运行在NOARCHIVELOG模式时,已填满的组不需要存档,因此在日志切换后,已填充的组可以用于LGWR的重用。
    ② 要存档NOARCHIVELOG模式下的已填充组,需要进行额外的管理操作,如果不能接收任何数据丢失,那必须采用ARCHIVELOG模式。
    ③ NOARCHIVELOG模式只能保护数据库免于实例的失败,但不能避免介质失败。也就是说,只能将数据库恢复到最近的完整备份,而不能恢复后来的事务。
    ④ NOARCHIVELOG模式下,不能进行联机表空间备份。所以在这种模式下,需要定时进行数据库的备份。
 
    2、ARCHIVELOG模式
 
    使用ARCHIVELOG模式有以下好处:
    ① 数据库备份时联机重做日志文件也一起备份,可以保证在操作系统或磁盘失败时间后,恢复所有已提交的事务。
    ② 可以使用 打开数据库时以及正常系统使用中所获得的备份。
    ③ 将已存档日志用于备份数据库,可以将当前的备用数据库与原来的数据库一起保留
 
    下图说明了归档的逻辑结构:
 
    ARCHIVELOG.JPG
 
 
三、控制存档模式
 
    1、设置初始存档模式
 
    可以在CREATE DATABASE 语句中设置数据库的初始归档模式。
    一般若没有指定,都是NOARCHIVELOG模式,一开始没有什么必要指定,可以在创建后数据库之后进行修改。
 
    2、改变归档模式
 
    将NOARCHIVELOG转换到ARCHIVELOG:
    ① SHUTDOWN
    ② 备份数据库
    ③ 修改初始化参数(是否允许自动存档以及存档日志位置)
    ④ STARTUP MOUNT
    ⑤ ALTER DATABASE ARCHIVELOG;
    ⑥ ALTER DATABASE OPEN;
 
    3、允许自动存档方式
 
    ① 实例启动时
        修改初始化参数LOG_ARCHIVE_START = TRUE (下次启动时生效)
 
    ② 实例启动后
        ALTER SYSTEM ARCHIVE LOG START;
 
    ③ 存档进程的数目
        设置LOG_ARCHIVE_MAX_PROCESSES参数,最多可设置10个ARCn进程
        也可以动态修改 ALTER SYSTEM LOG_ARCHIVE_MAX_PROCESSES=3;
 
        注:一般没有必要修改LOG_ARCHIVE_MAX_PROCESSES参数的默认值1,因为Oracle会根据系统工作量适当调配ARCn进程
 
    4、禁止自动存档
 
    一旦禁止自动存档,则必须及时手动存档,否则联机重做日志文件组全部写满时,数据库会暂时中断,直到存档位置。
 
    ① 实例启动时
        LOG_ARCHIVE_START = FALSE
 
    ② 实例启动后
        ALTER SYSTEM ARCHIVE LOG STOP;
 
        注:当正在存档时禁止,则ARCn会完成当前组的存档操作,但不进行下一个日志组的存档。
 
    5、执行手动存档
 
    不管是否允许自动存档,都可以进行手动存档。
 
    ALTER SYSTEM ARCHIVE ALL;
 
    该会存档所有未存档的日志文件。
 
 
四、指定存档目标位置
 
    1、使用LOG_ARCHIVE_DEST_n定义
 
    ① 本地路径指定
    LOG_ARCHIVE_DEST_1 = 'LOCATION = /disk1/archive'
    LOG_ARCHIVE_DEST_2 = 'LOCATION = /disk2/archive'
    LOG_ARCHIVE_DEST_3 = 'LOCATION = /disk3/archive'
 
    ② 远程存档
    LOG_ARCHIVE_DEST_1 = 'SERVICE = standby1'
    注:standby1是在tnsname.ora文件中定义的网络服务名
 
    ③ 定义文件名
    LOG_ARCHIVE_FORMAT = arch%s.arc
    注:%s作为序号,%t包含线程号,%S和%T以0补充文件名左边的空白
 
    2、使用LOG_ARCHIVE_DEST和LOG_ARCHIVE_DUPLEX_DEST
 
    这个指定方法最多指定两个位置,分别是由LOG_ARCHIVE_DEST指定的主存档位置,以及LOG_ARCHIVE_DUPLEX_DEST指定的辅助存档位置
 
    举例:
    LOG_ARCHIVE_DEST = '/disk1/archive'
    LOG_ARCHIVE_DUPLEX_DEST = '/disk2/archive'
    LOG_ARCHIVE_FORMAT = arch_t%_%s.arc
 
    3、存档位置的状态
 
    通过查询v$archive_dest视图来查看状态
 
 
 




-The End-

posted on 2008-11-27 20:47 decode360-3 阅读(217) 评论(0)  编辑  收藏 所属分类: DBA

只有注册用户登录后才能发表评论。


网站导航: