show parameter background_dump_dest
sqlplus查詢?nèi)罩韭窂?png
得到的路徑有時候結(jié)尾是alert,有時候是trace,前者打開是實時的log.xml日志,后者是關聯(lián)到alert中錯誤信息條目的具體錯誤信息
alert文件.png
trace文件.png
通過alert找到對應的trace文件,找到錯誤原因
image.png
報錯信息:
ORA-04030: out of process memory when trying to allocate 1049100 bytes (KSFQ heap,KSFQ Buffers)
sga_max_size指的是可動態(tài)分配的最大值﹐而sga_target是當前已分配的最大sga。
報錯可能原因:
- sga_max_size設置的值大于操作系統(tǒng)對單個進程可分配內(nèi)存的最大值。
- sga_target>sga_max_size
我遇到的情況是原因一,當時通過命令
show parameter sga_max_size
得到sga_max_size = 6000m,這樣一看肯定是設置的太大了,于是通過網(wǎng)上的方法
1. 設置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. 設置使用內(nèi)存最大大小
alter system set large_pool_size=80m;
4. 重啟oracle service
可是重啟了發(fā)現(xiàn)除了sga_max_size = 4000m之外,其他都是改變的值。明明設置的是1500m怎么自己變了,繼續(xù)查找alert的log看有沒有異常,找到后,連接到對應trace發(fā)現(xiàn)如下
image.png
說明1500m對于oracle來說太小了,自己設置到了4000多。