-- 优化Oracle内存结构
-- 优化SGA(System Global Area )
-- SGA = data buffer + 用于存放从数据文件读入的数据块,可以尽可能的大
-- shared_pool_size + 通常设为500M左右,不应超过700M 用于保存数据字典及当前执行的SQL语句和存储过程
-- log_buffer + 通常设为512K到1M 用于缓存用户更新的数据,不需太大
-- java_pool_size + 通常设置为16M。
-- large_pool_size 通常设置为是16M-64M
-- 优化PGA (Program Global Area ) 为每个session单独分配
-- sort_area_size 默认64K,通常设置为128K到512K
-- hash_area_size 不做配置,是根据2*sort_area_size计算得到
select name, value/1024||'KB', display_value, isdefault, isses_modifiable,
issys_modifiable, isinstance_modifiable, description from v$parameter
where name in ('data buffer', 'shared_pool_size','log_buffer', 'java_pool_size', 'large_pool_size','buffer',
'sort_area_size', 'hash_area_size', 'sga_target', 'db_cache_size');
-- 对于自动管理的SGA,其部分参数默认值为0,查询真实大小
SELECT pool, sum(bytes)/1024/1024 || 'MB'
FROM v$sgastat
where pool is not null group by pool;
-- 查询系统参数
SHOW PARAMETERS SHARED_POOL_SIZE;
-- 修改系统参数
ALTER SYSTEM SET SHARED_POOL_SIZE='500M' SCOPE=BOTH ;
-- 对于自动内存管理的情况,可以通过创建spfile来手动管理,创建成功后会在database目录下生成<SID>.ora文件
create pfile from spfile;
select component,
current_size/1024/1024,
min_size/1024/1024,
max_size/1024/1024,
user_specified_size/1024/1024
from v$sga_dynamic_components where component='shared pool';