impdp UDI-31623 ORA-4031

记录一次impdp 导入报错,UDI-31623 ,但是观察Db alert可以发现存在ORA-04031的报错,内存不足???

IMPDP
UDI-31623
ORA-31623
ORA-06512

观察db alert
出现ORA-04031 
ORA-04031: unable to allocate 56 bytes of shared memory ("streams pool","unknown object","streams pool","fixed allocation callback")

#free -g
60 g 操作系统内存!

查询DB内存参数
SQL>show parameter sga
->500M!!! max
SQL>show parameter streams
->0 说明是自动分配内存的

此视图基于自实例启动以来所有已完成的SGA调整大小操作总结信息。所有大小均以字节表示。

SQL>select * from v$sga_dynamic_components where component like 'streams pool%';
MAX_SIZE=8,388,608 =>8Mbytes ???非常小
LAST_OPER_TYPE=GROW => 最后的类似是增长
LAST_OPER_MODE=IMMEDIATE=>立即分配的方式 从这些信息,可以发现Streams pool并无异常,且非常小就无法申请到足够的内存了,明显是由于内存不足导致的。
CURRENT_SIZE=4,194,304 =>当前大小
GRANULE_SIZE=4,194,304 =>申请扩的大小,才申请4M内存就无法获得了。。。

参考MOS
PMON Process Repeats ORA-4031 After Expdp Session Fails With ORA-4031 ("streams pool","unknown object","streams pool",
"fixed allocation callback") (Doc ID 2333337.1)
select * from v$sga_dynamic_components where component like 'streams pool%';
alter system set streams_pool_size=<larger than CURRENT_SIZE>;
处理
加大SGA_MAX内存大小
SQL>show parameter spfile 确认spfile参数启动的db
SQL>create pfile='/tmp/bk_pfile.ora' from spfile; 备份参数文件
SQL>alter system set sga_max_size=30g scope=spfile;
SQL>shutdown immediate;
SQL>startup;
重新导入!
原文地址:https://www.cnblogs.com/lvcha001/p/12738086.html