日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

Oracle Redo log

 浸心閣 2015-07-20

Redo Logs概述

The redo log records all changes made to data, including both uncommitted and committed changes.

Oracle通過Redo來保證數(shù)據(jù)庫的事務(wù)可以被重演,從而使得在故障之后,數(shù)據(jù)可以被恢復(fù)。在數(shù)據(jù)庫中,Redo的功能主要通過3個(gè)組件來實(shí)現(xiàn):Redo Log Buffer、LGWR后臺進(jìn)程Redo Log File(在歸檔模式下,Redo Log File最終會經(jīng)由ARCn進(jìn)程寫出為歸檔日志文件)。

Redo Log Buffer位于SGA之中,是一塊循環(huán)使用的內(nèi)存區(qū)域,其保存數(shù)據(jù)庫變更的相關(guān)信息。這些信息以重做條目(Redo Entries)形式存儲(Redo Entries也經(jīng)常稱為Redo Records)。Redo Entries包含重構(gòu)、重做數(shù)據(jù)庫變更的重要信息,這些變更包括INSERT、UPDATE、DELETE、CREATE、ALTER或者DROP等。

Redo Entries的內(nèi)容被Oracle數(shù)據(jù)庫進(jìn)程從用戶的內(nèi)存空間(PGA)復(fù)制到SGA中的Redo Log Buffer之中Redo Entries在內(nèi)存中占用連續(xù)的順序空間,由于Redo Log Buffer是循環(huán)使用的,Oracle通過一個(gè)后臺進(jìn)程LGWR不斷把Redo Log Buffer的內(nèi)容寫出到Redo Log File中,Redo Log File同樣是循環(huán)使用的。


使用場景

比如我們昨天晚上備份了數(shù)據(jù)庫,但是今天中午發(fā)現(xiàn)磁盤壞掉了,那么我怎樣恢復(fù)。

我們先通過備份文件恢復(fù)到昨天晚上,然后再通過歸檔Redo日志和在線Redo日志恢復(fù)到今天中午。


Redo Log 組件

Redo Log Buffer:如果數(shù)據(jù)需要寫到在線重做日志中,則在寫至磁盤之前要在Redo Buffer中臨時(shí)緩存這些數(shù)據(jù)。由于內(nèi)存到內(nèi)存的傳輸比內(nèi)存到磁盤的傳輸快得多,因此使用重做日志Buffer可以加快數(shù)據(jù)庫的操作。數(shù)據(jù)在重做緩沖區(qū)的提留時(shí)間不會太長。實(shí)際上LGWR會在一下某個(gè)情況發(fā)生時(shí)啟動對這個(gè)區(qū)的刷新輸出(flush):

* 每3秒一次

* 無論何時(shí)有人提交請求

* 要求LGWR切換日志文件

* 重做緩沖區(qū)1/3滿,或者包含了1MB的緩存重做日志數(shù)據(jù)

LGWR:日志寫入器,LGWR負(fù)責(zé)將SGA中重做日志緩沖區(qū)的內(nèi)容刷新到磁盤上的后臺進(jìn)程。

ARCn:歸檔進(jìn)程,ARCn的任務(wù)就是,當(dāng)LGWR將在線日志文件填滿時(shí),就將其復(fù)制到另外一個(gè)位置。此后這些歸檔的重做日志文件可以用于完成介質(zhì)恢復(fù)

Redo Log Files:重做日志文件,可以查詢v$logfile找到對應(yīng)的日志文件。

Redo Logs原理

在數(shù)據(jù)更新操作commit前,將更改的SQL腳本寫入重做日志。主要用于數(shù)據(jù)庫的增量備份和增量恢復(fù)。


Online Redo Logs & ARCHIVE Redo Logs

Redo Logs分為在線重做日志和歸檔重做日志

  • online Redo log files--在線重做日志,又稱聯(lián)機(jī)重做日志,指Oracle以SQL腳本的形式實(shí)時(shí)記錄數(shù)據(jù)庫的數(shù)據(jù)更新,換句話說,實(shí)時(shí)保存已執(zhí)行的SQL腳本到在線日志文件中(按特定的格式)。
  • Archive Redo log files--歸檔重做日志,簡稱歸檔日志,指當(dāng)條件滿足時(shí),Oracle將在線重做日志以文件形式保存到硬盤(持久化)。

