This discussion is archived
8 Replies Latest reply: Oct 30, 2012 10:23 PM by BillyVerreynne RSS

It's possible to disable global cache in rac?

user258571 Newbie
Currently Being Moderated
Hi,
i'm in 11.2 rac database.
I've a batch the run only on node 1.
It's possible to disable gc events? I no need that blocks are passed to other istances.

Thanks
  • 1. Re: It's possible to disable global cache in rac?
    Aman.... Oracle ACE
    Currently Being Moderated
    842366 wrote:
    Hi,
    i'm in 11.2 rac database.
    I've a batch the run only on node 1.
    It's possible to disable gc events? I no need that blocks are passed to other istances.
    There is no way , at least in my knowledge to do so. What you can do is that using Service defined on the Node 1 only, you can let your code be running on that node only.

    Aman....
  • 2. Re: It's possible to disable global cache in rac?
    user258571 Newbie
    Currently Being Moderated
    Hi,
    thank you.
    I think that if i use a service, blocks are also shared.
  • 3. Re: It's possible to disable global cache in rac?
    Levi-Pereira Guru
    Currently Being Moderated
    842366 wrote:
    Hi,
    i'm in 11.2 rac database.
    I've a batch the run only on node 1.
    It's possible to disable gc events? I no need that blocks are passed to other istances.
    What makes possible the database cluster is the Global Cache that implement Cache Fusion, so the GC is the foundation of the RAC architecture. The whole thing depend on it.

    Is it possible disable interconnect and keep cluster nodes/instances active? The answer to this question you can use to your question.

    Now the question: Why you think about disable GC event? What is the reason behind this?
    I have pretty sure that if you don't need blocks be transferred from a instance to another, this will not happen, unless if you request it.
    Keep mind as this is a clustered instance all member of cluster must to know where each block is.

    There are tons of other features (such as Resource Manager with Services) to accommodate batch processes in RAC environments without causing major impacts, keeping your environment healthy.


    In an Oracle RAC environment, Oracle Database Resource Manager manages each database instance independently. Each member instance can be assigned different resource plans to tailor them to support different workloads. For example, in a two-node cluster, one instance can use a resource plan that allocates most of its resources to online users, while the other instance can use a different plan allocating most of its resources to batch operations. This allows different applications or users to use the same database without impacting each other.

    Resource allocation methods determine what method or policy Oracle Database Resource Manager uses when allocating a particular resource. Oracle Database Resource Manager provides several policies for allocating resources among resource consumer groups. These capabilities allow administrators to proactively limit the resources consumed by different database operations preventing them from negatively impacting other users.

    I believe this is the way to go ....

    Regards,
    Levi Pereira
  • 4. Re: It's possible to disable global cache in rac?
    user12288492 Newbie
    Currently Being Moderated
    If you want to disable movement of blocks from one instance to another, you can use application partitioning i.e. access the blocks from only one instance. If no other instance requests those blocks, blocks won't be moved across instances.
  • 5. Re: It's possible to disable global cache in rac?
    BillyVerreynne Oracle ACE
    Currently Being Moderated
    842366 wrote:

    i'm in 11.2 rac database.
    I've a batch the run only on node 1.
    It's possible to disable gc events? I no need that blocks are passed to other istances.
    If the job runs on a single node - why would data blocks read and written by that job be needed on another node?
  • 6. Re: It's possible to disable global cache in rac?
    user12288492 Newbie
    Currently Being Moderated
    The job runs on one node. That's fine but the blocks accessed by the job might be needed by other nodes also. In that case blocks will move across various nodes.
  • 7. Re: It's possible to disable global cache in rac?
    Levi-Pereira Guru
    Currently Being Moderated
    user12288492 wrote:
    If you want to disable movement of blocks from one instance to another, you can use application partitioning i.e. access the blocks from only one instance. If no other instance requests those blocks, blocks won't be moved across instances.
    Please, does not exist this: +"disable movement of blocks from one instance to another"+

    Concept number 1 on RAC env:

    To ensure that each Oracle RAC database instance obtains the block that it requires to satisfy a query or transaction, Oracle RAC instances use two processes, the Global Cache Service (GCS) and the Global Enqueue Service (GES). The GCS and GES maintain records of the statuses of each data file and each cached block using a Global Resource Directory (GRD). The GRD contents are distributed across all of the active instances, which effectively increases the size of the SGA for an Oracle RAC instance.

    After one instance caches data, any other instance within the same cluster database can acquire a block image from another instance in the same database faster than by reading the block from disk. Therefore, Cache Fusion moves current blocks between instances rather than re-reading the blocks from disk. When a consistent block is needed or a changed block is required on another instance, Cache Fusion transfers the block image directly between the affected instances. Oracle RAC uses the private interconnect for interinstance communication and block transfers. The GES Monitor and the Instance Enqueue Process manage access to Cache Fusion resources and enqueue recovery processing.

    It is not possible to ensure that particular blocks will be only on specific nodes, except if you have only one instance active. The blocks will be COPIED (not moved) from one node to another as they are requested.
    There is no way to control this ... as far as I know.


    If someone is having problems with GC events, you should analyze and use the "My Oracle Support" to solve your issue. Please don't think something like disabling the GC, because this is madness.
  • 8. Re: It's possible to disable global cache in rac?
    BillyVerreynne Oracle ACE
    Currently Being Moderated
    user12288492 wrote:
    The job runs on one node. That's fine but the blocks accessed by the job might be needed by other nodes also. In that case blocks will move across various nodes.
    And the skies might fall and we will then all wear blue hats. ;-)

    Yes, blocks are read and written across the Interconnect - as it is faster than the node going to the shared storage layer to read that block. Yes, contention for the same block from different processes can be a performance issue.

    Moving such contention from the Interconnect to the local db buffer cache, does not eliminate the contention. It is still there. It is still an issue. So why then focus on the Interconnect and cache fusion as the problem?

    If you do have performance issue with blocks being shipped across the Interconnect, then that can be simplified to one of two basic issues.

    You have a poorly designed and implemented application that causes contention from different Oracle sessions and processes for the same block.

    You have a poor Interconnect architecture (typically something like a 1Gb GigEthernet as Interconnect).

    The global cache of a RAC is critically important - and not an inherent problem as it seems you believe it to be. It works brilliantly well - doing the job that it is designed to do. But that requires it to run over a proper Interconnect architecture (like QDR Infiniband) servicing well designed and behaved applications.

Legend

  • Correct Answers - 10 points
  • Helpful Answers - 5 points