为什么在Windows默认安装上的Oracle 11g即使闲置也会增加内存使用量?

我在我的Windows XP 64位桌面上安装了Oracle 11g,几乎使用了默认选项。 现在,当我启动数据库时,即使数据库不在使用中,也会一次增加几百KB的内存使用量。 目前我正在看Windows任务pipe理器,它显示使用超过1.4 G的oracle.exe和计数。

发生了什么? 如何设置内存使用的最大限制?

这是一个开发者机器,在大多数情况下数据库不会很大。 即使他们是巨大的,并发用户的数量也会很less。

你的memory_target设置为什么? 如果设置的很高,那么随着时间的推移,我不会感到惊讶。 在这里看看有关11g中新的memory_target参数的更多信息。 这将会限制Oracle试图获得多less内存。

memory_target参数将Oracleconfiguration为自行pipe理以前需要单独关注的内存参数:

  • DB_CACHE_SIZE
  • SHARED_POOL_SIZE
  • LARGE_POOL_SIZE
  • JAVA_POOL_SIZE
  • PGA_AGGREGATE_TARGET

需要注意的是STATISTICS_LEVEL必须设置为TYPICAL。

实际上有两个参数:memory_max_target和memory_target。 第一个设置memory_target的最大值,并要求重新启动一个实例:

ALTER SYSTEM SET memory_max_target = 1500M SCOPE=SPFILE; 

一旦到位,memory_target参数可以dynamic设置,无需重新启动实例:

 ALTER SYSTEM SET memory_target = 1000M; 

对于那些想要一个基本的“设置并忘记”内存pipe理设置的人来说,这是一个非常好的function。 设置你认为你需要memory_max_target的最高值,然后使用memory_target的值来调整你的需要。 让Oraclepipe理各个参数。 Oracle将使用实例统计信息来pipe理这些值,因此,当您的实例在使用模式方面发生变化时,Oracle会考虑到这一点。

关于这些参数的另一个很好的参考可以在Oracle常见问题的Oracle Wiki中find 。