问题: ORA-04031: unable to allocate 19204 bytes of shared memory ("shared pool","unknown object","sga heap(1,0)","session param values")
- X# ~' x q3 J" v9 b 错误原因:- ?; N r# E6 m% k% L2 m* T( [7 p3 A
共享内存太小,分配给共享池的内存不足以知足用户请求,或者存在必然碎片,没有有用的操作保留区,造成无法分配合适的共享区。 F. G; E% V8 d7 Y" P9 `' A- L
一个ORACLE例程的系统全局区域(SGA)包含几个内存区域(搜罗缓冲高速缓存、共享池、Java 池、年夜型池和重做日志缓冲)
5 s4 Q1 n& Q( _ SGA=db_cache+shared_pool+java_pool+large_pool
# t n, D P b9 h* } 措置体例:4 @; P) P! T; ^8 |5 A6 t8 L: D1 G
手动调整SGA的巨细,然后年夜头分配四年夜内存区域的巨细。首要增添共享内存缓和冲高速缓存。
4 i! g J6 h& w/ e sql> show sga; //查看SGA的具体巨细信息。, z: u' h3 B0 D0 Q! V5 I
sql>show parameter sga_max_size //查看SGA最年夜值& g$ ^: o, X$ m* |
sql> show parameter shared_pool //查看共享内存
' o8 y1 T6 V/ z! g7 x v sql>show parameter db_cache //查看数据缓存! ^& L8 ~8 ` Q$ h- Y( b: b3 a( [% @ @* Z
sql> alter system set sga_max_size = 500M scope=spfile;//改削SGA最年夜值
( k/ E' d) J; ?& H: }1 B sql> alter system set shared_pool_size =200M scope=spfile; //改削共享内存5 ?. y: k, w: W( l
sql> alter system set db_cache_size =250M scope=spfile; //改削数据缓存 |