`
neo
  • 浏览: 265546 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

PGA的设定

阅读更多

ORACLE给的建议是: OLTP系统  PGA=(Total Memory)*80%*20%。DSS系统PGA=(Total Memory)*80%*50%。

ORACLE建议一个数据库服务器,分80%的内存给数据库,20%的内存给操作系统,那怎么给一个数据库服务器配内存呢?

SQL> select * from v$pgastat;

NAME                                                                  VALUE UNIT
---------------------------------------------------------------- ---------- ------------
aggregate PGA target parameter                                    104857600 bytes 

-----这个值等于参数PGA_AGGREGATE_TARGET的值,如果此值为0,表示禁用了PGA自动管理。
aggregate PGA auto target                                          75220992 bytes     

-----表示PGA还能提供多少内存给自动运行模式,通常这个值接近pga_aggregate_target-total pga inuse.
global memory bound                                                20971520 bytes

-----工作区执行的最大值,如果这个值小于1M,马上增加PGA大小
total PGA inuse                                                    30167040 bytes

-----当前分配PGA的总大小,这个值有可能大于PGA,如果PGA设置太小.这个值接近select sum(pga_used_mem) from v$process.
total PGA allocated                                                52124672 bytes

-----工作区花费的总大小
maximum PGA allocated                                              67066880 bytes
total freeable PGA memory                                                 0 bytes         ----没有了空闲的PGA
process count                                                            23                    ----当前一个有23个process
max processes count                                                      25 
PGA memory freed back to OS                                               0 bytes
total PGA used for auto workareas                                   8891392 bytes
maximum PGA used for auto workareas                                22263808 bytes
total PGA used for manual workareas                                       0 bytes                  ---为0自动管理
maximum PGA used for manual workareas                                     0 bytes            ---为0自动管理
over allocation count                                                     0        

如果PGA设置太小,导致PGA有时大于PGA_AGGREGATE_TARGET的值,此处为0,说明PGA没有扩展大于TARGET的值,如果此值出现过,那么增加PGA大小。
bytes processed                                                   124434432 bytes
extra bytes read/written                                                  0 bytes
cache hit percentage                                                    100 percent  ---命中率为100%,如果太小增加PGA

recompute count (total)                                                6651

19 rows selected

SQL> select max(pga_used_mem)/1024/1024 M from v$process;   ----当前一个process消耗最大的内存

         M
----------
9.12815189

SQL> select min(pga_used_mem)/1024/1024 M from v$process where pga_used_mem>0; ---process消耗最少内存

         M
----------
0.19186878

SQL> select max(pga_used_mem)/1024/1024 M from v$process ;    ----process曾经消耗的最大内存

         M
----------
9.12815189

SQL> select sum(pga_used_mem)/1024/1024 from v$process;   ----当前process一共消耗的PGA

SUM(PGA_USED_MEM)/1024/1024
---------------------------
           28.8192501068115

如何设置PGA呢?我们可以在压力测试阶段,模拟一下系统的运行,然后运行

select (select sum(pga_used_mem)/1024/1024 from v$process) /(select count(*) from v$process) from dual;得到一个process大约占用了多少的内存,然后估算系统一共会有多少连接,比如一共有500个连接,

那么Sessions=1.1*process +5=500,那么processes=450,再乘以一个process需要消耗的内存,就能大约估算出PGA需要设置多大。

最好将PGA设置的值比计算出的值大一点,PGA值设定好后,就可以根据系统的性质,如果系统为OLTOP,那么总的内存可以设置为PGA/0.16,最后也能估算出SGA的大小,建议还是多配点内存,反正便宜。

下面摘抄eygle的关于一个process能够分配的最大内存(串行操作)的规则:

10gR1之前,对于串行操作(非并行)一个process能够分配的最大的内存为min(5%pga_aggregate_target,100m)

10gR2之后,对于串行操作(非并行)一个process能够分配的最大内存有如下规则:

如果pga_aggregate_target<=500m,那么最大的内存为20%*pga_aggregate_target.

如果500m<pga_aggregate_target<=1000m,那么最大内存为100m.

如果1000m<pga_aggregate_target<=2.5G,那么最大内存为10%*pga_aggregate_target.
如果pga_aggregate_target>2.5G,那么最大内存为2.5G.
SQL> SELECT x.ksppinm NAME, y.ksppstvl VALUE, x.ksppdesc describ
  2  FROM SYS.x$ksppi x, SYS.x$ksppcv y
  3  WHERE x.inst_id = USERENV ('Instance')
  4  AND y.inst_id = USERENV ('Instance')
  5  AND x.indx = y.indx
  6  AND x.ksppinm LIKE '%&par%'
  7  /
NAME                                                                             VALUE                                                                            DESCRIB
-------------------------------------------------------------------------------- -------------------------------------------------------------------------------- --------------------------------------------------------------------------------
_smm_max_size                                                                    20480                                                                            maximum work area size in auto mode (serial)
SQL> show parameter pga
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
pga_aggregate_target                 big integer 100M
此处我的一个process能够分配的最大内存为20M,因为我的PGA=100M,符合上面的规则。
隐含参数_smm_max_size表示一个process能够分配最大的memory.






买了piner的《oracle高可用环境》一书,正好趁这段时间学习一下。
把看到的东西总结一下发表于此,今天先发第一章关于SGA与PGA的内容。
 
以后会陆续将总结在此发表,与大家共享。
 
SGA与PGA的结构如下图:
 
SGA:
查看SGA
Sqlp> show sga
 select * from v$sga;
Total System Global Area  289406976 bytes
Fixed Size                  1248600 bytes
Variable Size             176161448 bytes
Database Buffers          109051904 bytes
Redo Buffers                2945024 bytes
 
Fixed Size:包括了数据库与实例的控制信息、状态信息、字典信息等,启动时就被固定在SGA中,不会改变。
Variable Size:包括了shard poollarge pooljava poolstream pool、游标区和其他结构
Database Buffers:数据库中数据块缓冲的地方,是SGA中最大的地方,决定数据库性能
Redo Buffers:提供REDO缓冲的地方,在OLAP中不需要太大
 
V$sgastat记录了SGA的一些统计信息
V$sga_dynamic_components保存SGA中可以手动调整的区域的一些调整记录
 
Shard pool:
Shard_pool_size决定其大小,10g以后自动管理
Shard_pool中数据字典和控制区结构用户无法直接控制,与用户有关的只有sql缓冲区(library cache)。
将经常访问的过程或包用DBMS_SHARED_POOL.KEEP存储过程将该包pin在共享池中。
手工清除共享池的内容:alter system flush shard_pool;
 
共享池相关的几个常用的视图:
V$sqlarea 记录了所有sql的统计信息,包括执行次数、物理读、逻辑读、耗费时间等
V$sqltext_with_newline 完全显示sql语句,通过hash_value来标示语句,piece排序
V$sql_plan保存了sql的执行计划,通过工具查看
V$shared_pool_advice对共享池的预测,可以做调整SGA的参考
 
Data buffer
 
OLTP系统中要求data buffer 的命中率在95%以上
select sum(pins) "execution",sum(pinhits) "hits",
((sum(pinhits)/sum(pins))*100) "pinhitration",
sum(reloads) "misses",((sum(pins)/(sum(pins)
+sum(reloads)))*100) "relhitratio"
from V$librarycache
 
PINS
NUMBER
Number of times a PIN was requested for objects of this namespace
PINHITS
NUMBER
Number of times all of the metadata pieces of the library object were found in memory
RELOADS
NUMBER
Any PIN of an object that is not the first PIN performed since the object handle was created, and which requires loading the object from disk
 
Oracle把从data buffer中获得的数据库叫cache hit,把从磁盘获得的脚cache miss
数据缓冲区中的数据块通过脏列表(dirty list)和LRU列表(LRU list)来管理。
 
Data buffer可细分为:default poolkeep poolrecycle pool对应的参数为db_cache_size db_keep_cache_size db_recycle_size分别表示缓冲区大小
 
9i开始oracle支持不同块大小的表空间,相应的可以为不同块大小的表空间指定不同块大小的数据缓冲区,不同块大小的数据缓冲区可以用相应的db_nk_cache_size来指定,其中n可以是2461632
 
V$db_cache_advice 对数据缓冲区的预测,可以做调整data buffer的参考
 
V$bhx$bh记录了数据块在data buffer中缓冲的情况,通过这个视图可以找系统中的热点块。通过下面语句找系统中top 10 热点快所在的热点对象:
 
Select /*+ rule*/ owner,object_name from dba_objects
Where data_object_id in
   (select obj from
   (select obj from x$bh order by tch desc)
   Where rownum<11);
 
PGA
用来保存于用户进程相关的内存段。
9i开始使用PGA自动管理,pga_aggregate_target参数指定session一共使用的最大PGA内存的上限。Workarea_size_policy参数用于开关PGA内存自动管理功能,auto/manual
 
OLTP环境中,自动PGA管理只要设置到一定的值,如2G左右就能满足系统的要求。
 
自动内存管理:
9i开始,sga_max_size参数设置SGA的内存大小,不能动态修改
 
10g开始,指定了sga_target参数后,所有的SGA组件如:shared pool data buffer large pool都不用手工指定了,Oracle会自动管理。这一特性就是自动共享内存管理ASMM。如果设置了sga_target=0,就自动关闭自动共享内存管理功能。Sga_target大小不能超过sga_max_size的大小。
手动管理SGA
Alter system set sga_target=2000m;
Alter system set db_cache_size=1000m;
Alter system set shared_pool=200m;
Alter system set sga_target=0---------关闭自动共享内存管理ASMM
 
11G以后sga+pga整个内存可以自动管理AMM,相关参数memory_max_target  memory_target.设置好这两个参数后就不用关心SGAPGA
11g手动内存管理:
Alter system set memory_target=3000m;
Alter system set sga_target=2000m;
Alter system set pga_aggregate_target=1000m;
Alter system set memory_target=0;---------关闭自动内存管理AMM
 
SGA+PGA最好不要超过总内存的70%

 

分享到:
评论

相关推荐

    ADS1256.pdf

    ADS1256提供了强大的自校准和系统校准功能,可以确保在各种PGA设定下仍然维持极高的精度。 6. 接口: 该芯片提供与SPI兼容的串行接口,方便与各种数字系统进行数据交换。 ADS1256的这些特点使它成为高精度测量...

    PGA.rar_PGA_c语言pga

    5. **PGA操作**:PGA的增益通常通过写入特定的控制寄存器来设定。增益选择可能是一个二进制码或预定义的增益值,需要根据数据手册来确定正确的配置方式。 6. **错误处理和中断服务**:在PGA编程中,可能会遇到如...

    PGA2310 mcusch

    1. **数字控制接口**:MCU通过串行或并行接口向PGA2310发送指令,设定增益值。这可能包括SPI(Serial Peripheral Interface)、I²C(Inter-Integrated Circuit)或者定制的通信协议。在MCUSCH.pdf的电路图中,可以...

    PGA309中文寄存器资料

    寄存器2则控制增益DAC,允许用户设定所需的增益值,以优化信号的放大效果。寄存器3包含基准控制和线性化设置,它涉及到内部基准电压的选择,VEXC的使能与否,以及线性化DAC的配置,后者用于进一步减少非线性误差。 ...

    可编程放大器PGA2311

    2. **设置增益**:通过MCU向PGA2311发送指令,设定左右通道的增益值。 3. **输入信号**:通过MCU控制信号源,将正弦和直流信号送入PGA2311的输入端。 4. **读取输出**:监测PGA2311的输出,根据实际情况调整增益或...

    pga2311程序

    3. **增益设置**:PGA2311的核心功能是提供可编程增益,程序需要根据需求设定合适的增益值,并确保其在芯片允许的范围内。 4. **状态读取**:程序可能需要读取PGA2311的状态信息,例如当前增益、故障状态等,以便...

    程控测量放大器pga电路图分析

    而PGA通过数字编码的方式可以快速且准确地设定增益,使得放大器能够自动适应被测量信号的变化。 在PGA电路中,增益选择开关是关键组成部分。如在描述中提到的Sl—S'l,S2—S'2,S3—S'3等开关,它们成对动作,确保...

    pga_uga.zip_PGA_memory

    - **合理设定PGA目标大小**:通过`pga_aggregate_target`初始化参数,可以全局控制PGA的总内存使用。根据系统负载和应用特性,设置合适的值能有效平衡性能和资源使用。 - **监控和调整UGA**:虽然UGA大小通常由...

    ORACLE进阶操作技巧

    根据以上提到的SGA和PGA设定公式,可以将SGA设置为5GB,PGA设置为700MB,同时设置PROCESSES为1000。 - **字符集设置**:对于Windows平台下的Oracle安装,默认字符集即可满足需求。而在UNIX系统环境下,则需要手动...

    PGA私密文件管理系统

    权限管理也是一个重要的特性,用户可以设定不同级别的访问权限,限制特定用户对文件的访问、修改或删除。 为了进一步增强安全性,PGA私密文件管理系统可能采用了多层防护策略。除了加密之外,可能还有防火墙保护、...

    oracle实例的内存(SGA和PGA)进行调整,优化数据库性

    - 动态调整此参数,依据Oracle实例可利用内存总量来设定。在OLTP系统中,通常建议PGA占比不超过总SGA内存的20%;而在DSS系统中,PGA的需求可能更高,应根据实际负载进行调整。 #### 三、综合考虑与实践 在调整SGA...

    音频控制芯片PGA2311的音频增益自动控制

    ### 音频控制芯片PGA2311的音频增益自动控制 #### 引言 在现代生活与工作中,音频设备已经成为不可或缺的一部分。然而,在实际使用过程中,由于各种因素(如频道切换、广告插入等)会导致音量变化,严重影响用户...

    PGA2310单片机控制程序

    con_PGA可能是PGA2310的配置文件,或者与单片机通信的接口代码,用于设定和读取PGA2310的增益值。 综合以上信息,这个项目的核心知识点包括: 1. PGA2310的使用:了解其特性,如增益范围、噪声性能和电源电压等。 2...

    TI-PGA203.pdf

    在远程仪器设备和测试设备中,它们的远程操作能力和稳定的增益设定,为远程测量和控制提供了可靠解决方案。 总的来说,PGA202和PGA203是面向精确、灵活和成本效益高的信号调理应用的理想选择。它们结合了数字控制的...

    使用 MCP6SX2 PGA 的热敏电阻温度检测

    本应用笔记将讨论温度测量的两种设计,设计均使 用精密的、负温度系数(Negative Temperature Coefficient,...输入数字式地设定最恰当的增益。这将降低设计的总体复 杂度,使得对其他传感器所测温度进行校正成为可能。

    PGA205AP的技术参数

    5. **增益误差**:增益误差是输出信号的实际增益与设定增益之间的差异。PGA205AP的最大增益误差为±0.020%,这表示在全增益范围内,放大器的实际增益与期望增益的偏差非常小,确保了高精度的信号放大。 6. **共模...

    为ADC添加一个带噪声滤波器的数控PGA.pdf

    VCOM信号用于设定积分电路的零电位,通常设为VREF/2。 工作原理上,选择R和C的值需考虑采样速率、最大期望增益和A/D转换时间。积分电路需要在不超出积分阶段的时间内达到所需的增益。开关的关闭时间和电容器的容差...

Global site tag (gtag.js) - Google Analytics