Win 2008中的Oracle 11g内存泄漏?

den*_*isb 0 oracle memory-leaks oracle10g oracle11g

因此,我们有一个运行Win 2008 R2服务器的Oracle 11g实例.虽然我知道甲骨文和微软的关系可能并不太好,但它已经到了甲骨文大约50%的内存消耗,并且永远不会释放它的情况,所以我不时会将服务退回到冲洗它.我一直试图找到是否有一种替代方法可以在不必反弹服务的情况下以某种方式释放这种记忆,但到目前为止还没有运气.

有没有其他人遇到过这种情况,并找到了通过其他手段冲洗内存的方法?任何输入将不胜感激!

以下是此实例上spfile/parameters的当前分配...如果您有基于可用内存的任何建议设置,请告诉我您需要的内容,我可以提供其他信息.非常感谢您对此的意见.

archive_lag_target                   integer  0
db_flashback_retention_target        integer  1440
fast_start_io_target                 integer  0
fast_start_mttr_target               integer  0
memory_max_target                    integer  10368319488
memory_target                        integer  10368319488
parallel_servers_target              integer  64
pga_aggregate_target                 integer  0
sga_target                           integer  0
Run Code Online (Sandbox Code Playgroud)

Jus*_*ave 10

您确定这是泄漏而不是SGA Oracle配置使用吗?

通常,无论平台如何,Oracle都会在启动时为SGA(系统全局区域)分配大量内存.这就是数据库用于缓存RAM中的块,缓存SQL语句等的内容.每次创建会话时,Oracle都会为该会话的PGA(程序全局区域)分配更小的内存块.对于诸如排序和散列之类的事情的记忆会随着会话的需要而增长和缩小.配置Oracle将半机器的物理RAM用作SGA并将15-20%的物理RAM用于总PGA并留下其余部分用于操作系统和其他应用程序并不罕见.您应该能够调低内存使用率,但这可能会导致性能问题,因为更多I/O需要物理读取而不是从缓存中满足.

您的配置设置指示Oracle在SGA和PGA之间使用高达9.65 GB的RAM,并根据需要分配该内存.期望Oracle在启动时为SGA获取6或7 GB的RAM并保持永久分配RAM是完全合理的.在负载下,Oracle可能会在共享SGA和会话级PGA之间分配9.65 GB的RAM.那是你看到的行为吗?如果是这样,听起来Oracle表现得像预期的那样,没有内存泄漏,并且不需要重新启动服务.

  • SGA应该在启动时"抓住".PGA将在需要时被一个进程抓取.该进程可能会释放它,或者它可能会保留它直到进程终止(例如会话注销).如果您的应用使用连接池,并且未结束其会话,则可能会产生此效果. (2认同)