Oracle 内存调整

名词解释

SGA: System Global Area是Oracle Instance的基本组成部分,在实例启动时分配;
系统全局域SGA主要由三部分构成:共享池、数据缓冲区、日志缓冲区。

共享池:Shared Pool用于缓存最近被执行的SQL语句和最近被使用的数据定义,主要包括:Library cache(共享SQL区)和Data dictionary cache(数据字典缓冲区)
共享SQL区是存放用户SQL命令的区域,数据字典缓冲区存放数据库运行的动态信息
缓冲区高速缓存:Database Buffer Cache用于缓存从数据文件中检索出来的数据块,可以大大提高查询和更新数据的性能
大型池:Large Pool是SGA中一个可选的内存区域,它只用于shared server环境
Java池:java Pool为Java命令的语法分析提供服务

PGA:Program Global Area是为每个连接到Oracle database的用户进程保留的内存。
查询SGA和PGA
获得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 580M
sga_target big integer 580M

获得pga_aggregate_target的值

SQL> show parameter pga;

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
pga_aggregate_target big integer 192M

SGA空闲空间

SQL> select pool,name, round(sgasize/1024/1024,2) "Allocated(M)",
    round(bytes/1024,2) "自由空间(K)", round(bytes/sgasize*100, 2) "自由空间百分比(%)"
from (select sum(bytes) sgasize from sys.v_$sgastat) s, sys.v_$sgastat f
where f.name = 'free memory';

POOL NAME Allocated(M) 自由空间(K) 自由空间百分比(%)
------------ -------------------------- ------------ --------------- ------------------------
shared pool free memory 578.35 426.5 0.07
large pool free memory 578.35 3214.98 0.54
java pool free memory 578.35 4096 0.69

查看 Oracle SGA 命中率
数据缓冲区高速缓存

SELECT physical_reads, db_block_gets, consistent_gets, NAME,
100 * ( 1 - ( physical_reads / (consistent_gets + db_block_gets - physical_reads))) "Data Buffer Hit Ratio"
FROM v$buffer_pool_statistics;

PHYSICAL_READS DB_BLOCK_GETS CONSISTENT_GETS NAME Data Buffer Hit Ratio
-------------- ------------- --------------- -------------------- ---------------------
3673479 173945154 1543853168 DEFAULT 99.7856936141494

重做日志缓冲区

SELECT a.VALUE redo_entries, b.VALUE redo_buffer_allocation_retries,
ROUND ((1 - b.VALUE / a.VALUE) * 100, 4) log_buffer_ratio
FROM v$sysstat a, v$sysstat b
WHERE a.NAME = 'redo entries' AND b.NAME = 'redo buffer allocation retries';

REDO_ENTRIES REDO_BUFFER_ALLOCATION_RETRIES LOG_BUFFER_RATIO
------------ ------------------------------ ----------------
88910432 5581 99.9937

共享池缓冲区命中率

建议大于90%

SELECT SUM (pinhits) / SUM (pins) * 100 "hit radio" FROM v$librarycache;

hit radio
----------
96.7194470

数据字典高速缓存命中率

建议大于90%

SELECT TO_CHAR (ROUND ((1 - SUM (getmisses) / SUM (gets)) * 100, 1)) || '%' "Dictionary Cache Hit Ratio" FROM v$rowcache;

Dictionary Cache Hit Ratio
-----------------------------------------
99.5%

排序

SELECT a.VALUE disk_sort, b.VALUE memory_sort, ROUND ((1 - a.VALUE / (a.VALUE + b.VALUE)) * 100, 4) sort_ratio
FROM v$sysstat a, v$sysstat b
WHERE a.NAME = 'sorts (disk)' AND b.NAME = 'sorts (memory)';

DISK_SORT MEMORY_SORT SORT_RATIO
---------- ----------- ----------
0 6034093 100

修改
参考值

对于32 BIT系统,有SGA 1.7G限制

现场服务器是8G内存,SGA设置为4G,PGA设置为1G
现场服务器是16G内存,SGA设置为10G,PGA设置为2G
现场服务器是32G内存,SGA设置为20G,PGA设置为4G
修改方法
1、更改之前,需要备份,修改之后,很容易启动不了数据库。
pfile

sga_max_size=4G
sga_target=4G
pga_aggregate_target=1G

spfile

SQL> alter system set sga_max_size=4G scope=spfile;
SQL> alter system set sga_target=4G scope=spfile;
SQL> alter system set pga_aggregate_target=1G scope=spfile;


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值