sga指的是“系統全域區”,是ORACLE為實例分配的一組共享緩衝儲存區,用於存放資料庫資料和控制信息,以實現對資料庫資料的管理和操作。 sga主要由共享池、資料緩衝區、重作日誌緩衝區組成;其中資料緩衝區用來儲存最近從資料檔案讀取寫過的資料。
本教學操作環境:Windows7系統、Oracle 11g版、Dell G3電腦。
記憶體結構是oracle資料庫最重要的組成部分之一,在資料庫中的操作或多或少都會依賴內存,是影響資料庫效能的重要因素Oracle資料庫中包含3個基本的記憶體結構:
下面要介紹一些記憶體結構中的sga。
oracle sga簡介
sga全名為“System Global Area”,中文意思是“系統全域區”,是ORACLE為實例分配的一組共享緩衝存儲區,主要用於存放資料庫資料和控制信息,該信息為資料庫程序所共享(PGA不能共享的),以實現對資料庫資料的管理和操作。
它包含Oracle 伺服器的資料和控制訊息,它是在Oracle伺服器所駐留的計算機的實際記憶體中得以分配,如果實際記憶體不夠再往虛擬記憶體中寫。
SGA是一組共享記憶體結構, 被所有的服務和後台程序所共享。當資料庫執行個體啟動時,系統全域區記憶體會自動分配。當資料庫執行個體關閉時,SGA記憶體被回收。 SGA是佔用記憶體最大的一個區域,同時也是影響資料庫效能的重要因素。
查詢SGA區的狀況:
SQL> show SGA Total System Global Area 3290345472 bytes Fixed Size 2217832 bytes Variable Size 1795164312 bytes Database Buffers 1476395008 bytes Redo Buffers 16568320 bytes SQL> select * from v$sga; NAME VALUE -------------------- ---------- Fixed Size 2217832 Variable Size 1795164312 Database Buffers 1476395008 Redo Buffers 16568320
Fixed Size表示固定區域,儲存SGA各個元件的資訊。不能修改大小。
Variable Size表示可變區域,例如共用池、java池、大池等。
Database Buffers表示資料庫高速緩衝區。
Redo Buffers表示日誌緩衝區。
SGA主要包含:
系統全域SGA主要由三個部分構成:共享池、資料緩衝區、日誌緩衝區。
1、共享池(shared pool) :用來儲存最近執行的SQL語句和最近使用的資料字典的資料。
它主要由兩個記憶體結構構成:Library cache和Data dictionary cache
修改共享池的大小:ALTER SYSTEM SET SHARED_POOL_SIZE = 64M;
#Library Cache快取被執行的SQL及PL/SQL的相關訊息,即存放SQL語句的文字,分析後的程式碼及執行計畫。實作常用語句的共享,使用LRU演算法進行管理,由以下兩個結構構成:Shared SQL area、Shared PL/SQL area;
Data Dictionary Cache快取被使用的資料庫定義,即存放相關表、列和其它物件定義及權限。它包括關於資料庫檔案、表、索引、列、使用者、權限以及其它資料庫物件的資訊。在語法分析階段,Server Process存取資料字典中的資訊以解析物件名稱和對存取操作進行驗證。資料字典資訊快取在記憶體中有助於縮短回應時間。
2、資料緩衝區 (database buffer cache):用來儲存最近從資料檔案讀取寫過的資料。
在資料高速緩衝區中存放著Oracle系統使用過的資料區塊(即使用者的高速緩衝區),當將資料寫入資料庫時,它以資料區塊為單位進行讀寫,當數據高速緩衝區填滿時,則系統會自動去掉一些不常被使用者存取的資料。如果當使用者要查的資料不在資料高速緩衝區時,Oracle就會自動從磁碟中去讀取。資料高速緩衝區包含三種類型的區:
1) 髒資料區(Dirty Buffers):包含有已經變更過並需要寫回資料檔案的資料區塊。
2) 自由區(Free Buffers):沒有包含任何資料並可以再寫入的區,Oracle可以從資料檔案讀取資料塊該區。
3) 保留區(Pinned Buffers):此區包含有正在處理的或明確保留用作將來用的區。
3、重作日誌緩衝區(redo log buffer):用來記錄服務或後台程序對資料庫的操作。
主要用於恢復其中的每一項修改記錄都稱為redo 條目。利用Redo條目的資訊可以重做修改。
另外在SGA中還有兩個可選的記憶體結構:
4、Java池(Java Pool): 用來儲存Java程式碼。
5、大型池(Large Pool): 用來儲存不與SQL直接相關的大型記憶體結構。備份、恢復使用。
推薦教學:《Oracle教學》
以上是oracle sga是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!