原創(chuàng)|使用教程|編輯:龔雪|2015-03-25 09:58:43.000|閱讀 195 次
概述:今天和Oracle的一個資深前輩聊了下,聊了不少技術(shù)的問題,他也來了興致,隨機提了幾個問題來問我,發(fā)現(xiàn)看似簡單的問題還是有不少的干貨,很多東西似懂非懂其實還是沒有深入理解,限于篇幅,整理了一部分的問題,有些問題回答的對,但是感覺理解還是不夠清晰深入。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
今天和Oracle的一個資深前輩聊了下,聊了不少技術(shù)的問題,他也來了興致,隨機提了幾個問題來問我,發(fā)現(xiàn)看似簡單的問題還是有不少的干貨,很多東西似懂非懂其實還是沒有深入理解,限于篇幅,整理了一部分的問題,有些問題回答的對,但是感覺理解還是不夠清晰深入。
log buffer的作用是什么?
log buffer的作用主要有兩部分,生成重做記錄,另一部分就是把重做記錄寫入重做日志文件commit操作的時候,是否會刷新log buffer?其實每一個commit就會觸發(fā)一次改動向量,完成了一次事務(wù)的更新。
pga的作用是什么?
pga的全稱是program global area,它是一個內(nèi)存區(qū)域,該區(qū)域中包含了于某個特定服務(wù)器進程 相關(guān)的數(shù)據(jù)和控制信息。對于每個session來說,其執(zhí)行的sql語句鎖傳入的綁定變量會存儲在pga中,需要執(zhí)行比較復(fù)雜的sql語句時,排序和hash join連接這類的session所占用的內(nèi)存空間也來自于PGA.
進程之間是否會共享PGA?
pga所占用的內(nèi)存區(qū)域只能被其所屬的進程訪問,而不能被其它進程訪問,所以pga中也不需要latch這樣的內(nèi)存結(jié)構(gòu)來保護其中的信息。
buffer cache中的算法——hash算法和LRU算法。
當前臺進程發(fā)出一個select或者dml語句的時候,oracle會根據(jù)執(zhí)行計劃找到符合條件的數(shù)據(jù)塊,然后會根據(jù)請求數(shù)據(jù)塊的地址以及數(shù)據(jù)塊的類型作為參數(shù),運用hash算法找到數(shù)據(jù)塊所處的hash bucket,即確定數(shù)據(jù)塊是在那個hash chain上。
LRU算法即最近最少使用的buffer header鏈表,LRU鏈表串聯(lián)起來的buffer header都執(zhí)行可用數(shù)據(jù)塊,buffer按照被使用的先后順序掛在LRUlianbiao shang ,先使用的buffer掛在LRU鏈表的后面,后被使用的buffer則掛在LRU鏈表的前面。
buffer cache中數(shù)據(jù)塊的狀態(tài):
臟數(shù)據(jù)塊,空閑數(shù)據(jù)塊,干凈數(shù)據(jù)塊,釘住的數(shù)據(jù)塊。對于空閑數(shù)據(jù)塊和干凈數(shù)據(jù)塊,都統(tǒng)稱為可用數(shù)據(jù)塊。因為其中的內(nèi)容可以被新的數(shù)據(jù)內(nèi)容覆蓋。
數(shù)據(jù)字典的信息存儲在哪里?
數(shù)據(jù)字典的信息存儲在shared pool中的dictionary cache中。dictionary cache中存放了執(zhí)行sql語句的過程中,所參照的數(shù)據(jù)字典的信息,包含sql語句所涉及的表名,表列,權(quán)限信息等,dictionary cache中的信息都是以數(shù)據(jù)行的形式存放的。所以也可以叫做row cache.
進程CKPT在哪里找到對應(yīng)的信息?
CKPT即檢查點為止(checkpoint position),檢查點的位置記錄在控制文件中,在檢查點隊列上串起來的都是臟數(shù)據(jù)塊所對應(yīng)的buffer header,每次dbwr寫臟數(shù)據(jù)塊的時候,也是從檢查點隊列上掃描臟數(shù)據(jù)塊,然后將臟數(shù)據(jù)塊寫入數(shù)據(jù)文件的。
數(shù)據(jù)恢復(fù)時的前滾與回滾的過程。
如果數(shù)據(jù)庫實例非正常關(guān)閉,則檢查點end scn號為空,在數(shù)據(jù)恢復(fù)的時候,會從控制文件中取得檢查點的位置,然后smon會到聯(lián)機日志文件中找到對應(yīng)的檢查點位置,應(yīng)用所有的重做條目,從而在buffer cache里又恢復(fù)了實例奔潰前那個時間點的狀態(tài),這個過叫做前滾。
如果前滾完畢之后,smon進程會立即打開數(shù)據(jù)庫,但是這個時候數(shù)據(jù)庫中還含有哪些處于中間狀態(tài)的,沒有提交也沒有回滾的數(shù)據(jù)庫,也就是臟數(shù)據(jù)塊,因為沒有被提交,所以需要被回滾,打開數(shù)據(jù)庫以后,smon會在后臺做回滾的操作。
rman配置修改備份文件路徑的方法。
可以通過em,grid control中的圖形界面來修改rman中的備份文件的路徑,或者使用config命令方式來設(shè)定。
自己sql調(diào)優(yōu)常用的幾個包是?dbms_sqltune,dbms_sql_advisor。
通過這些也發(fā)現(xiàn)自己對數(shù)據(jù)庫有了一定的認識,但是還是需要不斷的深化。可能自己碰到好多問題的時候都是囫圇吞棗,一問得細節(jié)一點就卡殼。人就是這樣的過程中不斷的提升自我,也從側(cè)面反映出自己近期有點松懈,沒有能夠投入更加高效的精力來,努力努力,有則改進,無則加冕,生活本屬不易,不能得過且過。:)
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請郵件反饋至chenjj@fc6vip.cn