關於Oracle的技術問答
今天和Oracle的一個資深前輩聊了下,聊了不少技術的問題,他也來了興致,隨機提了幾個問題來問我,發現看似簡單的問題還是有不少的乾貨,很多東西似懂非懂其實還是沒有深入理解,限於篇幅,整理了一部分的問題,有些問題回答的對,但是感覺理解還是不夠清晰深入。
log buffer
log buffer的作用
logbuffer的作用主要有兩部分,生成重做記錄,另一部分就是把重做記錄寫入重做日誌檔案。
commit操作的時候,是否會重新整理log buffer?
其實每一個commit就會觸發一次改動向量,完成了一次事務的更新。
PGA
pga的作用
pga的全稱是program global area,它是一個記憶體區域,該區域中包含了於某個特定伺服器程式 相關的資料和控制資訊。對於每個session來說,其執行的sql語句鎖傳入的繫結變數會儲存在pga中,需要執行比較複雜的sql語句時,排序和hash join連線這類的session所佔用的記憶體空間也來自於PGA.
程式之間是否會共享PGA?
pga所佔用的記憶體區域只能被其所屬的程式訪問,而不能被其它程式訪問,所以pga中也不需要latch這樣的記憶體結構來保護其中的資訊。
buffer cache
buffer cache中的演算法
buffer cache中用到的演算法有hash演算法和LRU演算法。
當前臺程式發出一個select或者dml語句的時候,oracle會根據執行計劃找到符合條件的資料塊,然後會根據請求資料塊的地址以及資料塊的型別作為引數,運用hash演算法找到資料塊所處的hash bucket,即確定資料塊是在那個hash chain上。
LRU演算法即最近最少使用的buffer header連結串列,LRU連結串列串聯起來的buffer header都執行可用資料塊,buffer按照被使用的先後順序掛在LRUlianbiao shang ,先使用的buffer掛在LRU連結串列的後面,後被使用的buffer則掛在LRU連結串列的前面。
buffer cache中資料塊的狀態
髒資料塊,空閒資料塊,乾淨資料塊,釘住的資料塊。對於空閒資料塊和乾淨資料塊,都統稱為可用資料塊。因為其中的內容可以被新的資料內容覆蓋。
shared pool
資料字典的資訊儲存在哪裡?
資料字典的資訊儲存在shared pool中的dictionary cache中。dictionary cache中存放了執行sql語句的過程中,所參照的資料字典的資訊,包含sql語句所涉及的表名,表列,許可權資訊等,dictionary cache中的資訊都是以資料行的形式存放的。所以也可以叫做row cache.
CKPT
程式CKPT在哪裡找到對應的資訊。
CKPT即檢查點為止(checkpoint position),檢查點的位置記錄在控制檔案中,在檢查點佇列上串起來的都是髒資料塊所對應的buffer header,每次dbwr寫髒資料塊的時候,也是從檢查點佇列上掃描髒資料塊,然後將髒資料塊寫入資料檔案的。
資料恢復
資料恢復時的前滾與回滾的過程
如果資料庫例項非正常關閉,則檢查點end scn號為空,在資料恢復的時候,會從控制檔案中取得檢查點的位置,然後smon會到聯機日誌檔案中找到對應的檢查點位置,應用所有的重做條目,從而在buffer cache裡又恢復了例項奔潰前那個時間點的狀態,這個過叫做前滾。
如果前滾完畢之後,smon程式會立即開啟資料庫,但是這個時候資料庫中還含有哪些處於中間狀態的,沒有提交也沒有回滾的資料庫,也就是髒資料塊,因為沒有被提交,所以需要被回滾,開啟資料庫以後,smon會在後臺做回滾的操作。
rman
rman配置修改備份檔案路徑的方法
可以透過em,grid control中的圖形介面來修改rman中的備份檔案的路徑,或者使用config命令方式來設定。
調優
自己sql調優常用的幾個包是?
dbms_sqltune,dbms_sql_advisor
透過這些也發現自己對資料庫有了一定的認識,但是還是需要不斷的深化。可能自己碰到好多問題的時候都是囫圇吞棗,一問得細節一點就卡殼。人就是這樣的過程中不斷的提升自我,也從側面反映出自己近期有點鬆懈,沒有能夠投入更加高效的精力來,努力努力,有則改進,無則加冕,生活本屬不易,不能得過且過。:)
log buffer
log buffer的作用
logbuffer的作用主要有兩部分,生成重做記錄,另一部分就是把重做記錄寫入重做日誌檔案。
commit操作的時候,是否會重新整理log buffer?
其實每一個commit就會觸發一次改動向量,完成了一次事務的更新。
PGA
pga的作用
pga的全稱是program global area,它是一個記憶體區域,該區域中包含了於某個特定伺服器程式 相關的資料和控制資訊。對於每個session來說,其執行的sql語句鎖傳入的繫結變數會儲存在pga中,需要執行比較複雜的sql語句時,排序和hash join連線這類的session所佔用的記憶體空間也來自於PGA.
程式之間是否會共享PGA?
pga所佔用的記憶體區域只能被其所屬的程式訪問,而不能被其它程式訪問,所以pga中也不需要latch這樣的記憶體結構來保護其中的資訊。
buffer cache
buffer cache中的演算法
buffer cache中用到的演算法有hash演算法和LRU演算法。
當前臺程式發出一個select或者dml語句的時候,oracle會根據執行計劃找到符合條件的資料塊,然後會根據請求資料塊的地址以及資料塊的型別作為引數,運用hash演算法找到資料塊所處的hash bucket,即確定資料塊是在那個hash chain上。
LRU演算法即最近最少使用的buffer header連結串列,LRU連結串列串聯起來的buffer header都執行可用資料塊,buffer按照被使用的先後順序掛在LRUlianbiao shang ,先使用的buffer掛在LRU連結串列的後面,後被使用的buffer則掛在LRU連結串列的前面。
buffer cache中資料塊的狀態
髒資料塊,空閒資料塊,乾淨資料塊,釘住的資料塊。對於空閒資料塊和乾淨資料塊,都統稱為可用資料塊。因為其中的內容可以被新的資料內容覆蓋。
shared pool
資料字典的資訊儲存在哪裡?
資料字典的資訊儲存在shared pool中的dictionary cache中。dictionary cache中存放了執行sql語句的過程中,所參照的資料字典的資訊,包含sql語句所涉及的表名,表列,許可權資訊等,dictionary cache中的資訊都是以資料行的形式存放的。所以也可以叫做row cache.
CKPT
程式CKPT在哪裡找到對應的資訊。
CKPT即檢查點為止(checkpoint position),檢查點的位置記錄在控制檔案中,在檢查點佇列上串起來的都是髒資料塊所對應的buffer header,每次dbwr寫髒資料塊的時候,也是從檢查點佇列上掃描髒資料塊,然後將髒資料塊寫入資料檔案的。
資料恢復
資料恢復時的前滾與回滾的過程
如果資料庫例項非正常關閉,則檢查點end scn號為空,在資料恢復的時候,會從控制檔案中取得檢查點的位置,然後smon會到聯機日誌檔案中找到對應的檢查點位置,應用所有的重做條目,從而在buffer cache裡又恢復了例項奔潰前那個時間點的狀態,這個過叫做前滾。
如果前滾完畢之後,smon程式會立即開啟資料庫,但是這個時候資料庫中還含有哪些處於中間狀態的,沒有提交也沒有回滾的資料庫,也就是髒資料塊,因為沒有被提交,所以需要被回滾,開啟資料庫以後,smon會在後臺做回滾的操作。
rman
rman配置修改備份檔案路徑的方法
可以透過em,grid control中的圖形介面來修改rman中的備份檔案的路徑,或者使用config命令方式來設定。
調優
自己sql調優常用的幾個包是?
dbms_sqltune,dbms_sql_advisor
透過這些也發現自己對資料庫有了一定的認識,但是還是需要不斷的深化。可能自己碰到好多問題的時候都是囫圇吞棗,一問得細節一點就卡殼。人就是這樣的過程中不斷的提升自我,也從側面反映出自己近期有點鬆懈,沒有能夠投入更加高效的精力來,努力努力,有則改進,無則加冕,生活本屬不易,不能得過且過。:)
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26845409/viewspace-1472605/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 基於知識圖譜的問答系統關鍵技術研究 #04
- 面試中關於nginx的問答面試Nginx
- 關於技術選型的問題
- 技術問答集錦(六)
- 技術問答集錦(四)
- 技術問答集錦(五)
- 技術問答集錦(一)
- 技術問答集錦(二)
- 技術問答集錦(三)
- 關於webpack問答記錄...Web
- 關於裸裝置及Oracle的20個實用問答Oracle
- 知識圖譜的問答系統關鍵技術研究 #01
- 知識圖譜的問答系統關鍵技術研究 #02
- 知識圖譜的問答系統關鍵技術研究 #03
- 軟體開發技術問答
- 關於IT,關於技術
- Tom Kyte 關於 Oracle 11g 的最新問題答覆Oracle
- StackOverflow 上關於 JS 的熱門問答JS
- 關於程式猿的六個問答題
- 關於Vista Build 5536釋出的官方技術問答(轉)UI
- 技術問答集錦(八)MyBatis系列MyBatis
- MySQL學習日記(十一)-技術問答MySql
- 技術問答集錦(七)Spring系列Spring
- 關於技術的選型
- 關於技術分享的思考
- 關於技術方案
- 關於技術文件
- 關於移動路由器的一問一答路由器
- 關於虛擬化技術的幾個問題薦
- 虛擬主播技術在智慧問答中的應用
- 技術問答集錦(九)資料庫系列資料庫
- 技術問答集錦(11)JVM類載入JVM
- 技術問答集錦(13)Java Instrument原理Java
- 技術問答集錦(16)避免活躍性
- OBQ 問答| OceanBase 是如何支援 HTAP 的?技術問題,就上 OBQ!
- 關於Spring的69個面試問答——終極列表Spring面試
- 13個關於Linux防火牆’iptables’的面試問答Linux防火牆面試
- 關於技能技術企劃書的疑問和建議