因此,我们有一个运行在Win 2008 R2服务器上的Oracle11g实例。尽管我知道甲骨文和微软可能不会相处得太好,但甲骨文已经达到了这样的地步:甲骨文吃掉了机器上大约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发布于 2011-03-23 22:06:14
是否确定这是泄漏,而不是Oracle配置为使用的SGA?
通常,无论平台如何,Oracle都会在启动时为SGA (系统全局区)分配一大块内存。这是数据库用于在RAM中缓存块、缓存SQL语句等操作。每次创建会话时,Oracle都会为该会话的PGA (程序全局区)分配小得多的内存块。这是像排序和散列这样的东西的内存,这些东西会随着会话的需要而增长和缩小。将Oracle配置为使用半台机器的物理RAM作为SGA,将物理RAM的15%-20%用于PGA,将剩余部分用于操作系统和其他应用程序,这并不少见。您应该能够降低内存使用率,但这可能会导致性能问题,因为更多的I/O需要物理读取,而不是从缓存中获得满足。
您的配置设置指示Oracle在SGA和PGA之间使用最多9.65 GB的RAM,并按其认为合适的方式分配内存。完全有理由期望Oracle在SGA启动时获取6 GB或7 GB的RAM,并永久分配这些RAM。在负载下,Oracle可能在共享SGA和会话级PGA之间分配了大约9.65 GB的RAM。这就是你看到的行为吗?如果是这样的话,听起来Oracle的行为符合预期,没有内存泄漏,并且不需要重新启动服务。
https://stackoverflow.com/questions/5406129
复制相似问题