SGA组成:
数据缓冲区(Database buffer cache)、重做日志缓冲区(Redolog buffer)、共享池(Shared pool)、大型池(Large pool)、JAVA池(Java pool)、流池(Streams pool)
2个重要的参数:
SGA_MAX_SIZE:SGA最大使用内存,不一定是SGA实际使用内存
SGA_TARGET:控制SGA自动内存管理,SGA_TARGET必须小于或等于SGA_MAX_SIZE,为SGA_TARGET分配空间后(sga_target>0),其可以自动调整SGA中相关参数的设置,包括DB_CACHE_SIZE,SHARED_POOL_SIZE,JAVA_POOL_SIZE,LARGE_POOL_SIZE,STREAMS_POOL_SIZE
禁用SGA内存自动管理: ALTER SYSTEM SET SGA_TARGET=0;
启用SGA内存自动管理: ALTER SYSTEM SET SGA_TARGET=200M;ALTER SYSTEM SET STATISTICS_LEVEL=DYNAMIC;
注:statistics_level初始化参数值分为 ALL, TYPICAL, BASIC,设置为TYPICAL或ALL时,收集统计信息,确保Oracle有相关的统计信息,来帮助分配SGA各部分内存
在设置SGA中各部分内存时,Oracle都是以一种称为粒度(Granule)的单位进行分配或回收,粒度大小不能由DBA修改,依据SGA与OS自动分配。
当SGA<1G时,粒度单位=4MB,SGA>1G时,粒度单位=16MB或8MB(Windows 32Bit),在设置db_cache_size等大小时,值应为粒度的整数倍,否则SGA会自动调整
SQL> select component,granule_size/1024/1024 from v$sga_dynamic_components where component='large pool';
COMPONENT GRANULE_SIZE/1024/1024
------------------------------ ----------------------
large pool 4
SQL> alter system set large_pool_size=11M;
系统已更改。
SQL> show parameter large_pool_size
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
large_pool_size big integer 12M
查看SGA内存分配情况
SQL> show sga
Total System Global Area 289406976 bytes
Fixed Size 1248600 bytes
Variable Size 117441192 bytes
Database Buffers 167772160 bytes
Redo Buffers 2945024 bytes
SQL> select * from v$sga;
NAME VALUE
-------------------- ----------
Fixed Size 1248600 --系统固定占用的部分,存储数据库和实例的状态信息
Variable Size 117441192 --包括Large pool,Java pool,Shared pool,Streams pool
Database Buffers 167772160 --数据缓冲区大小
Redo Buffers 2945024 --重做日志缓冲区大小
SQL> select * from v$sgainfo;
(displays size information about the SGA,including the sizes of different SGA components,the granule size,and free memory.)
NAME BYTES RES
-------------------------------- ---------- ---
Fixed SGA Size 1248600 No
Redo Buffers 2945024 No
Buffer Cache Size 167772160 Yes
Shared Pool Size 67108864 Yes
Large Pool Size 12582912 Yes
Java Pool Size 4194304 Yes
Streams Pool Size 4194304 Yes
Granule Size 4194304 No
Maximum SGA Size 289406976 No
Startup overhead in Shared Pool 33554432 No
Free SGA Memory Available 29360128
SQL> select * from v$sgastat where rownum<10;
(displays detailed information on the system global area (SGA).)
POOL NAME BYTES
------------ -------------------------- ----------
fixed_sga 1248600
buffer_cache 167772160
log_buffer 2945024
shared pool dpslut_kfdsg 256
shared pool hot latch diagnostics 80
shared pool ENQUEUE STATS 8360
SQL> select current_size/1024/1024 from v$sga_dynamic_free_memory;
(displays information about the amount of SGA memory available for future dynamic SGA resize operations.)
CURRENT_SIZE/1024/1024
----------------------
28
数据缓冲区(Database buffer cache)、重做日志缓冲区(Redolog buffer)、共享池(Shared pool)、大型池(Large pool)、JAVA池(Java pool)、流池(Streams pool)
2个重要的参数:
SGA_MAX_SIZE:SGA最大使用内存,不一定是SGA实际使用内存
SGA_TARGET:控制SGA自动内存管理,SGA_TARGET必须小于或等于SGA_MAX_SIZE,为SGA_TARGET分配空间后(sga_target>0),其可以自动调整SGA中相关参数的设置,包括DB_CACHE_SIZE,SHARED_POOL_SIZE,JAVA_POOL_SIZE,LARGE_POOL_SIZE,STREAMS_POOL_SIZE
禁用SGA内存自动管理: ALTER SYSTEM SET SGA_TARGET=0;
启用SGA内存自动管理: ALTER SYSTEM SET SGA_TARGET=200M;ALTER SYSTEM SET STATISTICS_LEVEL=DYNAMIC;
注:statistics_level初始化参数值分为 ALL, TYPICAL, BASIC,设置为TYPICAL或ALL时,收集统计信息,确保Oracle有相关的统计信息,来帮助分配SGA各部分内存
在设置SGA中各部分内存时,Oracle都是以一种称为粒度(Granule)的单位进行分配或回收,粒度大小不能由DBA修改,依据SGA与OS自动分配。
当SGA<1G时,粒度单位=4MB,SGA>1G时,粒度单位=16MB或8MB(Windows 32Bit),在设置db_cache_size等大小时,值应为粒度的整数倍,否则SGA会自动调整
SQL> select component,granule_size/1024/1024 from v$sga_dynamic_components where component='large pool';
COMPONENT GRANULE_SIZE/1024/1024
------------------------------ ----------------------
large pool 4
SQL> alter system set large_pool_size=11M;
系统已更改。
SQL> show parameter large_pool_size
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
large_pool_size big integer 12M
查看SGA内存分配情况
SQL> show sga
Total System Global Area 289406976 bytes
Fixed Size 1248600 bytes
Variable Size 117441192 bytes
Database Buffers 167772160 bytes
Redo Buffers 2945024 bytes
SQL> select * from v$sga;
NAME VALUE
-------------------- ----------
Fixed Size 1248600 --系统固定占用的部分,存储数据库和实例的状态信息
Variable Size 117441192 --包括Large pool,Java pool,Shared pool,Streams pool
Database Buffers 167772160 --数据缓冲区大小
Redo Buffers 2945024 --重做日志缓冲区大小
SQL> select * from v$sgainfo;
(displays size information about the SGA,including the sizes of different SGA components,the granule size,and free memory.)
NAME BYTES RES
-------------------------------- ---------- ---
Fixed SGA Size 1248600 No
Redo Buffers 2945024 No
Buffer Cache Size 167772160 Yes
Shared Pool Size 67108864 Yes
Large Pool Size 12582912 Yes
Java Pool Size 4194304 Yes
Streams Pool Size 4194304 Yes
Granule Size 4194304 No
Maximum SGA Size 289406976 No
Startup overhead in Shared Pool 33554432 No
Free SGA Memory Available 29360128
SQL> select * from v$sgastat where rownum<10;
(displays detailed information on the system global area (SGA).)
POOL NAME BYTES
------------ -------------------------- ----------
fixed_sga 1248600
buffer_cache 167772160
log_buffer 2945024
shared pool dpslut_kfdsg 256
shared pool hot latch diagnostics 80
shared pool ENQUEUE STATS 8360
SQL> select current_size/1024/1024 from v$sga_dynamic_free_memory;
(displays information about the amount of SGA memory available for future dynamic SGA resize operations.)
CURRENT_SIZE/1024/1024
----------------------
28
本文介绍了Oracle数据库系统全局区(SGA)的组成及其关键参数SGA_MAX_SIZE与SGA_TARGET的作用。探讨了如何通过这些参数实现SGA内存的自动管理,并展示了如何查看SGA各部分的内存分配情况。
8685

被折叠的 条评论
为什么被折叠?



