Oracle的重作日誌和歸檔日誌

 1、 sql

   重作日誌文件把對數據文件的修改在寫入數據文件以前記錄下來。日誌文件以一種循環的方式被寫入信息。當一個日誌組被寫滿時,回自動向另外一個日誌組寫入。管理員能夠手工切換當前日誌組。alter system switch logfile 能夠切換當前的日誌組。當日志組發生切換時,oracle向新的重作日誌組分配一個日誌序列號。當存在大量的事務時必須調整重作日誌文件的大小,以免頻繁的日誌切換髮生。重作日誌文件被順序的寫在磁盤上,若是磁盤沒有其餘活動,I/O將會很快。應該把重作日誌文件保存在 單獨的磁盤上,以獲取良好的性能。尤爲不要把常常處於活動狀態的SYSTEM,UNDOTBS,SYSAUX的表空間或索引表空間文件保存到同一塊磁盤上。由於只有在事務的請求被寫到重作日誌後,請求才能被完成。最大限度的提升重作日誌的吞吐量是oracle性能優化首先考慮的因素。當發生重作日誌切換而生成 一個新的檢查點時,DBWn就會寫髒緩衝器塊。這樣會影響oracle的性能。能夠經過fast_start_mttr_target初始化參數來調整檢查點。 數據庫

   每一個數據庫都有本身的聯機重作日誌組,一個聯機重作日誌組有多個重作日誌成員,每一個日誌成員有單獨的操做系統文件。在一個rac配置(這種配置中單個數據庫裝有多個實例),每一個實例有一個聯機重作日誌線程,每一個實例的lgwr進程都寫到相同的聯機重作日誌文件。所以oracle必須跟蹤數據庫實例修改來自那個實例。 性能優化

   當多路複用重作日誌文件時,應該把一個組的成員保存在不一樣的磁盤上。以免單點故障的發生。若是重作日誌文件組的全部成員都沒法寫入數據,oracle將被掛起。Dba能夠在建立數據庫時建立多個聯機重作日誌文件的副本。 服務器

   對日誌的操做以下: oracle

  

   a. 建立新的重作日誌組: 性能

      Alter database add logfile 優化

      Group 3 (/ora02/oradata/mydb01/redo0301.log, spa

      /ora03/oradata/mdb01/redo0302.log) size 10m; 操作系統

      若是省略group子句oracle分配一個有效的編號以下 線程

      Alter database add logfile

  

   b. 添加新的組成員

      alter database add logfile member

      /ora04/oradata/mydb01/redo0203.log to group 2;(向第二組中添加新的成員)

  

   c.重命名日誌成員:

     在重命名日誌組成員以前新的目標必須已經存在。Oraclesql命令只是把控制文件中的內部指針指向新的日誌文件。Dba須要用操做系統命令來重命名此日誌文件。步驟以下:

     1.關閉數據庫

     2.使用操做系統命令重命名或移動日誌文件

     3. 啓動數據庫實例(start mount),重命名控制文件中的日誌文        件成員。Alter database rename file         old_redo_file_name to new_redo_file_name;

     4.打開數據庫 alter database open

     5.備份控制文件

   D.刪除重作日誌組:

      將要被刪除的重作日誌組不能是活動的日誌組。Alter database drop logfile group 3;。當重作日誌文件被刪除後,相關的操做系統文件也被刪除,相關的數據庫控制文件也給更新。

   E.使用和刪除重作日誌組相同的方式,dba能夠只刪除一個非活動的重作日誌組的成員。

      Alter database drop logfile member /ora04/oradata/mydb01/redo0203.log;

     

   f. 建立聯機重作日誌文件:

      當重作日誌組成員遭到破壞時,能夠刪除並從新添加這個重作日誌組或組成員。

   2、

     

檔案重作日誌文件:

   它是聯機重作日誌文件的一個副本。Lgwrarcn進程的故障都會引發數據庫的掛起。只有當arcn進程把聯機重作日誌寫到歸檔地後,才能夠向此重作日誌組成員寫入數據。

   設置歸檔目的地:

   能夠在參數初始化文件中的log_archive_dest_n來定義歸檔目的地。歸檔目的地能夠在本地計算機上,也可在遠程的數據庫服務器上。定義語法以下:

    LOG_ARCHIVE_DEST_n= null_string |

    (service=tnsnames_name |

  LOCATION= directory_name)

  [MANDATORY | OPTIONAL]

  [REOPEN[=integer]]

  例1

  LOG_ARCHIVE_DEST_1=((LOCATION=/archive/MYDB01) MANDATORU REOPEN=60)定義歸檔日誌的位置爲/archive/MYDB01mandatory子句的定義向這個位置寫日誌的操做必須的成功的。Reopen子句定義在日誌寫入失敗時,下次嘗試寫入操做的時間間隔。缺省是300秒。

  例2

  LOG_ARCHIVE_DEST_@=(SERVICE=STDBY01) OPTIONAL REOPEN;語句中的stdby01的鏈接到遠程數據庫的oracle net鏈接串。因爲寫操做是可選的,因此數據庫活動繼續,當arcn進程不能寫檔案日誌文件時,進程將當即嘗試從新寫入(這個動做有reopen子句來定義)。

  Log_archive_min_succeed_dest:定義最少歸檔日誌的副本數量。

  Log_archive_format:定義歸檔日誌文件採用的名稱和使用的格式。可使用預約義變量來構造每一個歸檔日誌文件的名稱。變量以下:

  %s      日誌序列號

  %t      線程號

  %r      復位日誌id

  %d      數據庫id

  定義歸檔日誌名稱的變量至少包含%s%t,%r,當多個數據庫實例的歸檔日誌採用相同的歸檔日誌位置時,還必須定義%d。例如:%t_%s_%r.dbf

相關文章
相關標籤/搜索