oracle有一個很大的記憶體塊,稱為系統全域性區(sga),在這裡它會做以下工作:q 維護所有程序需要訪問的多種內部資料結構;
q 快取磁碟上的資料,另外重做資料寫至磁碟之前先在這裡快取;
q 儲存已解析的sql計劃;
q 等等。
oracle有一組“附加到”sga的程序,附加機制因作業系統而異。在unix環境中,這些程序會物理地附加到一個很大的共享記憶體段,這是作業系統中分配的一個記憶體塊,可以由多個程序併發地訪問(通常要使用shmget()和shmat())。
在windows中,這些程序只是使用c呼叫(malloc())來分配記憶體,因為它們實際上是一個大程序中的執行緒,所以會共享相同的虛擬記憶體空間。oracle還有一組供資料庫程序/執行緒讀寫的檔案(只允許oracle程序讀寫這些檔案)。這些檔案儲存了所有的表資料、索引、臨時空間、重做日誌等。
如果在一個unix系統上啟動oracle,並執行ps命令,會看到執行著許多物理程序,還會顯示出這些程序的名字。