今天培訓總結(一)

anycall2010發表於2009-03-11

我們前面已經學了三個重要的必選後臺程式
LGWR
CKPT
DBWR
他們之間都是密切關聯和執行順序

我們接下來學習另外兩個必選後臺程式

SMON和PMON

我們首先來學SMON

SMON用來維護和監控整個資料庫的安全和完整性。

它的主要職責有如下:
o 例項恢復
o 每3秒整理區碎片
o 清理臨時段
我們接著詳細講這3部分

我們可以用靜安書店來比喻這個例項,那SMON就相當於公司的行政部長
處理這個公司的日常運做

比如停電,公司處理大的活動

還有象一些場地的分配等

那我們的SMON第1個重要任務就是處理例項的異常DOWN機(類似停電)

我們知道,ORACLE為了實現高效,會把最近的資料和日誌記錄在記憶體,定期回去重新整理,這就是前面的LGWR,DBWR的程式乾的活

所以DOWN機也就意味著你的磁碟資料不是最新的或者最後的資料
那最新最後的資料在哪裡?

在DB BUFFER
還有及少部分在REDO BUFFER

那還有一個地方有
LOGFILE

o db buffer
o logfile
o redo buffer --這個部分肯定沒提交,否則寫到logfile

所以停電了會有什麼結果
db buffer
redo buffer沒了
因為電沒了,記憶體就沒了

那新的資料要不丟失,只能從logfile裡拿,而redo buffer丟了也不要緊,反正沒提交,它的髒塊也不需要寫到磁碟

我們用圖來了解這個過程

 
o SMON在例項啟動時完成例項恢復
  應用沒有寫到磁碟的改動向量
  並回滾沒有提交事務的改動向量

停電後SMON等於要做兩個動作

我們看增量檢查點將寫最早的3秒鐘的重做向量(圖上綠色部分)

前滾 --前滾那些沒有寫到磁碟的改動向量(白色箭頭部分)

這些髒快取被停電丟了

最後的重做向量是T4,這時箭頭以下的部分還沒被應用,這時候停電


停電時資料檔案是在黑色箭頭的狀態,日誌檔案在最後t4的狀態

沒看到圖

前滾後資料檔案是在最後t4的狀態,日誌檔案也在最後t4的狀態

紅色上箭頭是回滾的順序
紅色橫箭頭是回滾的改動向量

我們看到要回滾7條改動向量
這些動作都會在例項啟動的時候由SMON觸發去檢查,來實現例項恢復

好,這是SMON在危機的時刻重要的一個任務

第2.
在字典管理表空間中整理FREE的鄰接空間


我們先了解區碎片是怎麼清理的,然後瞭解下什麼情況下會去清理


由於字典管理,各個表或者表內分配了不同大小的區,而DELETE,UPDATE後區內容會被刪除,變成FREE區
而這些區大小不一樣,看我們圖裡的每一個就是一個區(EXTENT)


那把這些小FREE區合併到一個大區就會更有可能服務於別的空間請求

我們看到右邊箭頭黃色區域,第2行4個空閒區被合併成一個區,第4行2個空閒區被合併成1個區

那其它黃色空閒區為什麼不能一起合併

  ' 
因為他們物理上不是一個連續的區,所以不能合併

好,這就是區整理的概念
那我們來了解下,有哪些情況在字典管理模式下觸發區合併

oo 程式申請分配新的空間的時候

當申請分配空間時,沒有合適的FREE區滿足它申請的大小,則會觸發區的合併,來滿足這次請求

再看第2種情況
oo PCTINCREASE (SMON)完成
這個就是我們講的SMON的任務,只有PCTINCREASE>0時,意味著區的大小是線性增長的,每個區都不一樣大

為了避免將來空間分配出現困難,SMON每3秒種清理合並區
大家想一下SMON是不是很累
所以我們不建議這樣做
第3種情況

oo ALTER TABLESPACE COALESCE

人工觸發清理

好,以上我們講的區合併都是基於字典管理

但是現在幾乎用的都是本地管理,所以大家要關心的是下面的知識

在本地管理表空間中不需要特意去整理FREE的鄰接空間

因為本地管理的區資訊是用點陣圖狀態並儲存在塊級別維護
由點陣圖來實現碎片的維護

ORACLE自動跟蹤鄰接空間,來減少了整理的操作
好,這是SMON的第二大功能
第3.臨時段的清理
SMON的另一個功能是臨時段的清理,比如全域性臨時表
如果不再使用,SMON負責清理工作
好,我們SMON講到這裡
我們接著講PMON
程式監控
PMON是程式監控程式,使用者監控和維護程式的安全和一致性

顧名思義,PMON管理的是程式

ORACLE的所有的程式它來參與維護和監控
它的主要職責是:
對使用者程式處理失敗後,執行程式清理恢復的操作
看不到圖片的同學,可以參考教材《ORACLE基礎篇-I-1.pdf》48頁

負責每個人的生活起居,碰到的困難,它來幫你解決

那它碰到了程式異常,將處理哪些事情呢

我新來的那個資料可以發一份給我馬·


共享裡

o 釋放該程式的buffer cache資源
o 程式相關的鎖資源

o 其他資源,比如程式號等資訊,v$process可以看到的一些資訊

o 檢查排程器和伺服器程式,來實現排程器分配請求佇列和響應佇列

第2.pmon還有一個任務,它可以實現服務註冊(在基礎II網路部分講)

它可以把例項提供的服務的當前負載資訊告訴listener,在RAC的系統以便讓listener選擇一個負載低的服務來為客人服務

比如上海圖書館(提供ORACLE服務)
靜安圖書分店(有40人排隊買書) --&gt告訴書店排程中心(LISTENER)有40個連線
黃浦圖書分店(有20人排隊買書) --&gt告訴書店排程中心(LISTENER)有20個連線

小麗 提出要買'CBO 基礎'最新版的書,書店排程中心(LISTENER)接收到小麗的請求

判斷有兩個圖書分店提供服務,但是黃浦圖書分店只有20個連線,你去的話排隊時間會更短

--&gt告訴書店排程中心(LISTENER)有40個連線
誰告訴書店排程中心(LISTENER)?

就是PMON

這是動態服務註冊的概念 --基礎II會詳細講這個過程

時間有點緊了
前面講的後臺程式是ORACLE必須有的後臺程式.也就是你要開靜安圖書分店
你必須要有的管理人員,否則這店要關門(DOWN)

所以你殺了這5個程式,例項就會DOWN機
對於不同的元件和版本,還會有很多可選的後臺程式,我們會在以後的課裡慢慢接觸

我們在這本書裡再介紹一個最常見的可選後臺程式,ARCH

歸檔程式之所以可選,是以為你例項可歸檔,也可以不歸檔

這要看你安全性的級別設定的如何

1.你就設定正確的listener協議/地址/埠
2.tnsnames裡指向這個listener協議/地址/埠
   取一個別名orcl
3.然後alter system set local_listener=orcl;
alter system register;


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8334342/viewspace-566820/,如需轉載,請註明出處,否則將追究法律責任。

相關文章