Oracle體系結構梳理

憶江南soy發表於2013-09-12
小弟最近學習oracle,總結了一下oracle體系結構,希望各位高人指正。具體如下:
Oracle的整個結構元件從大的方面來講,分為Instance和Database兩部分。Instance是由SGA和一組後臺程式組成,而Database由三類檔案組成:Data file、Control file、Redo log file組成。SGA是一塊記憶體區域,通過一組後臺程式,與Database進行資訊的互動。
        Instance包括記憶體結構和後臺程式。記憶體結構即SGA和PGA。SGA包括必須的share pool,database buffer cache, redo log buffer cache和一些其他的結構(如鎖、latch管理),還有一些可選的,如:large pool,java pool。SGA的大小在oracle9i中可以動態的調整,峰值可以由SGA_MAX_SIZE引數來設定。Share pool用來存放最近使用的SQL語句和資料的定義,它包含Library Cache 和 Data dictionary Cache兩個記憶體結構,其中Library Cache用來存放最近使用的SQL和PL/SQL語句,使用的是LRU演算法;Data dictionary Cache是用來存放最近使用過的定義,如資料庫檔案、表、索引、列、使用者、許可權等。Database buffer cache存放的是資料塊的副本,當使用者發起一個查詢請求的時候,伺服器程式首先去檢視database buffer cache中是否有所需的資料,若沒有,則到資料檔案中去查詢,找到後,同時將它複製到database buffer cache中,以便下次查詢的時候使用,這樣就提高了查詢的效率。redo log buffer cache記錄了所有對資料塊的改變,也就是說,對資料庫中的資料進行的任何修改,都會記錄到redo log buffer cache中,以便恢復資料庫時用。Large pool是一個可選項,當oracle以shared mode執行時,用來承擔起儲存使用者程式、dispatchers、伺服器間的連線資訊,從而減輕share pool的負擔。Java pool也是可選項,當使用java程式的時候,需要設定它。PGA是為一個單獨的伺服器程式或後臺程式保留的一塊記憶體區域,它包括:排序區(sort area)、會話資訊(session information)、遊標宣告(cursor state)、stack space。
        Oracle程式結構包括使用者程式、伺服器程式和後臺程式。
a、        user process:當一個使用者向oracle server請求連線的時候產生;它可以向oracle server請求互動操作;它有兩個特點:
第二,        必須先與oracle server建立一個連線;
第三,        它不會與oracle server直接的進行互動操作
b、        server process:當使用者建立一個session的時候產生;它去連線instence;直接與oracle server進行互動操作;一旦使用者建立了與oracle server的連線,就產生了一個server process,它用來處理user process的請求;在dedicated mode下,一個server process只處理一個user process的請求,在shared mode下,處理多個user process的請求。
c、        background process:當oracle instance啟動的時候產生。可以理解為它是連線oracle物理結構(database)和記憶體結構(SGA)的紐帶,有五個強制的程式:
1)        DBWn:Database Writer
它將資料庫buffer中的dirty buffer寫到資料檔案中,從而保證在database buffer cache中有足夠的可用的buffer;
2)        LGWR:Log Writer
它從redo log buffer中將資料有順序的寫到redo log file中;
3)        SMON:System Monitor
當instance異常結束後,再次重新開啟的時候,SMON自動執行恢復操作:
1、向前執行已經提交成功的事務,即被記錄到redo log中的操作;
2、開啟資料庫,一邊使用者可以登陸,這時使用者可以訪問沒有被鎖住的資料,即執行成功的事務的資料;
3、向後回滾instance異常時未被提交的事務,這些操作沒有來得及寫到redo log中。
4)        PMON:process monitor
Clean up after failed process by:
1、回滾使用者當前的事務;
2、釋放當前鎖住的表和行;
3、釋放其他使用者佔用的資源;
4、重啟dispatcher
5)        CKPT:CheckPoint
當DBWn程式將SGA中所有的修改了的buffers(提交了的和未提交的)都寫到資料檔案中的時候,產生CheckPoint。
6)        ARCn:Archiver
它是可選的後臺程式。當一個redo log file寫滿了之後,需要切換到另外一個redolog file中,這個過程稱之為log switch。那麼ARCn就是在每個log switch時候,都初始化備份、歸檔。它自動對連線的redolog檔案進行歸檔,以保證所有的對資料庫的改變都受到保護。

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

相關文章