Oracle server 體系結構介紹(形象版)

tonykorn97發表於2006-04-23

Oracle server 體系結構介紹(形象版)

我們可以把電腦裸機看做是我們的地球,把裝在裸機上的作業系統看成是一個個國家,不同的國家代表了不同的作業系統,作業系統的劃分可以劃分為windows和unix/linux兩大部分.我們可以理解為資本主義和社會主義兩大部分.windows下面的不同版本就代表了不同的資本主義國家有的強大有的弱小,有的早,有的晚.unix/linux中的不同版本就代表了社會主義社會中的不同國家,而linux是否就可以理解為有國家自己特色的社會主義呢?呵呵,這個就有點撤遠了,下面我們繼續oracle方面的部分


上面我們說了作業系統就代表一個國家,而在這個國家中建立一個公司我們就可以看作是在作業系統上安裝一個oracle,oracle在不同作業系統上的版本可以看作是在不同國家之間建立公司一樣步驟是不可能相同的一樣

首先我們先來了解一下公司的結構.要建立一個的公司必須建立不同的部門,就算只有一個部門,這個部門裡面的人員分工也肯定不相同.建立公司的同時我們也要買一些本子記帳,一個連帳的不計的公司肯定是不可想象的.現在我們再來看看oracle server的體系結構,oracle server由例程(公司的各個部門)和資料庫(公司記帳所用的本子)兩部分所組成

例程是由一組記憶體結構(我們暫時先理解為總裁辦)和後臺程式(暫時理解為其他的執行部門)組成.其記憶體結構包括資料快取記憶體,重做日誌快取區和共享池3部分,這些記憶體結構總稱為SGA(System Global Area).後臺程式主要包括SMON,PMON,DBWR,CKPT,LGWR,ARCH等.

我們把記憶體結構理解為SGA,也就是我們建立公司時候的總裁辦,在這個總裁辦中,所有最近的公司資料都暫時存放在這裡,他是各個部門都要打交道的地方,建立公司是必須先有這個部門為大家分配資源.由此我們再來理解一下SGA的定義.SGA由一組記憶體結構組成,它是由所有使用者程式共享的一塊記憶體區域,啟動例程是,oracle自動分配SGA.關閉例程時,oracle自動釋放SGA所佔用的記憶體空間.

共享池用於存放最近執行的SQL語句和資料字典的資訊.主要由庫快取記憶體和資料字典快取記憶體兩個部分組成.庫高速緩衝用於竄犯最近執行的SQL語句資訊,包括SQL語句文字,解析程式碼值及其執行計劃.資料字典快取記憶體用於存放資料字典的資訊,包括表,列的定義以及許可權的定義.

現在我們把總裁辦具體細分,員工A代表共享池,員工A下面有兩個員工A1和A2.最近公司的員工查詢了以前的那些帳都在它這裡記得.員工A1主要記載的是最近誰查詢的以前的資料,以及怎麼快速查詢的方法等.而員工A2主要記載的是他們查詢的是那方面的資料(表),以前這些資料都包含那些具體的部分(列),以及誰可以檢視這些資料(許可權資訊).員工B 和員工C

重做日誌緩衝區用於記載例程的變化,執行DDL或DML語句時,伺服器程式首先將事務變化記載到重做日誌緩衝區,然後採會修改快取記憶體,重做日誌快取區有很多重做記錄(REDO RECORD)組成,並且每條重做記錄記載了被修改資料塊的位置以及變化後的資料

我們先就理解員工B專門負責記錄最近什麼時候做了什麼操作,記錄修改帳的位置以及修改後的資料.

而員工C 就專門負責對這些想要查詢或者修改賬本的資訊進行排隊,交換結果等等.

而大緩衝池和java池可以看做是公司比較大了的時候增加的新員工,這個員工是需要的時候才新增加的.他們具有其他的不同任務.

而這些後臺程式SMON,PMON,DBWR,CKPT,LGWR,ARCH等則具有各自的任務.

幾個例子:

PMON,它的作用是監視使用者查詢過程的執行,如果這些操作失敗了就把該使用者所修改的資料還原等其他操作.

DBWR,它的作用是根據員工C裡的資訊把需要記載下來的資料寫入到賬本里面去.但它也會在一些情況下才會做.在資料方面就表現在:

系統發出檢查點(CheckPoint)

伺服器程式不能找到空閒緩衝區。

刪除或截斷表。

使表空間正常離線(ALTER TABLE … OFFIINE NORMAL)

開始表空間備份(ALTER TABLESPACE … BEGIN BACKUP)

LGWR,它的作用就是把員工B那裡記錄的資訊記錄到賬本里面去.(因為原來都是記載在員工B的腦子裡面的,相當於緩衝區,會隨時丟掉的)

其他的就不在一一舉例了!

資料庫檔案

資料檔案:想當於公司自己整理過的賬本,這些賬本可以查詢到當前的公司運營狀況.

重做日誌:想當於公司每天都做了那些操作的記錄.

控制檔案:就相當於記載了這些賬本都在什麼地方放的一樣.

其他的檔案也都可以找到對應的例子!

這裡給出的只是我的一個思路,我覺得現在講這些專業的都太枯燥了,如果用一種形象的方法講出來可能更好一些.說明:上面的只是一些例子,肯定和oracle下面的定義和功能有很多不符.歡迎大家提出意見.

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

相關文章