本篇內(nèi)容主要講解“Oracle DRM原理是什么”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實(shí)用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“Oracle DRM原理是什么”吧!
站在用戶的角度思考問題,與客戶深入溝通,找到大名網(wǎng)站設(shè)計與大名網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個性化、用戶體驗(yàn)好的作品,建站類型包括:網(wǎng)站制作、網(wǎng)站設(shè)計、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、主機(jī)域名、虛擬主機(jī)、企業(yè)郵箱。業(yè)務(wù)覆蓋大名地區(qū)。
Buffer: 對于RAC 數(shù)據(jù)庫,當(dāng)一個數(shù)據(jù)塊被讀入到buffer cache后,我們就稱其為buffer , cache fusion 會將這個buffer作為resource來管理。
Master:在RAC 數(shù)據(jù)庫的世界里,每一個resource都會有一個master實(shí)例,這個master實(shí)例會在shared pool 中(例如:gcs resource 和ges resource 部分)分配一些空間來存放和這個資源相關(guān)的信息
例如:哪一個實(shí)例擁有了這個buffer的最新版本,哪一個實(shí)例擁有了這個buffer的什么級別的lock等等。并且,負(fù)責(zé)維護(hù)和這個資源的狀態(tài)。
接下來,我們對RAC 環(huán)境中,訪問一個buffer的過程進(jìn)行簡單的描述。我們以一個4節(jié)點(diǎn)的RAC 數(shù)據(jù)庫為例。
注意,我們只會列出比較典型的一種情況,不會把所有可能的情況都一一列出,而且只是把步驟進(jìn)行了簡單的介紹。
步驟1:實(shí)例3需要以X(exclusive)方式訪問buffer1, 向master實(shí)例(1) 發(fā)出了請求。
步驟2:master實(shí)例(1)發(fā)現(xiàn)實(shí)例2 以X方式持有buffer1,之后通知實(shí)例2釋放X lock,并把buffer1發(fā)送給實(shí)例3。
步驟3: 實(shí)例2釋放X lock,并把最新版本的buffer1發(fā)送給實(shí)例3。
步驟4:實(shí)例3獲得buffer1, 并通知master 實(shí)例(1)更新資源buffer1的最新狀態(tài)。
從上面的步驟,我們不難看出,在RAC 數(shù)據(jù)庫中,當(dāng)我們訪問一個buffer的時候,最多會有3個實(shí)例參與其中
master實(shí)例,holder(持有者)實(shí)例 和requestor(申請者) 實(shí)例。2種數(shù)據(jù)傳輸會出現(xiàn),message:用于和lock相關(guān)的信息傳輸,data:用于傳輸buffer
同時,根據(jù)上面的步驟我們也自然會想到,如果master和requestor在同一個實(shí)例上
那么就可以減少實(shí)例之間message的傳輸并且訪問的代碼路徑(code path)會更短,從而提高性能
但是每個buffer在被讀取到buffer cache時,master節(jié)點(diǎn)的選擇是隨機(jī)的。
基于這種考慮, oracle從10g開始,推出了一個新特性DRM(Dynamic Resource management)
DRM的主要功能是,根據(jù)一段時間內(nèi)(默認(rèn)10分鐘)
每個實(shí)例,對某一個數(shù)據(jù)庫對象的 (10gR1以數(shù)據(jù)文件為單位)的訪問次數(shù)和方式,來決定數(shù)據(jù)庫對象對應(yīng)的buffer應(yīng)該被mastering到哪一個實(shí)例。
在指定時間內(nèi),如果某一個實(shí)例訪問某個數(shù)據(jù)庫對象次數(shù)高于其他實(shí)例一定倍數(shù)(默認(rèn)50倍),則oracle 會把這個對象所有的buffer的master信息
轉(zhuǎn)移到對應(yīng)實(shí)例(注意:不是轉(zhuǎn)移buffer),轉(zhuǎn)移的過程是漸進(jìn)式的。
當(dāng)oracle 決定將一個buffer的master實(shí)例確定到本地實(shí)例后,會對這個buffer上加上affinity lock,來實(shí)現(xiàn)快速的訪問
這也是我們經(jīng)常提到的object affinity 的由來
接下來,我們對DRM的基本步驟進(jìn)行介紹。
1. Oracle停止所有在需要進(jìn)行remastering的buffer上的操作。注意:DRM是漸進(jìn)的,也就是說以windows 為單位,每次對一部分的buffer 進(jìn)行remastering 操作
2. Lmon 通知所有實(shí)例,準(zhǔn)備進(jìn)行remastering
3. 在舊的master實(shí)例清除對應(yīng)buffer的master信息
4. 將master信息傳遞給新的master實(shí)例
5. 在新的master實(shí)例構(gòu)建資源的最新狀態(tài)
6. 結(jié)束,并釋放所有之前所有步驟占用的資源
然后,我們對DRM相關(guān)的一些參數(shù)進(jìn)行簡單的介紹。
_gc_policy_time :單位為分鐘,控制DRM統(tǒng)計實(shí)例訪問buffer次數(shù)的時間間隔,默認(rèn)為是10分鐘
_gc_affinity_ratio:控制進(jìn)行remastering所需要達(dá)到的最小比例(閥值),默認(rèn)為50
也就是說,如果某個實(shí)例在10分鐘(_gc_policy_time)之內(nèi),訪問某個數(shù)據(jù)庫對象的次數(shù)大于其他所有實(shí)例50倍時(注意:是50倍,而不是50次)
對該數(shù)據(jù)庫對象的buffer進(jìn)行remastering
注意:請不要輕易修改以上參數(shù)的值,除非有技術(shù)支持
最后,如果您遇到了和DRM相關(guān)的問題,建議您查看以下的信息。
1. Lmon,lmd,lms和diag進(jìn)程的 trace file,來確認(rèn)問題出現(xiàn)在DRM的哪一步和lms,lmon,lmd進(jìn)程的狀態(tài)。
2. AWR 和ASH report,確認(rèn)那些等待事件持續(xù)了很長時間,以及l(fā)mon,lms 和lmd的狀態(tài)。
3. 參照note 1492990.1 獲取 DMR 診斷腳本輸出。
到此,相信大家對“Oracle DRM原理是什么”有了更深的了解,不妨來實(shí)際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!