在操作系统命令行上用 TOP来看,可以看到这几个oracle进程占用了很多的虚拟内存
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
4883 oracle 15 0 3229m 200m 196m S 1 2.5 0:14.92 oracle
4711 oracle 16 0 3227m 94m 92m S 0 1.2 2:51.46 oracle
16481 oracle 15 0 3228m 123m 120m S 0 1.5 0:12.30 oracle
13324 oracle 16 0 3229m 91m 82m S 0 1.2 0:00.22 oracle PGA设置成了1G
SQL> show parameter pgaNAME TYPE VALUE
------------------------------------ ----------- ------------------------------
pga_aggregate_target big integer 1022236K
从这个PGA大小建议来看,PGA只要设置为当前值的一半就够了
SQL>select PGA_TARGET_FOR_ESTIMATE,PGA_TARGET_FACTOR, ESTD_PGA_CACHE_HIT_PERCENTAGE,ESTD_OVERALLOC_COUNT from V$PGA_TARGET_ADVICE;
PGA_TARGET_FOR_ESTIMATE PGA_TARGET_FACTOR ESTD_PGA_CACHE_HIT_PERCENTAGE ESTD_OVERALLOC_COUNT
-------------------------- -------------------- -------------------------------- -----------------------
130845696 0.125 89 1502
261692416 0.25 94 681
523384832 0.5 100 0
785077248 0.75 100 0
1046769664 1 100 0
1256123392 1.2 100 0
1465477120 1.4 100 0
1674830848 1.6 100 0
1884184576 1.8 100 0
2093539328 2 100 0
3140308992 3 100 0
4187078656 4 100 0
6280617984 6 100 0
8374157312 8 100 0 我的疑问是:
服务器进程占用的内存跟PGA是密切相关的,当PGA中没有足够的内存的时候,就使用到了页的换入换出,也就出现了虚拟内存。我奇怪的是,既然TOP中显示出这些服务器进程由于内存不够用,以至于占用了大量的虚拟内存,那么为什么PGA的建议中却又表示只要一半PGA就够了呢?
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
4883 oracle 15 0 3229m 200m 196m S 1 2.5 0:14.92 oracle
4711 oracle 16 0 3227m 94m 92m S 0 1.2 2:51.46 oracle
16481 oracle 15 0 3228m 123m 120m S 0 1.5 0:12.30 oracle
13324 oracle 16 0 3229m 91m 82m S 0 1.2 0:00.22 oracle PGA设置成了1G
SQL> show parameter pgaNAME TYPE VALUE
------------------------------------ ----------- ------------------------------
pga_aggregate_target big integer 1022236K
从这个PGA大小建议来看,PGA只要设置为当前值的一半就够了
SQL>select PGA_TARGET_FOR_ESTIMATE,PGA_TARGET_FACTOR, ESTD_PGA_CACHE_HIT_PERCENTAGE,ESTD_OVERALLOC_COUNT from V$PGA_TARGET_ADVICE;
PGA_TARGET_FOR_ESTIMATE PGA_TARGET_FACTOR ESTD_PGA_CACHE_HIT_PERCENTAGE ESTD_OVERALLOC_COUNT
-------------------------- -------------------- -------------------------------- -----------------------
130845696 0.125 89 1502
261692416 0.25 94 681
523384832 0.5 100 0
785077248 0.75 100 0
1046769664 1 100 0
1256123392 1.2 100 0
1465477120 1.4 100 0
1674830848 1.6 100 0
1884184576 1.8 100 0
2093539328 2 100 0
3140308992 3 100 0
4187078656 4 100 0
6280617984 6 100 0
8374157312 8 100 0 我的疑问是:
服务器进程占用的内存跟PGA是密切相关的,当PGA中没有足够的内存的时候,就使用到了页的换入换出,也就出现了虚拟内存。我奇怪的是,既然TOP中显示出这些服务器进程由于内存不够用,以至于占用了大量的虚拟内存,那么为什么PGA的建议中却又表示只要一半PGA就够了呢?
解决方案 »
- ORACLE数据库中sqlldr.exe 工具可以提取出来独立使用么?把与之关联的DLL等文件提取出来,该怎么做?
- 一个 orecal 语句
- 什么是带符号的整数?(分有点低,但是问题也简单,谢谢)
- Oracle多张表整成一张表
- ora-12154 TNS 无法解析指定的表示符
- frm-41045
- Oracle 怎么才能不区分大小写
- 用过sql developer进来看看
- 我要写一个 存储过程 把应用程序运行情况写进日志文件里.请问我该怎么得到这个路径???
- Oracle sql语句写的对吗?求大神鉴定
- 小白:请教一个查询的问题,高手指点!
- level和connect by level的用法区别
具体还得看你那个进程对应到底在干吗。
光看以上的应该无法解释。
PGA是全局的考虑了整个数据库的统计数据的,不会因为几个SQL就要求你调大调小。
备注:这几个环境对应的应用是不一样的,所以不能一概认为是应用的问题。
大家可以在自己的环境中执行top看看,是否也能看到这样的现象。