Oracle有一個很大的內存塊,稱為系統全局區(SGA),在這裡它會做以下工作:
q 維護所有進程需要訪問的多種內部數據結構;
q 緩存磁盤上的數據,另外重做數據寫至磁盤之前先在這裡緩存;
q 保存已解析的SQL計劃;
q 等等。
Oracle有一組“附加到”SGA的進程,附加機制因操作系統而異。在UNIX環境中,這些進程會物理地附加到一個很大的共享內存段,這是操作系統中分配的一個內存塊,可以由多個進程並發地訪問(通常要使用shmget()和shmat())。
在Windows中,這些進程只是使用C調用(malloc())來分配內存,因為它們實際上是一個大進程中的線程,所以會共享相同的虛擬內存空間。Oracle還有一組供數據庫進程/線程讀寫的文件(只允許Oracle進程讀寫這些文件)。這些文件保存了所有的表數據、索引、臨時空間、重做日志等。
如果在一個UNIX系統上啟動Oracle,並執行ps命令,會看到運行著許多物理進程,還會顯示出這些進程的名字。