问题: ORA-04031: unable to allocate 19204 bytes of shared memory ("shared pool","unknown object","sga heap(1,0)","session param values")
! G c6 `# t9 Y3 a( R, }, j 错误原因:
2 u( ]: m) Q; n5 T/ i, a) [0 g8 F% z 共享内存太小,分配给共享池的内存不足以知足用户请求,或者存在必然碎片,没有有用的操作保留区,造成无法分配合适的共享区。7 F- [& B" I9 c
一个ORACLE例程的系统全局区域(SGA)包含几个内存区域(搜罗缓冲高速缓存、共享池、Java 池、年夜型池和重做日志缓冲)
, A1 \: x: B, B SGA=db_cache+shared_pool+java_pool+large_pool
3 ]! t' S4 ^3 k0 d c& B 措置体例:& e, Z$ c, D6 y& f2 A" R8 N7 M
手动调整SGA的巨细,然后年夜头分配四年夜内存区域的巨细。首要增添共享内存缓和冲高速缓存。
* e# a4 @6 L9 L; B1 ~' @ sql> show sga; //查看SGA的具体巨细信息。: j& [" n9 l, x! I
sql>show parameter sga_max_size //查看SGA最年夜值- O: D% v: ^; S, Q7 O$ P$ n
sql> show parameter shared_pool //查看共享内存! Z2 W7 h; v4 q6 q
sql>show parameter db_cache //查看数据缓存! [" |" |: [* x; P& f2 Z
sql> alter system set sga_max_size = 500M scope=spfile;//改削SGA最年夜值' C/ ]' a `5 U$ L) N5 W
sql> alter system set shared_pool_size =200M scope=spfile; //改削共享内存
+ O' L5 p$ f) f2 q sql> alter system set db_cache_size =250M scope=spfile; //改削数据缓存 |