oracle sga是什么

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教程

以上就是

? 版權聲明
THE END
喜歡就支持一下吧
點贊8 分享