首頁  >  文章  >  資料庫  >  oracle sga是什麼

oracle sga是什麼

青灯夜游
青灯夜游原創
2022-04-18 11:54:385836瀏覽

sga指的是“系統全域區”,是ORACLE為實例分配的一組共享緩衝儲存區,用於存放資料庫資料和控制信息,以實現對資料庫資料的管理和操作。 sga主要由共享池、資料緩衝區、重作日誌緩衝區組成;其中資料緩衝區用來儲存最近從資料檔案讀取寫過的資料。

oracle sga是什麼

本教學操作環境:Windows7系統、Oracle 11g版、Dell G3電腦。

記憶體結構是oracle資料庫最重要的組成部分之一,在資料庫中的操作或多或少都會依賴內存,是影響資料庫效能的重要因素Oracle資料庫中包含3個基本的記憶體結構:

oracle sga是什麼

下面要介紹一些記憶體結構中的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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn