这几天Oracle 11g 数据库遇到个问题,需要调整SGA的大小,我直接修改了SGA_MAX_SIZE 后,重启数据库,报错,数据库启动不了,报错内容大致是 SGA_MAX_SIZE 大于MEMORY_TARGET的值。由于自己本来对这一块了解的不多,就上网查了相关资料,现整理如下:
SGA(系统全局区)主要包括shared pool、buffer pool等若干内存池,对于SGA可用show parameter sga查询SGA的大小,也可用以下命令查询SGA的组成
SQL>select * from v$sga;
NAME VALUE
-------------------- ----------
Fixed Size 1374304
Variable Size 239077280
Database Buffers 67108864
Redo Buffers 6299648
Fixed Size
oracle 的不同平台和不同版本下可能不一样,但对于确定环境是一个固定的值,里面存储了SGA 各部分组件的信息,可以看作引导建立SGA的区域。
Variable Size
主要包括shared_pool_size、java_pool_size、large_pool_size 等内存设置
Database Buffers
指数据缓冲区,主要是db_cache_size 。
Redo Buffers
指日志缓冲区,log_buffer。
现在修改如下: