共享池是Oracle著名的SGA的一个重要组成部分,当我们尝试从共享池中分配较大的连续区域时(默认来说是4400bytes),我们可能会用到共享池中的保留区域(也叫保留池);注意Oracle总是会先尝试扫描普通共享池的空闲列表,之后才尝试扫描保留池的空闲列表,无论所需分配的内存块是否超过隐式参数_shared_pool_reserved_min_alloc所指定的值。 什么?你看到过的4031描述文档是用以下伪代码描述分配流程的:
那么来看看以下测试:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
large, scan reserved list
if (chunk found)
check
chunk
size
and
perhaps
truncate
if (chunk
is
not
found)
scan regular
free
list
if (chunk found)
check
chunk
size
and
perhaps
truncate
all
done
if (chunk
is
not
found)
do LRU operations
and
repeat
small, scan regular
free
list
if (chunk found)
check
chunk
size
and
perhaps
truncate
all
done
if (chunk
is
not
found)
do LRU operations
and
repeat
|
1
2
3
4
5
6
7
8
9
10
11
|
SQL>
alter
system
set
"_shared_pool_reserved_pct"
=5 scope=spfile;
System altered.
SQL> startup frce;
SP2-0714: invalid combination
of
STARTUP options
SQL> startup
force
;
ORACLE instance started.
Total System
Global
Area 3154116608 bytes
Fixed
Size
|
本文转自maclean_007 51CTO博客,原文链接:http://blog.51cto.com/maclean/1277506