show parameter background_dump_dest
sqlplus查詢?nèi)罩韭窂?png
得到的路徑有時(shí)候結(jié)尾是alert耿芹,有時(shí)候是trace,前者打開是實(shí)時(shí)的log.xml日志躬审,后者是關(guān)聯(lián)到alert中錯(cuò)誤信息條目的具體錯(cuò)誤信息
alert文件.png
trace文件.png
通過(guò)alert找到對(duì)應(yīng)的trace文件狸相,找到錯(cuò)誤原因
image.png
報(bào)錯(cuò)信息:
ORA-04030: out of process memory when trying to allocate 1049100 bytes (KSFQ heap,KSFQ Buffers)
sga_max_size指的是可動(dòng)態(tài)分配的最大值﹐而sga_target是當(dāng)前已分配的最大sga怕篷。
報(bào)錯(cuò)可能原因:
- sga_max_size設(shè)置的值大于操作系統(tǒng)對(duì)單個(gè)進(jìn)程可分配內(nèi)存的最大值。
- sga_target>sga_max_size
我遇到的情況是原因一友鼻,當(dāng)時(shí)通過(guò)命令
show parameter sga_max_size
得到sga_max_size = 6000m傻昙,這樣一看肯定是設(shè)置的太大了,于是通過(guò)網(wǎng)上的方法
1. 設(shè)置rman從SGA取內(nèi)存
alter system set dbwr_io_slaves=2 scope=spfile;
alter system set backup_tape_io_slaves=true scope=spfile;
2. 調(diào)整SGA大小
alter system set sga_target=1500m;
alter system set sga_max_size=1500m scope=spfile;
3. 設(shè)置使用內(nèi)存最大大小
alter system set large_pool_size=80m;
4. 重啟oracle service
可是重啟了發(fā)現(xiàn)除了sga_max_size = 4000m之外彩扔,其他都是改變的值妆档。明明設(shè)置的是1500m怎么自己變了,繼續(xù)查找alert的log看有沒(méi)有異常虫碉,找到后贾惦,連接到對(duì)應(yīng)trace發(fā)現(xiàn)如下
image.png
說(shuō)明1500m對(duì)于oracle來(lái)說(shuō)太小了,自己設(shè)置到了4000多敦捧。