每個(gè)Oracle數(shù)據(jù)庫都至少有兩個(gè)Online重做日志組,每個(gè)組中至少有一個(gè)重做日志文件,這些在線重做日志組以循環(huán)方式使用。(用戶可以通過視圖操作添加/修改/刪除日志組和日志文件來自定義在線重做日志),每組內(nèi)的日志文件的內(nèi)容完全相同,且保存在不同的位置,用于磁盤日志鏡像,以做多次備份提高安全性。默認(rèn)情況這n組通常只有一組處于活動狀態(tài),不斷地同步寫入已操作的腳本,當(dāng)日志文件寫滿時(shí)(達(dá)到指定的空間配額),如果當(dāng)前數(shù)據(jù)庫處于歸檔模式,則將在線日志歸檔到硬盤,成為歸檔日志;若當(dāng)前數(shù)據(jù)庫處于非歸檔模式,則不進(jìn)行歸檔操作,而當(dāng)前在線日志的內(nèi)容會被下一次重新寫入覆蓋而無法保存。因此,通常對于生產(chǎn)環(huán)境的數(shù)據(jù)庫在運(yùn)行時(shí),是要處于歸檔模式下的,以保存數(shù)據(jù)更新的日志。當(dāng)前歸檔日志組寫滿后,Oracle會切換到下一日志組,繼續(xù)寫入,就這樣循環(huán)切換;當(dāng)處于歸檔模式下,切換至原已寫滿的日志組,若該日志組歸檔完畢則覆蓋寫入,若沒有則只能使用日志緩沖區(qū),等待歸檔完畢之后才能覆蓋寫入。當(dāng)然,處于非歸檔模式下是直接覆蓋寫入的。

歸檔重做日志文件實(shí)際上就是已填滿的“舊”的在線重做日志文件的副本。系統(tǒng)將日志文件填滿時(shí),ARCH進(jìn)程會在另一個(gè)位置建立重做日志文件的一個(gè)副本,也可以在本地或者遠(yuǎn)程位置上建立多個(gè)另外的副本。如果由于磁盤損壞或者其他物理故障而導(dǎo)致失敗,就會用這些歸檔重做日志文件來執(zhí)行介質(zhì)恢復(fù)。

默認(rèn)情況下,一個(gè)數(shù)據(jù)庫默認(rèn)為非歸檔模式,如果是非歸檔模式的話,也就說明我們沒有辦法通過日志來對數(shù)據(jù)庫做一個(gè)恢復(fù)。

Archived redo logs should be backed up and deleted regularly.
Online redo logs should not be backed up.

LGWR重復(fù)循環(huán)的寫重做日志文件,當(dāng)一個(gè)日志文件被寫滿之后,LGWR就會寫下一個(gè)Redo Log文件,當(dāng)最后一個(gè)日志文件滿了之后,LGWR就會返回來寫第一個(gè)日志文件。

Reuse of Redo Log Files by LGWR

Online Redo Log File Use in ARCHIVE LOG Mode

歸檔模式 vs 非歸檔模式

    1.非歸檔模式

        不適用與生產(chǎn)數(shù)據(jù)庫

        創(chuàng)建數(shù)據(jù)庫時(shí),缺省的日志管理模式為非歸檔模式

        當(dāng)日志切換,檢查點(diǎn)產(chǎn)生后,聯(lián)機(jī)重做日志文件即可被重新使用

        聯(lián)機(jī)日志被覆蓋后,介質(zhì)恢復(fù)僅僅支持到最近的完整備份

        不支持聯(lián)機(jī)備份表空間,一個(gè)表空間損壞將導(dǎo)致整個(gè)數(shù)據(jù)庫不可用,需要?jiǎng)h除掉損壞的表空間或從備份恢復(fù)

        對于操作系統(tǒng)級別的數(shù)據(jù)庫備份需要將數(shù)據(jù)庫一致性關(guān)閉

        應(yīng)當(dāng)備份所有的數(shù)據(jù)文件、控制文件(單個(gè))、參數(shù)文件、密碼文件、聯(lián)機(jī)日志文件(可選)

 

    2.歸檔模式

        能夠?qū)β?lián)機(jī)日志文件進(jìn)行歸檔,生產(chǎn)數(shù)據(jù)庫強(qiáng)烈建議歸檔

        在日志切換時(shí),下一個(gè)即將被寫入日志組必須歸檔完成之后,日志組才可以使用

        歸檔日志的Log sequence number信息會記錄到控制文件之中

        必須有足夠的磁盤空間用于存放歸檔日志

        Oracle 9i 需要設(shè)置參數(shù)log_archive_start=true 才能夠進(jìn)行自動歸檔

        備份與恢復(fù)

            支持熱備份,且當(dāng)某個(gè)非系統(tǒng)表空間損壞,數(shù)據(jù)庫仍然處于可用狀態(tài),且支持在線恢復(fù)

            使用歸檔日志能夠?qū)崿F(xiàn)聯(lián)機(jī)或脫機(jī)時(shí)點(diǎn)恢復(fù)(即可以恢復(fù)到指定的時(shí)間點(diǎn)、指定的歸檔日志或指定的SCN)


