立即注册
 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
广州大学城网业务调整

[数据库] oracle 11g中的memory_target小结 [复制链接] qrcode

查看: 4562 | 回复: 0

大法师的 该用户已被删除
发表于: 2013-2-18 17:30:10 | 显示全部楼层

11g
中新增
MEMORY_MAX_TARGET
参数,此参数一出现就如在
10g
中第一次出现
SGA_MAX_SIZE
参数一样给人以耳目一新的感觉。
memory_max_target
是设定
Oracle
能占
OS
多大的内存空间,一个是
Oracle SGA
区最大能占多大内存空间。无疑在
11g Oracle
又向自动管理内存更进一步。


10g
sga_max_size
是动态分配
Shared Pool Size,database buffer cache,large pool,java pool
redo log buffer
大小的,只是根据
Oracle
运行状况来重新分配
SGA
各内存块的大小。
PGA
10g
中需要单独设定
.


11g MEMORY_MAX_TARGET
参数包含两部分内存,一个
System global area(SGA),
另一个
system globalarea(PGA
)。很显然在
11g
中可已经将
PGA
SGA
一起动态管理了。

[/table]
MEMORY_TARGET--
操作系统的角度上
Oracle
所能使用的最大内存值。动态参数
MEMORY_MAX_TARGET--MEMORY_TARGET
所能设定的最大值。非动态可调。
Tip:
如果使用的是
pfile
,设定了
MEMORY_TARGET
而没有指定
MEMORY_MAX_TARGET
的值,则实例启动后
MEMORY_MAX_TARGET
的值与
MEMORY_TARGET
相等。如果
pfile
中指定了
MEMORY_MAX_TARGET
而没有指定
MEMORY_TARGET
,实例启动后
MEMORY_TARGET
0
AMM
在后台会启动一个内存管理
(Memory Manager, mman)
进程。
因为
AMM
的引入,
Oracle
内存管理更加灵活多样。
组合出来有
5
种内存管理形式
.
自动内存管理
自动共享内存管理
手工共享内存管理
自动
PGA
管理
手动
PGA
管理
1)
自动内存管理
默认安装的实例即是
AMM
方式。如下
SQL> show parameters target
NAME                                TYPE                  VALUE
---------------------------------------------------------- ------------------------------
archive_lag_target                  integer               0
db_flashback_retention_target       integer               1440
fast_start_io_target                integer               0
fast_start_mttr_target              integer               0
memory_max_target                   big integer           1216M
memory_target                       big integer           1216M
pga_aggregate_target                big integer            0
sga_target                          big integer            0
要注意到
SGA_TARGET
都为
0
2.
自动共享内存管理
(Automatic Shared Memory Management, ASMM)
这是
10g
引入的管理方式,要使用这种方式,需要设置初始化参数
MEMORY_TARGET=0
,然后显式的指定
SGA_TARGET
的值。
SQL> alter system set sga_target=1024mscope=both;
alter system set sga_target=1024m scope=both
*
ERROR at line 1:
ORA-02097: parameter cannot be modified becausespecified value is invalid
ORA-00839: SGA_TARGET cannot be modified to thespecified value
SQL> alter system set memory_target=0scope=both;
System altered.
SQL> alter system set sga_target=1024mscope=both;
System altered.
SQL>
这两个参数的修改是有严格顺序的,如果不遵守倒也没问题
–Oracle
会报告错误。
3.
手工共享内存管理
这个又更加原始了一些。因为原始,所以新的初始化参数
SGA_TARGET
MEMORY_TARGET
都要设置为
0.
然后手工设定
share_pool_size
db_cache_size
sga
参数。要注意
RESULT_CACHE_SIZE
参数是
11g
新引入的,用来缓存
SQL
结果。
4.
自动
PGA
 内存管理
如果使用
AMM
则对
PGA
不用操心。如果要做到精细控制而切换到自动
PGA
 内存管理模式,需要设定
WORKAREA_SIZE_POLICY
AUTO(
默认即为
AUTO)
,然后需要指定
PGA_AGGREGATE_TARGET
的值。如需要精确控制
PGA
,则
WORKAREA_SIZE_POLICY
MANUAL .(Thanks vongates)
5.
手动
PGA
管理
前提是
WORKAREA_SIZE_POLICY = manual ,
然后分别指定
SORT_AREA_SIZE
PGA
相关的参数。估计现在没有人干这个吃力不讨好的事情了。这个模式大可以忽略。
AMM
的限制
如果初始化参数
LOCK_SGA
true
,则
AMM
是不可用的。
下面来看看在
11g
Memory_target
设置和不设置对
SGA/PGA
的影响:
A
:如果
Memory_target
设置为非
0
(下面有四种情况来对
SGA
PGA
的大小进行分配)
1
sga_target
pga_aggregate_target
已经设置大小如果
Oracle
已经设置了参数
sga_target
pga_aggregate_target
,则这两个参数将各自被分配为最小值最为它们的目标值。
Memory_Target =SGA_TARGET+PGA_AGGREGATE_TARGET
,大小和
  
memory_max_size
一致。
2
sga_target
设置大小,
pga_aggregate_target
没有设置大小
那么
pga_aggregate_target
初始化值
=memory_target-sga_target
3
sga_target
没有设置大小,
pga_aggregate_target
设置大小
那么
sga_target
初始化值
=memory_target-pga_aggregate_target
4
sga_target
pga_aggregate_target
都没有设置大小
Oracle 11g
中对这种
sga_target
pga_aggregate_target
都没有设定大小的情况下,
Oracle
将对这两个值没有最小值和默认值。
Oracle
将根据数据库运行状况进行分配大小。但在数据库启动是会有一个固定比例来分配:
sga_target =memory_target *60%
pga_aggregate_target=memory_target *40%
B
:如果
Memory_target
没有设置或
=0
(在
11g
中默认为
0
11g
中默认为
0
则初始状态下取消了
Memory_target
的作用,完全和
10g
在内存管理上一致,完全向下兼容。
(也有三种情况来对
SGA
PGA
的大小进行分配)
   
1
SGA_TARGET
设置值,则自动调节
SGA
中的
shared pool,buffercache,redo log buffer,java pool,larger pool
等内存空间的大小。
PGA
则依赖
pga_aggregate_target
的大小。
sga
pga
不能自动增长和自动缩小。
2
SGA_target
PGA_AGGREGATE_TARGET
都没有设置
SGA
中的各组件大小都要明确设定,不能自动调整各组建大小。
PGA
不能自动增长和收缩。
3
MEMORY_MAX_TARGET
设置而
MEMORY_TARGET =0
这种情况先和
10g
一样,不做说明
 
styleq�'n-���0pt;font-family:"Courier New";color:#2B91AF;mso-font-kerning:0pt'>
2.      public String regularExpression(  
3.        @PathVariable String textualPart,  
4.        @PathVariable String numericPart){  
5.        
6.          System.out.println("Textual part: " + textualPart +   
7.            ", numeric part: " + numericPart);  
8.          return "someResult";  
9.      }  
[table=100%,white]比如如下的
URL
/sometext.123
,则输出:

Textual part: sometext, numeric part: 123.
 Java是一门最有前景的面向对象语言,学习java是许多人获得高薪的方法!现在学习java最好就是参加java培训广州java培训机构有很多,选择一个合适的java培训机构对于我们的就业是很重要的。因此大家一定要擦亮眼睛。选择合适的java培训机构
  QQ 744437114
 



跳转到指定楼层
快速回复 返回顶部 返回列表