oracle 10g rac之间的GES锁如何产生以及怎样减少或者避免? 谢谢!!!

解决方案 »

  1.   

    以前看过,但是没有详细研究,以下是g到的一个GES的描述。参考一下吧,全局队列服务(GES):主要负责维护字典缓存和库缓存内的一致性。字典缓存是实例的SGA内所存储的对数据字典信息的缓存,用于高速访问。由于该字典信息存储在内存中,因而在某个节点上对字典进行的修改(如DDL)必须立即被传播至所有节点上的字典缓存。GES负责处理上述情况,并消除实例间出现的差异。处于同样的原因,为了分析影响这些对象的SQL语句,数据库内对象上的库缓存锁会被去掉。这些锁必须在实例间进行维护,而全局队列服务必须确保请求访问相同对象的多个实例间不会出现死锁。LMON、LCK和LMD进程联合工作来实现全局队列服务的功能。GES是除了数据块本身的维护和管理(由GCS完成)之外,在RAC环境中调节节点间其他资源的重要服务。 
      

  2.   

    GES是比较广,其属于oracle内核中的ges 层.
    包括了 GES resources, GES enqueues, GES message buffers and the GES resource hash table.
    对于ges enqueue主要与process ,session有关系.
    你可以通过V$RESOURCE_LIMIT 来进行监控.这里主要是会涉及到shared_pool这个内存区.当ges需要时,会动态从shared_pool中申请内存,这样从而会加深sp的竞争.使用绑定变量 是有必要的,另外,就是给gess  lock进行预分配可以减小ges euqnene的程度.