SQLs

V$LOGFILE 存儲了Redo logs所放置的位置

  1. SQL> SELECT * FROM v$logfile ORDER BY group#;  
  2.   
  3.     GROUP# STATUS  TYPE    MEMBER                                                 
  4. ---------- ------- ------- ----------------------------------------------------  
  5.          1         ONLINE  D:\ORACLE\PRODUCT\10.1.0\ORADATA\TEST\REDO01.LOG       
  6.          2         ONLINE  D:\ORACLE\PRODUCT\10.1.0\ORADATA\TEST\REDO02.LOG       
  7.          3 STALE   ONLINE  D:\ORACLE\PRODUCT\10.1.0\ORADATA\TEST\REDO03.LOG       
  8.   
  9. SQL>   

V$LOGFILE視圖需要關(guān)注的字段是STATUS

  • INVALID - File is inaccessible

  • STALE - File's contents are incomplete

  • DELETED - File is no longer used

  • null - File is in use


V$LOG displays log file information from the control file.

  1. SQL> SELECT * FROM v$log;   
  2.   
  3.     GROUP#    THREAD#  SEQUENCE#      BYTES    MEMBERS ARC STATUS           FIRST_CHANGE# FIRST_TIME  
  4. ---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- ----------  
  5.          1          1        344   10485760          1 NO  INACTIVE               2926216 31-7月 -12  
  6.          2          1        345   10485760          1 NO  CURRENT                2931621 31-7月 -12  
  7.          3          1        343   10485760          1 NO  INACTIVE               2900505 30-7月 -12  
  8.   
  9. SQL>   

可以看到Redo Log有3個(gè)組,關(guān)于V$LOG視圖,重點(diǎn)要關(guān)注STATUS字段

  • UNUSED - Online redo log has never been written to. This is the state of a redo log that was just added, or just after aRESETLOGS, when it is not the current redo log.

  • CURRENT - Current redo log. This implies that the redo log is active. The redo log could be open or closed.

  • ACTIVE - Log is active but is not the current log. It is needed for crash recovery. It may be in use for block recovery. It may or may not be archived.

  • CLEARING - Log is being re-created as an empty log after an ALTER DATABASE CLEAR LOGFILE statement. After the log is cleared, the status changes toUNUSED.

  • CLEARING_CURRENT - Current log is being cleared of a closed thread. The log can stay in this status if there is some failure in the switch such as an I/O error writing the new log header.

  • INACTIVE - Log is no longer needed for instance recovery. It may be in use for media recovery. It may or may not be archived.



查看是否啟用了歸檔模式

  1. SQL> archive log list  
  2. Database log mode              No Archive Mode  
  3. Automatic archival             Disabled  
  4. Archive destination            USE_DB_RECOVERY_FILE_DEST  
  5. Oldest online log sequence     342  
  6. Current log sequence           344  
  7. SQL>   

或者

  1. SELECT log_mode FROM v$database;  
  2. Output:NOARCHIVELOG  


