Oracle的SGA調整經歷
2024-08-29 13:39:36
供稿:網友
上個月,數據庫開始出現問題,負載低,但查詢很慢,尤其是在應用程序啟動,加載預置數據的時候,以前啟動加載數據只需要不到1分鐘就可以完成,但當時啟動服務卻用了1個小時,后來經過分析和測試,找到了3個問題,其中一個問題是是硬件和JVM之間的, 可以看海東的<Xeon3.0·RedHat9·JVM>;另一個問題是數據庫IO高的問題,這是應用的問題,目前沒有太好的解決方式;最后一個問題就是數據庫的SGA配置問題,我在ITPUB上發了帖子Oracle 9i 的性能問題,經過高手的指點,重新配置了SGA,從SQLPLUS的表現可以感覺到明顯的效果,先把這個總結一下,便于以后查找 :) 首先推薦ITPUT上幾篇文章,感覺很有收獲: Oracle是如何工作的:這篇文章通過一個生動的例子,解釋了Oracle各部分是如何協調工作的,尤其是對于SGA在其中的作用。 關于SGA設置的一點總結 和關于2G內存的SGA的參數優化的問題 主要原因是當前的數據庫SGA配置中的db_cache設置太小,這個在ITPUB上遭到了大家的猛烈批判 :),下面是修改前的情況:SQL>SELECTNAME,VALUE
FROMv$parameter
WHERENAMEIN
('sga_max_size','db_cache_size',
'shared_pool_size','shared_pool_reserved_size','large_pool_size','java_pool_size',
'db_block_size','db_block_buffers','log_buffer','sort_area_size','sort_area_retained_size',
'hash_area_size','sessions','open_cursors'
)ORDERBYNAME;NAMEVALUE
--------------------------------------
db_block_buffers0
db_block_size4096
db_cache_size33554432
hash_area_size1048576
java_pool_size67108864
large_pool_size117440512
log_buffer524288
open_cursors300
sessions225
sga_max_size437327188
shared_pool_reserved_size10066329
shared_pool_size201326592
sort_area_retained_size0
sort_area_size52428814rowsselected.SQL>showsga
TotalSystemGlobalArea437327188bytes
FixedSize451924bytes
VariableSize402653184bytes
DatabaseBuffers33554432bytes
RedoBuffers667648bytes
Variable Size表示MAX_SGA中除去db_cache后剩余的部分。 按照大家的建議,我做了如下修改shared_pool_size=184800000(180M)
db_block_size=8192
db_cache_size=204800000(200M)
log_buffer=1024000(1M)
large_pool_size=51200000(50M)
java_pool_size=51457280(50M)
sort_area_size=524288(512K)
sort_area_retained_size=8192
調大了db_cache,減小了large_pool.OS AS3U4
MEM 4GB
CPU 2×2.8GB 還有Configuring linux kernel parameters[etc][sysctl.conf]
kernel.msgmnb = 65535
kernel.msgmni = 2878
fs.file-max = 524288
kernel.sem = 256 64000 256 256
kernel.shmmax = 3098693632[etc][security][limits.conf]
* soft nofile 4096
* hard nofile 65536
* soft nPRoc 16384
* hard nproc 16384
* soft nproc unlimited
* hard nproc unlimited[etc][profile]
ulimit -u 16384 -n 65536 僅供參考 我在OCS的壓力測試中,針對1000個并發用戶在10g中的配置:
SQL> show sga
Total System Global Area 1677721600 bytes
Fixed Size 779628 bytes
Variable Size 384047764 bytes
Database Buffers 1291845632 bytes
Redo Buffers 1048576 bytes
---------------------db_block_buffers = 0
db_block_size = 8192
db_cache_size = 419430400
hash_area_size = 131072
java_pool_size = 134217728
large_pool_size = 0
log_buffer = 1048576
open_cursors = 2000
sessions = 1200
sga_max_size = 1677721600
shared_pool_reserved_size = 10905190
shared_pool_size = 218103808
sort_area_retained_size = 0
sort_area_size = 65536 僅供參考