大家好,又见面了,我是你们的朋友全栈君。
Oracle的SGA内存结构:
Buffer Cache数据库高速缓存
Default Pool
默认的缓冲池,大小由
DB_CACHE_SIZE
决定
Keep Pool
持久的缓冲池,大小由
DB_KEEP_CACHE_SIZE
决定
Non standard pool
非标准块标准池,大小由
DB_nK_cache_size
决定
Recycle pool
回收池,大小由
db_recycle_cache_size
决定
Shared Pool 共享池,大小由shared_pool_size决定
Library cache
俗称的库缓存
Row cache
行缓存,也叫字典缓存
Java Pool java池,大小由Java_pool_size决定
Large Pool 大池,大小由Large_pool_size决定
Fixed SGA 固定的SGA区域,包含了Oracle内部的数据结构,一般被存放在第一个granule中
通过SGA_TARGET参数手动配置ASMM。默认情况下,SGA_TARGET值为0,意味着ASMM关闭。要启动ASMM,初始化参数statistics_level必须设置为typical或ALL,同时SGA_TARGET参数设置为非0值。
如果为SGA_TARGET指定了非0值,则下面五个池将被自动设置,相应的参数被视为自动的(Autotuned parameters):
Database buffer cache(default pool) (db_cache_size)
shared pool (shared_pool_size)
large pool (large_pool _size)
streams pool (streams_pool_size)
java pool (java_pool_size)
还有一部分组建需要手动设置(Manually Tuned SGA Parameters):
Log buffer (log_buffer)
Keep pool (db_keep_cache_size)
Recycle pool (db_recycle_cache_size)
Non standard pool (db_nk_cache_size)
Fixed SGA 固定的SGA区域,包含了Oracle内部的数据结构
实际上我们不能同时设置sga_target为非0值和statistics_level为BASIC,会报错:
SYS@ tsid > alter system set statistics_level=basic;
alter system set statistics_level=basic
*
ERROR at line 1:
ORA-02097: parameter cannot be modified because specified value is invalid
ORA-00830: cannot set statistics_level to BASIC with auto-tune SGA enabled
==============================================================================================================================================
SGA_TARGET对自动配置组件和手动配置组件的影响:
若SGA_TARGET为0,意味着ASMM关闭,Autotuned parameters正常工作,即为这些组建分配相应的内存值。
若SGA_TARGET为非0值,默认情况下Autotuned parameters值都为0,如果手动为这些参数分配了值,则这些值将作为最小值。例如,SGA_TARGET设置为8GB,SHARED_POOL_SIZE设置为1GB,则ASMM算法不会将shared pool缩减至小于1GB。下面的查询可以查看实际为这些组建分配的内存:
SYS@ tsid > select component,current_size/1024/1024 size_mb from v$sga_dynamic_components;
COMPONENT SIZE_MB
—————————————————————- ———-
shared pool 156
large pool 4
java pool 4
streams pool 0
DEFAULT buffer cache 28
KEEP buffer cache 0
RECYCLE buffer cache 0
DEFAULT 2K buffer cache 0
DEFAULT 4K buffer cache 0
DEFAULT 8K buffer cache 0
DEFAULT 16K buffer cache 0
COMPONENT SIZE_MB
—————————————————————- ———-
DEFAULT 32K buffer cache 0
ASM Buffer Cache 0
13 rows selected.
SGA_TARGET设定后,需要手动配置大小的SGA组件的空间值从SGA_TARGET中减去。例如,SGA_TARGET设置为8GB,DB_RECYCLE_CACHE_SIZE设置为1GB,则为自动配置的组件(Autotuned parameters)空间值为7GB。同时,这7GB还包括剩余那些没有指定具体值的手动配置的SGA组件,但仅当那些自动配置组件分配完后,将剩余的空间分配给这些组件。
SGA_TARGET值是动态的,可以增长到SGA_MAX_SIZE,在确保所有组件都达到最小值的条件下,可以降低。
SGA_MAX_SIZE是可以给SGA分配的最大内存值。它不能被改变,除非重启数据库。
修改SGA_TARGET的值,只影响自动配置的组件。
如果增加了SGA_TARGET的值,增加的额外内存通过自动调整策略分配给自动配置组件。
如果减少了SGA_TARGET的值,自动内存调整策略将从自动配置组件中减去相应的内存。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/25744374/viewspace-723084/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/25744374/viewspace-723084/
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/134441.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...