Oracle数据库数据恢复、性能优化

找回密码
注册
搜索
热搜: 活动 交友 discuz
发新帖

69

积分

0

好友

13

主题
1#
发表于 2014-12-22 21:24:59 | 查看: 5170| 回复: 6
在我的记忆中 PGA_AGGREGATE_TARGET 参数是设置PGA使用内存的最大值.
在10G里 PGA 就设置个参数就行. 而SGA设置SGA_MAX_SIZE和SGA_TARGET.
原理是SGA_TARGET 不够用的时候就向系统要内存,最大达到SGA_MAX_SIZE的限制.

当在11G的时候 新特性AMM 只要设置了MEMORY_TARGET 可以自动分配PGA和SGA.
一般情况下 默认安装下. PGA_AGGREGATE_TARGET=0  和SGA_TARGET=0

如今有个系统内存参数如下
MEMORY_TARGET=125G
MEMORY_MAX_TARGET=125G
SGA_MAX_SIZE=125G
PGA_AGGREGATE_TARGET=0
SGA_TARGET=0
WORKAREA_SIZE_POLICY = AUTO

不久前系统被另外个DBA 调整了参数 PGA_AGGREGATE_TARGET=30G
今天查了动态内存视图 发现PGA TARGET 当前值是122G 而SGA_TARGET=68G
两者加起来超过了MEMORY_TARGET的值啊?


查看了下只有12C 才有PGA_AGGREGATE_LIMIT 参数 限制PGA最大值.

11G 是不是可以通过关闭直接路径读取 来防止PGA膨胀?
2#
发表于 2014-12-22 22:00:25
另外问下 像我上面PGA 分配了122G SGA 分配了68G
当PGA 分配内存 超过了 PGA TARGET 30G  
是先从MEMORY TARGET 125G 里面 拿内存. 不够的话再从系统内存中拿?

回复 只看该作者 道具 举报

3#
发表于 2014-12-23 10:19:52
11G 是不是可以通过关闭直接路径读取 来防止PGA膨胀?

==>为什么说 直接路径读会导致PGA膨胀? 是否有相关的证据或报告

==》to 2楼
sga =68G  PGA=122g  memory_target=125g ? 这到底是如何设置的

回复 只看该作者 道具 举报

4#
发表于 2014-12-23 20:24:12
Maclean Liu(刘相兵 发表于 2014-12-23 10:19
11G 是不是可以通过关闭直接路径读取 来防止PGA膨胀?

==>为什么说 直接路径读会导致PGA膨胀? 是否有相关的 ...

1 默认情况下开启了直接路径读取,那些全表扫描的,直接从数据文件把数据读到PGA当中.

2 这是从 V$MEMORY_DYNAMIC_COMPONENTS  CURRENT_SIZE  视图中PGA TARGET 和SGA TARGET

3 我进一步查阅 PGA TARGET 只是目标值 并非真实内存分配大小. PGA TARGET =122G 曾经PGA 自动管理自动设置的目标值.


最后问下 PGA 内存分配最大值会不会受到MEMORY_TARGET的参数限制呢?

回复 只看该作者 道具 举报

5#
发表于 2014-12-23 21:59:39
1 默认情况下开启了直接路径读取,那些全表扫描的,直接从数据文件把数据读到PGA当中.

==> 这样会导致 导致PGA膨胀?

回复 只看该作者 道具 举报

6#
发表于 2014-12-24 11:05:04
Script:查询pga曾经使用过的最大值:
SELECT * FROM v$pgastat where name='maximum PGA allocated'

- V$SQL_WORKAREA_ACTIVE
This view can be used to display the work areas that are active (or executing)
in the instance. Small active sorts (under 64 KB) are excluded from the view.
Use this view to precisely monitor the size of all active work areas and to
determine if these active work areas spill to a temporary segment.

SELECT to_number(decode(SID, 65535, NULL, SID)) sid,
operation_type OPERATION,trunc(EXPECTED_SIZE/1024) ESIZE,
trunc(ACTUAL_MEM_USED/1024) MEM, trunc(MAX_MEM_USED/1024) "MAX MEM",
NUMBER_PASSES PASS, trunc(TEMPSEG_SIZE/1024) TSIZE
FROM V$SQL_WORKAREA_ACTIVE
ORDER BY 1,2;

回复 只看该作者 道具 举报

7#
发表于 2015-3-23 01:25:22
不了峰 发表于 2014-12-24 11:05
Script:查询pga曾经使用过的最大值:
SELECT * FROM v$pgastat where name='maximum PGA allocated'

不好意思 PGA 设置后要重启才能实际生效

回复 只看该作者 道具 举报

您需要登录后才可以回帖 登录 | 注册

QQ|手机版|Archiver|Oracle数据库数据恢复、性能优化

GMT+8, 2024-12-20 20:26 , Processed in 0.049169 second(s), 20 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部
TEL/電話+86 13764045638
Email service@parnassusdata.com
QQ 47079569