现在的位置: 首页 > 综合 > 正文

ORACLE中的日志

2013年12月10日 ⁄ 综合 ⁄ 共 1310字 ⁄ 字号 评论关闭
Redo Log
      除了与表空间联系紧密的数据文件外, Oracle还有另一个与其相关的称作Online Redo Log的操作系统文件。Redo Log也称作事务日志( Transaction Log),Orcle在这些特殊的操作系统文件中记录针对数据库进行的修改操作或事务。对数据库所做的所有修改工作都在内存中进行, Oracle这样的处理主要是出于性能方面的考虑,因为在磁盘I/O 中操作比内存中进行相应操作要慢的多。Redo Log中总是保留所有事务的一个拷贝,这样Oracle可节省将内存中修改数据操作写回原数据文件所需的时间,保存有修改情况的最终拷贝将写回到物理的数据文件中。因为所有的处理都记录在Redo Log中,因此,数据库系统可以使用这些事务记录进行恢复操作。对每一个Oracle数据库都要求至少具有两个Redo Log.

Redo Log是怎样工作的
     Redo Log以循环方式工作。比如说用户的数据库有两个Redo Log: logA和logB,当事务创建、删除以及修改数据库中的数据时,它们首先被记录在log A中,当logA填满后即产生日志交换(Log Switch),所有新的事务记录到logB中;当logB填满后,再产生一次日志交换,所有新的事务又存放到logA中.
    由于I / O的操作是最慢的操作之一,因此需要将联机重做日志存放在单独的磁盘驱动器中。
   
Redo Log的一个应用
   可以通过监控Redo Log来更高效的获得系统的变化量数据。Attunity的CDC(Change Data Capture)产品就基于此。

是否归档
    Oracle数据库可以运行在ARCHIVELOG (归档日志)或NOARCHIVELOG (非归档日志)模式下。这两种模式直接对应Redo Log。
(1) ARCHIVELOG模式
      当数据库运行在ARCHIVELOG模式时,所有的Redo log都将保存。这意味着对数据库进行的所有事务都留有一个备份,尽管Redo Log以循环方式工作,但在一个Redo Log被覆盖前均将为其建立一个拷贝。在这种方式下,如果在拷贝完成之前,数据库要求交换Redo log,则在Redo Log拷贝工作完成之前, Oracle将停止一切新的操作,在旧的事务记录完成之前
Oracle不对其进行覆盖。有了所有事务的拷贝,数据库就可以从所有类型的失败中恢复,包括用户错误或磁盘崩溃。
       这是一种最安全的数据库工作方式。提示数据库运行ARCHIVELOG模式将在其覆盖前保存重做日志拷贝,并允许扩展恢复功能,包括point in time(指定时刻的恢复)。
(2) NOARCHIVELOG模式
        在NOARCHIVELOG 模式(系统缺省模式)下,系统不保留旧的Redo Log。因为不是所有的事务记录都能保留,因此用户只能从诸如电源断电这样的事件中得到恢复(这种恢复也是有限的,因为如果在一个记录正好被填满并进行交换时断电,以前的信息将丢失)。提示数据库运行在NOARCHIVELOG模式将不能在其覆盖前保存重做日志拷贝。
在NOARCHIVELOG模式具有有限的恢复,主要被设计为在例行故障时得到保护。

抱歉!评论已关闭.