Decode360's Blog

          業(yè)精于勤而荒于嬉 QQ:150355677 MSN:decode360@hotmail.com

            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 ::  :: 管理 ::
            302 隨筆 :: 26 文章 :: 82 評論 :: 0 Trackbacks
          一、聯(lián)機重做日志
          ?
          ??? 1、重做線程
          ?
          ??? 每個數(shù)據(jù)庫實例的聯(lián)機重做日志組都是一個聯(lián)機重做的實例線程。
          ??? 不管有沒有多路復(fù)用,一般每個Oracle都只有一個重做線程,當(dāng)然RAC中每個實例都包含一個重做線程。
          ?
          ??? 2、聯(lián)機重做日志內(nèi)容
          ?
          ??? 重做條目記錄了可以對數(shù)據(jù)庫重新構(gòu)造的所有修改數(shù)據(jù),包括回滾段。
          ??? 重做記錄在SGA重做日志緩存區(qū)中緩沖,并由LGWR進程寫入某個聯(lián)機重做日志文件。
          ?
          ??? 事務(wù)被提交時,必定需要用LGWR將日志全部從SGA緩存中寫入聯(lián)機重做日志文件,然后才被告知提交完成。
          ??? LGWR還會為每個事務(wù)分配一個識別重做記錄的系統(tǒng)修改號(SCN)。
          ?
          ??? 當(dāng)重做日志緩存填滿時LGWR也會將重做條目寫入到重做日志文件,這些是可以回滾的。
          ?
          ??? 3、聯(lián)機重做日志寫入方式
          ?
          ??? 數(shù)據(jù)庫的聯(lián)機重做日志組務(wù)必要有兩個或兩個以上,這樣可以保持其中一個一直用于寫入,另一個用于歸檔。
          ?
          ??? LGWR采用循環(huán)寫入的方式,即寫滿一個換下一個。或歸檔模式則寫滿了之后歸檔,否則則直接覆蓋。
          ?
          ??? 4、活動與非活動
          ?
          ??? 當(dāng)前正在寫入的聯(lián)機重做日志文件成為“當(dāng)前的”聯(lián)機重做日志文件。
          ??? 實例恢復(fù)時所需的聯(lián)機重做日志文件稱為“活動的”聯(lián)機重做日志文件。
          ??? 實例恢復(fù)不用的聯(lián)機重做日志文件稱為“非活動的”聯(lián)機重做日志文件。
          ?
          ??? 已經(jīng)進行存檔的聯(lián)機重做日志文件不能重新使用或重寫,知道ARCn存儲了這個文件內(nèi)容。
          ?
          ??? 5、日志切換 & 日志順序號
          ?
          ??? 一般默認在一個文件寫滿時切換到寫一個文件,但是也可以規(guī)定時間進行切換,這樣就不用理會是否寫滿。
          ??? 也可以手動進行強制切換。
          ?
          ??? 每次日志切換都會分配一個新的日志順序號,歸檔時也將順序號進行保存。
          ??? 每個聯(lián)機或存檔的重做日志文件都通過它的日志順序號進行唯一標(biāo)識。
          ?
          ?
          二、規(guī)劃聯(lián)機重做日志
          ?
          ??? 1、多路復(fù)用(Group)
          ?
          ??? 多路復(fù)用是避免損壞聯(lián)機重做日志文件。
          ??? 多路復(fù)用時LGWR將同一重做日志信息同時寫入多個同樣的聯(lián)機重做日志文件。
          ?
          ??? 建議必須要使用多路復(fù)用(至少兩個組)。
          ?
          ??? LOG-1.JPG
          ?
          ??? 注:當(dāng)某個成員不可用,則標(biāo)記為INVALID,并向LGWR跟蹤文件和數(shù)據(jù)報警文件中寫入錯誤信息。不同問題會不同反映。
          ????? * 一個操作成功一個操作失敗時:按正常過程進行,忽略不可用成員
          ????? * 日志切換時需要存檔而不能訪問下一個組時:暫時中斷操作,直到歸檔完成
          ????? * 介質(zhì)失敗,切換時不能訪問下一組:關(guān)閉數(shù)據(jù)庫,并返回錯誤信息
          ????? * LGWR寫入時不能訪問文件:關(guān)閉數(shù)據(jù)庫,并返回錯誤信息
          ?
          ??? 注:不同的組中不一定需要相同個數(shù)的成員。只含有1個組的多路復(fù)用是非法的。
          ?
          ??? 2、日志成員存放在不同磁盤
          ?
          ??? 設(shè)置多路復(fù)用時,將日志組成員放置到不同的磁盤上。這樣當(dāng)某磁盤失敗時,可以跳過這個成員繼續(xù)工作。
          ?
          ??? 另外將成員放置到不同磁盤上可以消除LGWR和ARCn在后臺進程對聯(lián)機重做日志成員的爭奪。
          ?
          ??? 注:數(shù)據(jù)文件和聯(lián)機重做日志文件也應(yīng)該放在不同磁盤上,以減少寫數(shù)據(jù)塊和寫記錄之間出現(xiàn)的競爭。
          ?
          ??? 3、聯(lián)機重做日志成員的大小
          ?
          ??? 規(guī)定聯(lián)機重做日志的大小,以便將填滿的組存檔到脫機存檔介質(zhì)(磁帶或磁盤)的某個單元中。
          ??? 例如磁盤上有一個填滿的聯(lián)機重做日志組,且磁盤還有49%的未使用存儲空間,此時最好降低聯(lián)機重做日志文件的大小。
          ?
          ??? 多路復(fù)用時,同一個組中的多有成員比用擁有同樣的大小!
          ??? 不同組的成員大小不同,但是這樣沒有什么好處,而且會對檢驗點的設(shè)置帶來不便。
          ?
          ??? 4、聯(lián)機重做日志文件的數(shù)量
          ?
          ??? 聯(lián)機日志文件數(shù)量的確定最好的方法是測試不同的配置的效果。
          ??? 最佳配置:在不妨礙LGWR向重做日志寫入信息的前提下,使用盡可能少的組(至少2個組)。
          ?
          ??? 仔細檢查LGWR跟蹤文件和數(shù)據(jù)庫報警文件的內(nèi)容,如果消息表明:因為檢驗點還沒有完成或者組還沒有存檔的緣故,LGWR不得不頻繁得等待組,那么就需要添加組來解決問題。
          ?
          ??? 注:MAXLOGFILES-最大組數(shù);MAXLOGMEMBERS-最大成員數(shù);要修改這兩個參數(shù)需要重建數(shù)據(jù)庫或控制文件,所以創(chuàng)建數(shù)據(jù)庫時要慎重。
          ?
          ??? 5、控制存檔延遲
          ?
          ??? 在數(shù)據(jù)庫中使用聯(lián)機重做日志歸檔,然后將歸檔日志放到備用數(shù)據(jù)庫,通過查詢?nèi)罩緛磉M行和數(shù)據(jù)庫中同樣的操作。這兩個操作之間存在一個時間間隔,就叫做存檔延遲。可以通過ARCHIVE_LAG_TARGET初始化參數(shù)來嚴格限定延遲的時間長度。
          ?
          ??? 設(shè)置了ARCHIVE_LAG_TARGET之后,Oracle將定期檢查實例當(dāng)前的聯(lián)機重做日志,在發(fā)生一下情況時切換日志:
          ??? * n秒鐘前創(chuàng)建了當(dāng)前日志,并估計當(dāng)前日志存檔時間為m秒,而n+m值超過ARCHIVE_LAG_TARGET的值
          ??? * 當(dāng)前日志包含重做記錄
          ?
          ??? ARCHIVE_LAG_TARGET = 1800? 單位是秒,默認為0,表示禁止該功能
          ?
          ??? 在選擇數(shù)值時考慮一下因素:
          ??? * 切換日志所消耗的系統(tǒng)開銷
          ??? * 作為日志完整條件的結(jié)果,通常日志切換發(fā)生的頻率
          ??? * 備用數(shù)據(jù)庫可以人壽多少重做損失
          ?
          ??? 注:當(dāng)數(shù)據(jù)庫本身就經(jīng)常切換時,設(shè)置這個值沒有什么意義,而且當(dāng)設(shè)置值很低時,對性能會產(chǎn)生負面影響。
          ?
          ?




          -The End-

          posted on 2008-11-25 21:22 decode360-3 閱讀(546) 評論(0)  編輯  收藏 所屬分類: DBA
          主站蜘蛛池模板: 秀山| 旌德县| 南充市| 杨浦区| 乐业县| 聊城市| 英德市| 繁峙县| 中西区| 济源市| 迭部县| 柘城县| 类乌齐县| 林甸县| 疏勒县| 桑植县| 外汇| 丰城市| 海口市| 玉门市| 丰原市| 依兰县| 营口市| 泰州市| 尤溪县| 随州市| 辉南县| 五台县| 双柏县| 文山县| 喀喇沁旗| 格尔木市| 彭州市| 永嘉县| 汨罗市| 开原市| 德阳市| 弥渡县| 克什克腾旗| 安顺市| 介休市|