代码之家  ›  专栏  ›  技术社区  ›  Simon Gibbs

什么是Oracle KGL模拟器?

  •  0
  • Simon Gibbs  · 技术社区  · 18 年前

    什么是KGL模拟器?应用程序开发人员如何管理它的内存利用率?

    ORA-04031:无法分配4032字节的共享内存(“共享池”、“从>视图$where中选择文本…”、“sga堆(3,0)”、“kglsim堆”)

    2 回复  |  直到 18 年前
        1
  •  3
  •   Tanel Poder Tanel Poder    17 年前

    KGL=内核通用库缓存管理器,顾名思义,它处理库对象,如游标、缓存的存储对象定义(PL/SQL存储过程、表定义等)。

    加载库缓存对象时(这意味着库缓存中不存在此类对象),Oracle会检查KGL模拟器哈希表,以查看是否存在具有匹配哈希值的对象。如果找到一个匹配的对象,这意味着所需的对象过去一直在缓存中,但由于空间压力而被清除。

    使用缓存较大时可以避免多少库缓存对象(re)加载的信息(多亏了KGL模拟器历史记录),并知道对象重新加载所花费的时间,Oracle可以预测如果共享池较大,在实例范围内可以节省多少响应时间。这可以从v$library\u cache\u建议中看到。

    v$sgastat将是解决ORA-4031错误的第一点,您需要确定共享池中有多少可用内存(以及谁在使用大部分内存)。

    -- 塔内尔波德 http://blog.tanelpoder.com

        2
  •  1
  •   Dave Costa    18 年前

    我发现KGL代表“内核泛型库”。