Oracle10g 管理系統(tǒng)全局區(qū)簡(jiǎn)介
你對(duì)Oracle10g 管理系統(tǒng)全局區(qū)(SGA)的實(shí)際應(yīng)用是否了解?對(duì)其的一些相關(guān)步驟的運(yùn)行是否了如指掌?如果你對(duì)Oracle10g 管理系統(tǒng)全局區(qū)(SGA)的相關(guān)內(nèi)容感興趣的話(huà),你就可以瀏覽我們的文章。
有幾個(gè)影響SGA內(nèi)存分配數(shù)量的參數(shù),除了SGA_MAX_SIZE ,其他都是動(dòng)態(tài)參數(shù),也就是說(shuō)在數(shù)據(jù)庫(kù)運(yùn)行期間可以使用ALTER SYSTEM 語(yǔ)句動(dòng)態(tài)修改的參數(shù).SGA的大小是動(dòng)態(tài)的,通過(guò)修改這些參數(shù)可以是SGA增長(zhǎng)或收縮.
SGA組件和SGA內(nèi)存顆粒
由許多內(nèi)存組件組成,他們是用于滿(mǎn)足特定內(nèi)存分配請(qǐng)求的內(nèi)存池.例如共享池(用于緩沖磁盤(pán)數(shù)據(jù)塊),所有的SAG以一個(gè)最小的內(nèi)存單元顆粒分配和回收內(nèi)存空間,Oracle在系統(tǒng)內(nèi)部追蹤SAG的內(nèi)存單元的分配和使用情況.
SGA的內(nèi)存分配是通過(guò)顆粒進(jìn)行分配的,顆粒大小由SGA的大小決定.一般來(lái)將,在大多數(shù)平臺(tái),如果SGA小于等于1G,那么顆粒大小為4MB,如果大于1G,顆粒的大小為16MB,不同的是在32位Windows平臺(tái)下,SGA大于1G時(shí),顆粒大小位8MB而非16MB,詳細(xì)信息,查看操作系統(tǒng)文檔.
可以通過(guò)V$SGAINFO 系統(tǒng)試圖查看由某個(gè)實(shí)例使用的顆粒大小.同樣的大小用于所有SGA的動(dòng)態(tài)組件.
如果指定的SGA組件的大小不是顆粒大小的整數(shù)倍,那么Oracle將會(huì)四舍五入求整而得到其整數(shù)倍值,賦給SGA內(nèi)存組件.而不是你所指定的大小.例如如果顆粒大小為4MB,你給 DB_CACHE_SIZE 參數(shù)設(shè)定為10MB,那么實(shí)際分配的內(nèi)存將會(huì)是12MB.
限制SGA的大小
SGA_MAX_SIZE 參數(shù)指定SGA在實(shí)例的生命期內(nèi)的***數(shù).動(dòng)態(tài)修改這些參數(shù)影響的Buffer cache,shared pool,large pool,java pool,和streams pool的大小,和SGA的總大小.但是不能超過(guò)SGA_MAX_SIZE 參數(shù)所設(shè)定的值.
如果沒(méi)有指定,那么默認(rèn)把所有初始化參數(shù)中指定的內(nèi)存組件的和作為期缺省值.
使用自動(dòng)共享內(nèi)存管理
通過(guò)使用SGA_TARGET參數(shù)來(lái)啟用自動(dòng)共享內(nèi)存管理.以前手動(dòng)分配的類(lèi)似java_pool,large_pool這樣的共享內(nèi)存組件將被自動(dòng)管理,另外,你必須確保STATISTICS_LEVEL初始化參數(shù)設(shè)置為T(mén)YPICAL(默認(rèn)值)或ALL.
SGA_TARGET初始化參數(shù)反映了SGA的大小.
表2-3 自動(dòng)分配大小的SGA組件和相應(yīng)的參數(shù)
SGA 組件 初始化參數(shù)
Oracle10g 管理系統(tǒng)全局區(qū)(SGA)在固定的SGA和其他Oracle數(shù)據(jù)庫(kù)實(shí)例需要的內(nèi)部分配 不可用
共享池 SHARED_POOL_SIZE
大型池 LARGE_POOL_SIZE
Java池 JAVA_POOL_SIZE
緩沖區(qū)高數(shù)緩存 DB_CACHE_SIZE
表2-4 手動(dòng)分配大小的使用SGA_TARGET空間的SGA組件
SGA 組件 初始化參數(shù)
日志緩沖區(qū) LOG_BUFFER
The keep and recycle buffer caches DB_KEEP_CACHE_SIZE
DB_RECYCLE_CACHE_SIZE
非標(biāo)準(zhǔn)緩沖區(qū)高數(shù)緩存塊大小 DB_nK_CACHE_SIZE
流池 STREAMS_POOL_SIZE
在手動(dòng)管理模式下執(zhí)行如下SQL查詢(xún)得到SGA_TARGET的值.
SELECT (
(SELECT SUM(value) FROM V$SGA) -
(SELECT CURRENT_SIZE FROM V$SGA_DYNAMIC_FREE_MEMORY)
) "SGA_TARGET"
FROM DUAL;
然后你可以刪除由Oracle自動(dòng)管理的共享內(nèi)存相應(yīng)的初始化參數(shù).
例如,當(dāng)前你在手動(dòng)管理模式下由如下配置,并且SGA_MAX_SIZE 設(shè)置為 1200M:
SHARED_POOL_SIZE = 200M
DB_CACHE_SIZE = 500M
LARGE_POOL_SIZE=200M
以上的相關(guān)內(nèi)容就是對(duì)Oracle10g 管理系統(tǒng)全局區(qū)(SGA)的介紹,望你能有所收獲。
【編輯推薦】
- Oracle Copy命令中SQL*Plus的Copy命令操作
- 在Oracle 學(xué)習(xí)中進(jìn)行數(shù)據(jù)庫(kù)查詢(xún)
- 在Oracle創(chuàng)建索引的實(shí)際操作中會(huì)出現(xiàn)的限制條件
- Oracle數(shù)據(jù)庫(kù)中怎樣選擇合適索引類(lèi)型
- 對(duì)Oracle10修改機(jī)器名后服務(wù)無(wú)法啟動(dòng)的解決