1、show sga 结果描述
SQL> show sga
Total System Global Area 629145600 bytes
Fixed Size 1250572 bytes
Variable Size 352324340 bytes
Database Buffers 268435456 bytes
Redo Buffers 7135232 bytes
SQL> show parameter sga
NAME TYPE VALUE
------------------------------------ ----------- -----------
lock_sga boolean FALSE
pre_page_sga boolean FALSE
sga_max_size big integer 600M
sga_target big integer 0
Total System Global Area即为sga_max_size的大小
fixes size : oracle 的不同平台和不同版本下可能不一样,但对于确定环境是一个固定的值,里面存储了 SGA 各部分 组件 的信息,可以看作 引导 建立 SGA 的区域
Variable Size : 包括 shared pool ,java pool ,large pool, 管理DB_BLOCK_BUFFERS 的内存,管理控制文件信息的内存,等等其他管理和控制 oracle 内部结构的内存
2、SGA_MAX_SIZE与SGA_TARGET参数
sga_target是自动管理内存时使用的,这样你就不用设置DB_CACHE_SIZE,SHARED_POOL_SIZE等参数,他们会根据需要自动的进行调整的。SGA_MAX_SIZE是从oracle9i以来一直存在﹐是不可动态修改的。
SGA_TARGET是oracle10g中用于实现自动SGA内存管理而新增加的。
SGA_MAX_SIZE指的是可动态分配的最大值﹐而SGA_TARGET是当前已分配的最大sga。
SGA_MAX_SIZE是不可以动态修改的﹔而SGA_TARGET是可动态修改﹐直到SGA_MAX_SIZE的值(当然这是在实例启动前已设定SGA_MAX_SIZE>SGA_TARGET的情况) 如果在实例启动时﹐SGA_MAX_SIZE < SGA_TARGET 或SGA_MAX_SIZE没设定﹐则启动后SGA_MAX_SIZE的值会等于SGA_TARGET的值。
3、使用sga_target参数有几点需要注意:
1. 当使用sga_target时, 若未设置sga_max_size,或设置了小于sga_target,则sga_max_size将等于sga_target.
SQL> show parameter sga
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
lock_sga boolean FALSE
pre_page_sga boolean FALSE
sga_max_size big integer 152M
sga_target big integer 152M
2. 当sga_target是可动态调整的,但其值不能大于sga_max_size.
SQL> alter system set sga_target=160M; alter system set sga_target=160M * ERROR at line 1: ORA-02097: parameter cannot be
modified because specified value is invalid ORA-00823: Specified value of sga_target greater than sga_max_size
3.如果参数(如db_cache_size)和sga_target参数同时设置,那么参数db_cache_size是保底的值,需要超过这个值时由数据库动态分配.如果db_cache_size设置,而sga_target不设置,表示不使用oracle自动调整,db_cache_size就是设置的值,不再动态分配。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/26358285/viewspace-755195/ ,如需转载,请注明出处,否则将追究法律责任。