塗抹ORACLE--第16章--資料庫物理儲存結構(4)

junsansi發表於2010-03-25

塗抹ORACLE試閱章節:第16章-體系結構之資料庫結構

===========================================================================

16.1.4.2 歸檔日誌檔案(Archive Log Files)

  愛動腦筋的朋友可能會在想,既然聯機重做日誌檔案中儲存了資料庫所做的修改,那麼如果將產生的聯機重做日誌檔案全部儲存下來,不就擁有了所有資料庫執行過的操作了嘛。

  關於這一點,Oracle早就想到並且實現了,這就是傳說中的歸檔日誌檔案。

1.歸檔模式

  只有處於歸檔模式的資料庫,才會產生歸檔日誌檔案。檢視資料庫是否處於歸檔模式,可以通過如下SQL命令實現:

    SQL>  ARCHIVE LOG LIST;

    Database log mode              No Archive Mode

    Automatic archival             Disabled

    Archive destination            F:\oracle\product\10.2.0\db_1\RDBMS

    Oldest online log sequence     25

    Current log sequence           27

  上述資訊顯示當前處於非歸檔模式。

  要將資料庫置為歸檔,可以通過下列步驟操作:

    SQL>  ALTER SYSTEM SET LOG_ARCHIVE_DEST_1 = ' location=F:\oracle\oradata\jssbook\archive ' ;

    System altered.

    提示:

    本步操作的目的是修改歸檔路徑,將歸檔檔案存放在資料檔案所在目錄下的archive目錄中。預設歸檔檔案存放於Oracle軟體安裝路徑下的RDBMS目錄下,一般都建議歸檔檔案單獨存放。

  關閉資料庫,並重新啟用到 MOUNT 狀態:

    SQL>  SHUTDOWN IMMEDIATE

    Database closed.

    Database dismounted.

    ORACLE instance shut down.

    SQL>  STARTUP MOUNT

    ORACLE instance started.

    Total System Global Area  314572800 bytes

    Fixed Size                  1248720 bytes

    Variable Size              67109424 bytes

    Database Buffers          239075328 bytes

    Redo Buffers                7139328 bytes

    Database mounted.

  通過 ALTER DATABASE 命令將資料庫置為歸檔:

    SQL>   ALTER DATABASE ARCHIVELOG;

    Database altered.

  提示:如果想將資料庫改為非歸檔模式,只需要執行 ALTER DATABASE NOARCHIVELOG 即可。

  開啟資料庫:

    SQL>  ALTER DATABASE OPEN;

    Database altered.

  再次檢視歸檔狀態:

    SQL>   ARCHIVE LOG LIST;

    Database log mode              Archive Mode

    Automatic archival             Enabled

    Archive destination            F:\oracle\oradata\jssbook\archive

    Oldest online log sequence     25

    Next log sequence to archive   27

    Current log sequence           27

  返回的資訊顯示當前資料庫已被置為歸檔模式。

    提示:

    LOG_ARCHIVE_START 曾經很重要!

    對於10g之前的版本,還有一個初始化引數LOG_ARCHIVE_START會對歸檔操作造成影響,該引數用來指定是否自動進行歸檔,預設值為FALSE。也就是說在預設情況下,如果開啟了歸檔模式,資料庫並不會自動對聯機重做日誌檔案進行歸檔,當聯機重做日誌檔案被寫滿,或者DBA手動觸發歸檔操作時,資料庫就會停在那裡等待歸檔操作,表現如同當機。

    10g 中該引數被廢棄,是否設定均已不再影響歸檔的進行,只要DBA啟動了歸檔模式,Oracle就會自動進行歸檔。實際上10g版本中如果DBA強制在初始化檔案中指定LOG_ARCHIVE_START引數,那麼啟動Oracle資料庫時還有可能遇到ORA-32004的錯誤提示。
2.歸檔操作

  只有在歸檔模式下,才會觸發歸檔操作。是否是歸檔模式將影響聯機重做日誌檔案的重用。在歸檔模式下,當聯機重做日誌檔案被重用前,Oracle首先需要確認該重做日誌是否已經被歸檔,如果沒有,那麼必須首先對該重做日誌進行歸檔,而後才能重用該聯機重做日誌檔案。

  所謂歸檔,就是Oracle自動將寫滿(或被切換)的聯機重做日誌檔案複製一份到指定路徑下,並按照相應規則重新命名。

提示:雖然每個聯機重做日誌檔案組中可以有多個成員,不過歸檔時,每組僅會生成一個歸檔檔案。

  在預設情況下Oracle會等一組聯機重做日誌檔案被寫滿之後再觸發歸檔操作,當然DBA也可以通過執行命令,手動進行歸檔。例如,對所有未歸檔的重做日誌進行歸檔:

    SQL>  ALTER SYSTEM ARCHIVE LOG ALL;

  正是由於重做日誌檔案的自身特性,因此Oracle中的多項特性都是藉助重做日誌檔案實現(含聯機重做日誌檔案和歸檔重做日誌檔案),比如:

  • 系統崩潰後執行例項恢復。
  • 通過備份檔案修復資料檔案之後,執行介質恢復。
  • Standby 資料庫應用。
  • Streams 同步資料。
  • LogMiner 分析日誌,檢視資料庫曾經執行過的操作等。

=================================================

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/7607759/viewspace-630373/,如需轉載,請註明出處,否則將追究法律責任。

相關文章