oracle sga是什么
本教程操作環(huán)境:Windows7系統(tǒng)、Oracle 11g版、Dell G3電腦。
內(nèi)存結(jié)構(gòu)是oracle數(shù)據(jù)庫最重要的組成部分之一,在數(shù)據(jù)庫中的操作或多或少都會依賴到內(nèi)存,是影響數(shù)據(jù)庫性能的重要因素Oracle數(shù)據(jù)庫中包括3個基本的內(nèi)存結(jié)構(gòu):
下面給大家介紹一些內(nèi)存結(jié)構(gòu)中的sga。
oracle sga簡介
sga全稱“System Global Area”,中文意思為“系統(tǒng)全局區(qū)”,是ORACLE為實例分配的一組共享緩沖存儲區(qū),主要用于存放數(shù)據(jù)庫數(shù)據(jù)和控制信息,該信息為數(shù)據(jù)庫進(jìn)程所共享(PGA不能共享的),以實現(xiàn)對數(shù)據(jù)庫數(shù)據(jù)的管理和操作。
它包含Oracle 服務(wù)器的數(shù)據(jù)和控制信息,它是在Oracle服務(wù)器所駐留的計算機的實際內(nèi)存中得以分配,如果實際內(nèi)存不夠再往虛擬內(nèi)存中寫。
SGA是一組共享內(nèi)存結(jié)構(gòu), 被所有的服務(wù)和后臺進(jìn)程所共享。當(dāng)數(shù)據(jù)庫實例啟動時,系統(tǒng)全局區(qū)內(nèi)存被自動分配。當(dāng)數(shù)據(jù)庫實例關(guān)閉時,SGA內(nèi)存被回收。 SGA是占用內(nèi)存最大的一個區(qū)域,同時也是影響數(shù)據(jù)庫性能的重要因素。
查詢SGA區(qū)的情況:
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
登錄后復(fù)制
-
Fixed Size表示固定區(qū)域,存儲SGA各個組件的信息。不能修改大小。
-
Variable Size表示可變區(qū)域,比如共享池、java池、大池等。
-
Database Buffers表示數(shù)據(jù)庫高速緩沖區(qū)。
-
Redo Buffers表示日志緩沖區(qū)。
SGA主要包括:
系統(tǒng)全局域SGA主要由三部分構(gòu)成:共享池、數(shù)據(jù)緩沖區(qū)、日志緩沖區(qū)。
1、共享池(shared pool) :用來存儲最近執(zhí)行的SQL語句和最近使用的數(shù)據(jù)字典的數(shù)據(jù)。
它主要由兩個內(nèi)存結(jié)構(gòu)構(gòu)成:Library cache和Data dictionary cache
修改共享池的大小:ALTER SYSTEM SET SHARED_POOL_SIZE = 64M;
Library Cache緩存被執(zhí)行的SQL和PL/SQL的相關(guān)信息,即存放SQL語句的文本,分析后的代碼及執(zhí)行計劃。實現(xiàn)常用語句的共享,使用LRU算法進(jìn)行管理,由以下兩個結(jié)構(gòu)構(gòu)成:Shared SQL area、Shared PL/SQL area;
Data Dictionary Cache緩存被使用的數(shù)據(jù)庫定義,即存放有關(guān)表、列和其它對象定義及權(quán)限。它包括關(guān)于數(shù)據(jù)庫文件、表、索引、列、用戶、權(quán)限以及其它數(shù)據(jù)庫對象的信息。在語法分析階段,Server Process訪問數(shù)據(jù)字典中的信息以解析對象名和對存取操作進(jìn)行驗證。數(shù)據(jù)字典信息緩存在內(nèi)存中有助于縮短響應(yīng)時間。
2、數(shù)據(jù)緩沖區(qū) (database buffer cache):用來存儲最近從數(shù)據(jù)文件中讀寫過的數(shù)據(jù)。
在數(shù)據(jù)高速緩沖區(qū)中存放著Oracle系統(tǒng)使用過的數(shù)據(jù)塊(即用戶的高速緩沖區(qū)),當(dāng)把數(shù)據(jù)寫入數(shù)據(jù)庫時,它以數(shù)據(jù)塊為單位進(jìn)行讀寫,當(dāng)數(shù)據(jù)高速緩沖區(qū)填滿時,則系統(tǒng)自動去掉一些不常被用戶訪問的數(shù)據(jù)。如果用戶要查的數(shù)據(jù)不在數(shù)據(jù)高速緩沖區(qū)時,Oracle自動從磁盤中去讀取。數(shù)據(jù)高速緩沖區(qū)包括三個類型的區(qū):
1) 臟數(shù)據(jù)區(qū)(Dirty Buffers):包含有已經(jīng)改變過并需要寫回數(shù)據(jù)文件的數(shù)據(jù)塊。
2) 自由區(qū)(Free Buffers):沒有包含任何數(shù)據(jù)并可以再寫入的區(qū),Oracle可以從數(shù)據(jù)文件讀數(shù)據(jù)塊該區(qū)。
3) 保留區(qū)(Pinned Buffers):此區(qū)包含有正在處理的或者明確保留用作將來用的區(qū)。
3、重作日志緩沖區(qū)(redo log buffer):用來記錄服務(wù)或后臺進(jìn)程對數(shù)據(jù)庫的操作。
主要用于恢復(fù)其中的每一項修改記錄都被稱為redo 條目。利用Redo條目的信息可以重做修改。
另外在SGA中還有兩個可選的內(nèi)存結(jié)構(gòu):
4、Java池(Java Pool): 用來存儲Java代碼。
5、大型池(Large Pool): 用來存儲不與SQL直接相關(guān)的大型內(nèi)存結(jié)構(gòu)。備份、恢復(fù)使用。
推薦教程:《Oracle教程》
以上就是oracle sga是什么的詳細(xì)內(nèi)容,更多請關(guān)注風(fēng)君子博客其它相關(guān)文章!
總結(jié)
以上是生活随笔為你收集整理的oracle sga是什么的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java多线程饥饿现象的问题及解决办法(
- 下一篇: vue怎么读取api