Oracle: 1个用户连接在服务器上,占用多少内存?如何调整?

来源:互联网 发布:手机淘宝联盟没有鹊桥 编辑:程序博客网 时间:2024/05/16 16:58

        客户端通过和服务器创建一下个连接后,才能连接到服务器,此时,服务器需要分配一定的资源给用户连接,也就是PGA.那么,Oracle是如何管理PGA的呢?一个PGA到底需要服务器分配多少资源呢?如何调节这种分配呢?

         PGA是服务器分配的用来管理所有用户连接的资源的总和.当有用户连接服务器时,Oracle从PGA中分配一定内存,组成UGA,也就是一个连接对应一个UGA,

SQL> select * from v$version;

BANNER
----------------------------------------------------------------
Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production
PL/SQL Release 9.2.0.1.0 - Production
CORE 9.2.0.1.0 Production
TNS for 32-bit Windows: Version 9.2.0.1.0 - Production
NLSRTL Version 9.2.0.1.0 - Production

PGA大小:

SQL> show parameter pga

NAME TYPE VALUE
------------------------------------ ----------- ----------------------
pga_aggregate_target big integer 16777216

所有的session使用的pga总和由两个参数决定

一个是pga_aggregate_target ,另一个是:

SQL>show parameter workare

NAME TYPE VALUE
------------------------------------ ----------- ----------------
workarea_size_policy string AUTO

当前session使用的pga和uga:

SQL> select a.name,b.value/1024/1024 value
2 from v$statname a,v$mystat b
3 where a.statistic# = b.statistic#
4* and a.name like '%ga memory%';

NAME VALUE
---------------------------------------------------------------- ----------
session uga memory .073394775
session uga memory max .135826111
session pga memory .194011688
session pga memory max .256511688

如果workarea_size_policy 为 AUTO, sort area将失去意义.

在这个参数出现之前,DBA要调整参数SORT_AREA_SIZE、 HASH_AREA_SIZE,、BITMAP_MERGE_AREA_SIZE 和CREATE_BITMAP_AREA_SIZE,使性能和PGA内存消耗最佳。对这些参数的调整是非常麻烦的,因为即要考虑所有相关的操作,使工作区适合它们输入数据大小,又要使PGA内存不消耗过大导致系统整体性能下降。

9i以后,通过设置了参数PGA_AGGREGATE_TARGET,使所有会话的工作区的大小都是自动分配。同时,所有*_AREA_SIZE参数都会失效。在任何时候,实例中可用于工作区的PGA内存总数都是基于参数PGA_AGGREGATE_TARGET的。工作区内存总数等于参数PGA_AGGREGATE_TARGET的值减去系统其他组件(如分配给会话的PGA内存)的内存消耗。分配给Oracle进程的PGA内存大小是根据它们对内存的需求情况来的。

原创粉丝点击