系统全局区域 System global area(),SGA 是一个读/写存储区,与 熟悉这个内存区域的每一个功能,能让 DBA 的工作更加轻松!来扒一扒吧。
SGA 实例
SGA 组件SQL> SELECT name,bytes FROM v$sgainfo;
NAME BYTES
-------------------------------- ----------
Fixed SGA Size 2257800 --> 固定区域,存储 SGA 各个组件的信息,不能修改大小;
Redo Buffers 2392064 --> 日志缓冲区;
Buffer Cache Size 339738624 --> 数据库缓冲区高速缓存;
Shared Pool Size 138412032 --> 共享池;
Large Pool Size 8388608 --> 大型池;
Java Pool Size 4194304 --> Java池;
Streams Pool Size 0 --> 流池。
Shared IO Pool Size 0
Granule Size 4194304
Maximum SGA Size 830930944
Startup overhead in Shared Pool 75056392
Free SGA Memory Available 335544320
SQL> SELECT * FROM v$sgastat WHERE name='free memory';
POOL NAME BYTES
------------ -------------------------- ----------
shared pool free memory 16207920
large pool free memory 7897088
java pool free memory 4194304
(SGA由多个内存组件组成,这些内存组件是用于满足特定类别的内存分配请求的内存池。除重做日志缓冲区以外的所有SGA组件都以称为颗粒的连续内存为单位分配和释放空间。)数据库缓冲区高速缓存(Database Buffer Cache)用于存放从数据文件读取的数据块副本的内存区域,在手动内存管理时,由初始化参数 DB_CACHE_SIZE、DB_KEEP_CACHE_SIZE、DB_CYCLE_CACHE_SIZE 控制其大小;SQL> show parameter db_cache_size
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_cache_size big integer 400M
SQL> show parameter db_keep_cache_size
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_keep_cache_size big integer 300M
SQL> show parameter db_recycle_cache_size
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_recycle_cache_size big integer 0重做日志缓冲区(Redo Log Buffer)
重做日志缓冲区是记录数据库更改的缓冲区用于实现数据库恢复。重做条目包含DML或DDL操作对数据库所做更改操作的信息。数据库恢复时将重做条目应用到数据文件以重建丢失的更改。SQL> show parameter log_buffer
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
log_buffer integer 5812224
共享池(Shared Pool)共享池缓存各种类型的数据。如共享池存储解析的SQL、PL / SQL代码、系统参数和数据字典信息。几乎在数据库中发生的每个操作都涉及共享池。SQL> show parameter shared_pool_size
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
shared_pool_size big integer 132M大型池(Large Pool)大池是用于分配大于适合于共享池的可选的内存区域。SQL> show parameter large_pool_size
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
large_pool_size big integer 12MJava 池(Java Pool)Java池是存储在Java虚拟机(JVM)内的所有特定会话的Java代码和数据存储的区域。此内存包括在呼叫结束时迁移到Java会话空间的Java对象。SQL> show parameter java_pool_size
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
java_pool_size big integer 12M流池(Streams Pool)流池存储缓冲队列的消息和用于Oracle数据流捕获过程提供存储器和应用程序。Streams Pool 由Oracle Streams独占使用。
除非专门配置它,否则 Streams Pool 的大小从零开始。池大小按照Oracle Streams的要求动态增长。SQL> show parameter streams_pool_size
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
streams_pool_size big integer 12M