一,設(shè)置SGA的原則:
有時(shí)候會(huì)碰到在配置SGA中出現(xiàn)了問題,由于分配的內(nèi)存過多,數(shù)據(jù)庫啟不起來了。
而且還要注意,在WINDOWS平臺下,32位的操作系統(tǒng),SGA分配不能超過1.8G,64位的扛得住一些,所以我的數(shù)據(jù)庫服務(wù)器換成64位的WINDOWS2003了。
內(nèi)存結(jié)構(gòu)=SGA(系統(tǒng)全局區(qū))+PGA(程序全局區(qū))
SGA:是用于存儲數(shù)據(jù)庫信息的內(nèi)存區(qū),該信息為數(shù)據(jù)庫進(jìn)程所共享。它包含Oracle 服務(wù)器的數(shù)據(jù)和控制信息,它是在Oracle服務(wù)器所駐留的計(jì)算機(jī)的實(shí)際內(nèi)存中得以分配,如果實(shí)際內(nèi)存不夠再往虛擬內(nèi)存中寫
我們重點(diǎn)就是設(shè)置SGA,理論上SGA可占OS系統(tǒng)物理內(nèi)存的1/2——1/3
原則:SGA+PGA+OS使用內(nèi)存 <總物理RAM
SGA=((db_block_buffers*blocksize)+(shared_pool_size+large_pool_size+java_pool_size+log_buffers)+1MB
1、SGA系統(tǒng)全局區(qū).(包括以下五個(gè)區(qū))
A、數(shù)據(jù)緩沖區(qū):(db_block_buffers)存儲由磁盤數(shù)據(jù)文件讀入的數(shù)據(jù)。
大小: db_block_buffers*db_block_size
Oracle9i設(shè)置數(shù)據(jù)緩沖區(qū)為:Db_cache_size
原則:SGA中主要設(shè)置對象,一般為可用內(nèi)存40%。
B、共享池:(shared_pool_size):數(shù)據(jù)字典,sql緩沖,pl/sql語法分析.加大可提速度。
原則:SGA中主要設(shè)置對象,一般為可用內(nèi)存10%
C、日志緩沖區(qū):(log_buffer)存儲數(shù)據(jù)庫的修改信息.
原則:128K ---- 1M 之間,不應(yīng)該太大
D 、JAVA池(Java_pool_size)主要用于JAVA語言的開發(fā).
原則:若不使用java,原則上不能小于20M,給30M通常就夠了
E、 大池(Large_pool_size) 如果不設(shè)置MTS,主要用于數(shù)據(jù)庫備份恢復(fù)管理器RMAN。
原則:若不使用MTS,5---- 10M 之間,不應(yīng)該太大
SGA=. db_block_buffers*db_block_size+ shared_pool_size+ log_buffer+Java_pool+size+large_pool_size
原則: 達(dá)到可用內(nèi)存的55-58%就可以了.
2、PGA程序全局區(qū)
PGA:包含單個(gè)服務(wù)器進(jìn)程或單個(gè)后臺進(jìn)程的數(shù)據(jù)和控制信息,與幾個(gè)進(jìn)程共享的SGA 正相反PGA 是只被一個(gè)進(jìn)程使用的區(qū)域,PGA 在創(chuàng)建進(jìn)程時(shí)分配在終止進(jìn)程時(shí)回收.
A、Sort_area_size 用于排序所占內(nèi)存
B、Hash_area_size 用于散列聯(lián)接,位圖索引
這兩個(gè)參數(shù)在非MTS下都是屬于PGA ,不屬于SGA,是為每個(gè)session單獨(dú)分配的,在我們的服務(wù)器上除了OS + SGA,一定要考慮這兩部分
原則:OS 使用內(nèi)存+SGA+并發(fā)執(zhí)行進(jìn)程數(shù)*(sort_area_size+hash_ara_size+2M) < 0.7*總內(nèi)存
實(shí)例配置
一:物理內(nèi)存多大
二:操作系統(tǒng)估計(jì)需要使用多少內(nèi)存
三:數(shù)據(jù)庫是使用文件系統(tǒng)還是裸設(shè)備
四:有多少并發(fā)連接
五:應(yīng)用是OLTP 類型還是OLAP 類型
基本掌握的原則是, db_block_buffer 通??梢员M可能的大,shared_pool_size 要適度,log_buffer 通常大到幾百K到1M就差不多了
例如:
內(nèi)存2G 單個(gè)CPU db_block_size 是8192 bytes
SGA=0.55*2048M=1126.4M左右
建議 shared_pool_size = 200M , db_block_buffer *db_block_size = 800M
具體: shared_pool_size=209715200 #200M
db_block_buffer=103192 #800M
log_buffer = 131072 # 128k (128K*CPU個(gè)數(shù))
large_pool_size= 31457280 #30M
java_pool_size = 20971520 # 20 M
sort_area_size = 524288 # 512k (65k--2M)
sort_area_retained_size = 524288 # MTS 時(shí) sort_area_retained_size = sort_area_size
二,修改SGA的大小:
1.sga_target不能大于sga_max_size,可以設(shè)置為相等。
2.SGA加上PGA等其他進(jìn)程占用的內(nèi)存總數(shù)必須小于操作系統(tǒng)的物理內(nèi)存。
做如下操作前,必須備份dbs目錄下的所有文件。
方法一:直接SQL命令行修改:
SQL>alter system set sga_target=1024m scope=spfile;
SQL>alter system set sga_max_size=1024m scope=spfile;
(如果spfile文件不存在,需先創(chuàng)建createspfile from pfile;)
alter system set sga_target=12g scope=spfile;
alter system set sga_max_size=12g scope=spfile;
然后
SQL>shutdown immediate
SQL>startup
SQL>show sga; 即可看到SGA的大小已經(jīng)被修改
方法二:通過EM修改:
以SYS登陸到EM:管理->(數(shù)據(jù)庫配置)所有初始化參數(shù)—>SPFile->
在此界面可以直接定義sga_target與sga_max_size
然后重啟數(shù)據(jù)庫即可!
文章出處:http://www.diybl.com/course/7_databases/oracle/Oracleshl/200866/123114.html
cmd下部分操作:,oracle10.2.0g
SQL>conn sys/rezin as sysdba
已連接。
SQL> shutdown immediate
數(shù)據(jù)庫已經(jīng)關(guān)閉。
已經(jīng)卸載數(shù)據(jù)庫。
ORACLE 例程已經(jīng)關(guān)閉。
SQL> startup
ORACLE 例程已經(jīng)啟動(dòng)。
TotalSystem Global Area 1073741824 bytes
FixedSize 1253124 bytes
VariableSize 696254716 bytes
Database Buffers 369098752 bytes
RedoBuffers 7135232 bytes
數(shù)據(jù)庫裝載完畢。
數(shù)據(jù)庫已經(jīng)打開。
SQL> show sga;
TotalSystem Global Area 1073741824 bytes ---原來大小
FixedSize 1253124 bytes
VariableSize 696254716 bytes
Database Buffers 369098752 bytes
RedoBuffers 7135232 bytes
SQL> alter system set sga_target=300m scope=spfile;
系統(tǒng)已更改。
SQL>alter system set sga_max_size=280m scope=spfile;
系統(tǒng)已更改。
SQL>shutdown immediate
數(shù)據(jù)庫已經(jīng)關(guān)閉。
已經(jīng)卸載數(shù)據(jù)庫。
ORACLE 例程已經(jīng)關(guān)閉。
SQL> startup
ORACLE 例程已經(jīng)啟動(dòng)。
TotalSystem Global Area 314572800 bytes ---修改后的大小
FixedSize 1248720 bytes
VariableSize 96469552 bytes
Database Buffers 209715200 bytes
RedoBuffers 7139328 bytes
數(shù)據(jù)庫裝載完畢。
數(shù)據(jù)庫已經(jīng)打開。
SQL>