非歸檔到歸檔模式

        a.一致性關(guān)閉數(shù)據(jù)庫(shutdown [immediate | transactional |normal])

        b.啟動到mount階段(startup mount)

        c.切換到歸檔模式(alter database archivelog  [manual])

        d.切換到open階段(alterdatabaseopen)

        e.對數(shù)據(jù)做一個(gè)完整備份(fullbackup)

        --演示非歸檔到歸檔模式

            SQL> ARCHIVE LOG LIST    --查看數(shù)據(jù)庫是否處于歸檔模式

            Database log mode              No Archive Mode

            Automatic archival             Disabled

            Archive destination            USE_DB_RECOVERY_FILE_DEST

            Oldest online log sequence     14

            Current log sequence           16

            SQL> SELECT log_mode FROM v$database; --查看數(shù)據(jù)庫是否處于歸檔模式

 

            LOG_MODE

            ------------

            NOARCHIVELOG       

 

            SQL> SHUTDOWN IMMEDIATE;     --一致性關(guān)閉數(shù)據(jù)庫

            Database closed.

            Database dismounted.

            ORACLE instance shut down.

            SQL> STARTUP MOUNT;        --啟動到mount狀態(tài)

            ORACLE instance started.

 

            Total System Global Area  251658240 bytes

            Fixed Size                  1218796 bytes

            Variable Size              75499284 bytes

            Database Buffers          171966464 bytes

            Redo Buffers                2973696 bytes

            Database mounted.

            SQL> ALTER DATABASE ARCHIVELOG; --切換到自動歸檔模式

            Database altered.

            SQL> ALTER DATABASE OPEN;       --切換到open狀態(tài)

            Database altered.

            SQL> ARCHIVE LOG LIST;           --查看數(shù)據(jù)庫的歸檔狀態(tài)

            Database log mode              Archive Mode    --已置為歸檔模式

            Automatic archival             Enabled         --對日志進(jìn)行自動歸檔

            Archive destination            USE_DB_RECOVERY_FILE_DEST

            Oldest online log sequence     14

            Next log sequence to archive   16

            Current log sequence           16

查看歸檔相關(guān)的參數(shù)

  1. SQL> SHOW PARAMETER ARCHIVE  --查看歸檔路徑是否已設(shè)置,為空值表示未設(shè)置  
  2.   
  3.    
  4.   
  5.             NAME                                 TYPE        VALUE  
  6.   
  7.             ------------------------------------ ----------- ------------------------------  
  8.   
  9.             archive_lag_target                   integer     0  
  10.   
  11.             log_archive_config                   string  
  12.   
  13.             log_archive_dest                     string  
  14.   
  15.             log_archive_dest_1                   string  
  16.   
  17.             log_archive_dest_10                  string  
  18.   
  19.             log_archive_dest_2                   string  
  20.   
  21.             log_archive_dest_3                   string  
  22.   
  23.             log_archive_dest_4                   string  
  24.   
  25.             log_archive_dest_5                   string  
  26.   
  27.             log_archive_dest_6                   string  
  28.   
  29.             log_archive_dest_7                   string  
  30.   
  31.    
  32.   
  33.             NAME                                 TYPE        VALUE  
  34.   
  35.             ------------------------------------ ----------- ------------------------------  
  36.   
  37.             log_archive_dest_8                   string  
  38.   
  39.             log_archive_dest_9                   string  
  40.   
  41.             log_archive_dest_state_1             string      enable  
  42.   
  43.             log_archive_dest_state_10            string      enable  
  44.   
  45.             log_archive_dest_state_2             string      enable  
  46.   
  47.             log_archive_dest_state_3             string      enable  
  48.   
  49.             log_archive_dest_state_4             string      enable  
  50.   
  51.             log_archive_dest_state_5             string      enable  
  52.   
  53.             log_archive_dest_state_6             string      enable  
  54.   
  55.             log_archive_dest_state_7             string      enable  
  56.   
  57.             log_archive_dest_state_8             string      enable  
  58.   
  59.    
  60.   
  61.             NAME                                 TYPE        VALUE  
  62.   
  63.             ------------------------------------ ----------- ------------------------------  
  64.   
  65.             log_archive_dest_state_9             string      enable  
  66.   
  67.             log_archive_duplex_dest              string  
  68.   
  69.             log_archive_format                   string      %t_%s_%r.dbf  
  70.   
  71.             log_archive_local_first              boolean     TRUE  
  72.   
  73.             log_archive_max_processes            integer     2  
  74.   
  75.             log_archive_min_succeed_dest         integer     1  
  76.   
  77.             log_archive_start                    boolean     FALSE --該參數(shù)在9i中使用  
  78.   
  79.             log_archive_trace                    integer     0  
  80.   
  81.             remote_archive_enable                string      true  
  82.   
  83.             standby_archive_dest                 string      ?/dbs/arch  



參考資料:

http://blog.csdn.net/robinson_0612/article/details/5784713

http://v.youku.com/v_show/id_co00XMTM2MzU0MzY=.html

Expert Oracle - Tom Kyte


轉(zhuǎn)載請注明出處:http://blog.csdn.net/pan_tian/article/details/7805077

===EOF===

版權(quán)聲明:轉(zhuǎn)載請以鏈接形式注明出處

    本站是提供個(gè)人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多