Oracle新手如有錯誤的地方請各位大佬指正
環(huán)境
- Oracle 11g
- Centos 6.4
- 報錯信息:ORA-00838: Specified value of MEMORY_TARGET is too small, needs to be at least 2272M
解決過程
1.先了解參數(shù)的意義
首先查下文檔看這個參數(shù)怎么解釋,可以看memory_target和SGA观堂、PGA之間的關(guān)系
Oracle 9i引入pga_aggregate_target,可以自動對PGA進(jìn)行調(diào)整矾克;
Oracle 10g引入sga_target答朋,可以自動對SGA進(jìn)行調(diào)整傅是;
Oracle 11g則對這兩部分進(jìn)行綜合纤壁,引入memory_target迁筛,可以自動調(diào)整所有的內(nèi)存咳蔚,這就是新引入的自動內(nèi)存管理特性商佑。
2.錯誤來源
- 了解了參數(shù)的意義我們就試一下锯茄,調(diào)整了pga_target參數(shù)為0
結(jié)果報錯信息變?yōu)閘east 1548M (減少的那部分正好是PGA參數(shù)對應(yīng)的內(nèi)存大小)
- 再試一下調(diào)整sga_target參數(shù)為0
結(jié)果同上茶没,報錯信息變?yōu)閘east 924M(減少的那部分為SGA參數(shù)對應(yīng)的內(nèi)存大小)
也就是說這個memory_target參數(shù)值是和SGA+PGA的參數(shù)值有正向聯(lián)系肌幽,并且必須大于這兩個值加起來(其實不算錯誤)
解決問題
找到了原因就來解決問題,memory_target參數(shù)應(yīng)該大于SGA+PGA的內(nèi)存值
我多給點(diǎn)抓半,那就多給點(diǎn) 給了3G
問題解決喂急! 出現(xiàn)了新報錯! good 笛求!
報錯信息:ORA-00845: MEMORY_TARGET not supported on this system
在這個系統(tǒng)不支持廊移? (本機(jī)物理內(nèi)存及可用內(nèi)存都大于3G)
- 其實這個報錯不是不支持,經(jīng)查閱這里設(shè)置的值要小于/dev/shm的磁盤空間探入。查看本機(jī)的才1.9G(/dev/shm大小默認(rèn)為系統(tǒng)內(nèi)存的一半大薪瓶住)
什么? /dev/shm明明是磁盤 -- 和memory_target會有什么關(guān)系蜂嗽?
只能繼續(xù)了解/dev/shm是什么苗膝。 /dev/shm詳解入口
默認(rèn)的最大一半內(nèi)存大小在某些場合可能不夠用,并且默認(rèn)的inode數(shù)量很低一般都要調(diào)高些植旧,這時可以用mount命令來管理它辱揭。
mount -o size=1500M -o nr_inodes=1000000 -o noatime,nodiratime -o remount /dev/shm
修改之后去startup
問題解決。啟動成功
總結(jié): sga_target+pga_target+預(yù)留部分內(nèi)存 < memory_target < /dev/shm