各個平臺上調整最大SGA區的方法
2024-07-21 02:38:01
供稿:網友
在32bit或者64bit的平臺上跑32bit的Oracle的時候,SGA總是受到限制,導致大內存的機器不能完全發揮作用,最近就專門找了一些關于調整最大SGA區的文檔,看了看,感覺收獲蠻大的,總結了一下幾個平臺的,但是不全,歡迎大家探討補全。
我先把我總結的幾個平臺貼出來大家討論討論。
在REDHAT ADVANCED SERVER2.1上擴展SGA(1.7G以上)
一. 目標:
1. 在一個4G以上的內存的機器上將SGA從1.7G增至2.7G
2. 兼容8.1.7,9.0.1,9.2.0版本的數據庫
3. 整個SGA都能夠被提高
二. 限制:
1. 只答應在本地啟動和關閉數據庫
2. 假如為PGA保存的虛擬內存太少就會導致ORA-4030的錯誤
三. 基本步驟:
1. 查看啟動oracle用戶的shel的進程號PID
ps -ef或者echo $$
2. 以root用戶單獨開一個進程,執行:
echo 268435456 > /PRoc/$PID/mapped_base
這個要對server上所有產生oracle進程的shell
3. 修改shmmax的值。用root用戶執行
echo 3000000000 > /proc/sys/shmmax
4. 重新分配SGA
shutdown immediate所有的oracle實例
cd $ORACLE_HOME/lib
cp –a libserver9.a libserver9.a.org(備份liberver9.a文件)
cd $ORACLE_HOME/bin
cp –a oracle oracle.org(備份oracle文件)
cd $ORACLE_HOME/rdbms/lib
genksms –s 0x15000000 > ksms.s
make –f ins_rdbms.mk ksms.o(編譯新的sga地址)
make –f ins_rdbms.mk ioracle(重新鏈接)
這樣改過以后就可以支持到2.65G的sga,從而可以提高db_cache_size或者db_block_buffers去提高數據庫的緩沖區了。
True64 Unix上使SGA大于2G
1. 檢查是否有足夠的內存能夠分配給SGA
userf –r 300 grep –i mem
2. 配置核心
vm:
vm-maxvas=實際物理內存
vm-mapentries=400
ubc-minpercent=1
ubc-maXPercent=2
ipc:
shm-max=物理內存或者大于SGA
shm-mni=128
shm-seg=32
proc:
max-per-proc-data-size=物理內存
per-proc-data-size=物理內存
max-per-proc-address-space=物理內存
per-proc-address-space=物理內存
不要修改/etc/sysconfigtab文件中的參數位置。
/sbin/sysconfig –q vm
/sbin/sysconfig –q ipc
/sbin/sysconfig –q proc
3. 設置環境
對于C Shell,修改.login文件
limit datasize unlimited
limit stacksize unlimited
limit memoryuse unlimited
limit addressspace unlimited
對于Korn或者Bourn Shell,修改.login文件
ulimit –d unlimited
ulimit –s unlimited
ulimit –m unlimited
ulimit –v unlimited
4. 重新分配SGA
設置init文件中參數vlm_sga_base_address參數
例如:超過了3G,設置vlm_sga_base_address=0x400000000
5. SWAP區的設置
建議設置成2-3倍的物理內存