Decode360's Blog

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

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




          -The End-

          posted on 2008-11-25 21:22 decode360-3 閱讀(546) 評(píng)論(0)  編輯  收藏 所屬分類: DBA
          主站蜘蛛池模板: 镇原县| 玛多县| 调兵山市| 延庆县| 孟津县| 高台县| 永川市| 辽阳市| 隆林| 三门县| 会泽县| 浠水县| 威宁| 闽侯县| 修文县| 怀仁县| 绥中县| 若尔盖县| 军事| 桐庐县| 铜鼓县| 温州市| 龙口市| 舞钢市| 垣曲县| 石河子市| 门头沟区| 金阳县| 伊春市| 武平县| 同江市| 龙山县| 土默特左旗| 崇明县| 伊宁市| 西乌珠穆沁旗| 宁蒗| 淳安县| 固始县| 鄂州市| 谷城县|