Introduction
When you work with Oracle RAC, one of the most important yet often misunderstood components is the Global Resource Directory (GRD).
If you’ve ever wondered:
- How RAC tracks block ownership across instances
- How locks are coordinated across nodes
- How Oracle ensures data consistency in a cluster
👉 The answer is Global Resource Directory (GRD).
In this guide, we’ll break down Global Resource Directory in a simple, real-world way so you can clearly understand how it works in both Oracle RAC and ASM environments.
What is Global Resource Directory (GRD)?
The Global Resource Directory (GRD) is a distributed internal memory structure used by Oracle RAC to manage and track all shared resources in a cluster.
It acts like a cluster-wide index or directory that keeps track of:
- Which instance owns a data block
- Which instances have copies of a block
- Which instance holds locks
- Which instance is the master for a resource
👉 In simple terms:
Global Resource Directory = The brain of RAC coordination
Why Global Resource Directory is Needed
In a single-instance database, one instance manages everything.
But in RAC:
👉 Multiple instances access the same database files at the same time
Without Global Resource Directory, you would face:
❌ Data corruption
❌ Lock conflicts
❌ Inconsistent reads
❌ Performance issues
GRD solves all of this by acting as the central coordination layer across nodes.
How Global Resource Directory is Structured
The Global Resource Directory is not stored in one place.
It is:
✔ Distributed across all RAC instances
✔ Stored in SGA memory of each instance
✔ Managed dynamically by Oracle
Each instance maintains a portion of the GRD.
This makes it:
- Highly available
- Scalable
- Fault-tolerant
Types of Resources Managed by GRD
GRD tracks different types of resources:
1️⃣ Cache Resources
These are data blocks in memory managed by the Global Cache Service (GCS)
2️⃣ Enqueue Resources
These are locks managed by the Global Enqueue Service (GES)
3️⃣ ASM Resources
In ASM clusters, GRD tracks:
- Disk group metadata
- Extent ownership
- Allocation maps
🔄 Master and Shadow Resources in GRD
Each resource in the Global Resource Directory has:
- One MASTER copy
- Multiple SHADOW copies
Example
Block: EMP_DATA_BLOCKMaster → Instance 2
Shadow → Instance 1, Instance 3
Why this design?
✔ Fast lookup
✔ Reduced communication overhead
✔ High availability
If the master instance fails, another instance can quickly take over.
How GRD Works with GES and GCS
The Global Resource Directory works together with:
- GES (Global Enqueue Service) → handles locks
- GCS (Global Cache Service) → handles data blocks
Workflow Example
- Instance 1 modifies a data block
- GRD updates ownership info
- Instance 2 requests same block
- GRD tells where the block is
- GCS transfers the block
👉 GRD is the map, GCS is the transport, and GES is the security system
GRD in Oracle ASM
Many DBAs think GRD is only for RAC databases.
But Global Resource Directory is also used in ASM clusters.
In ASM, GRD manages:
- Disk group metadata locks
- Extent allocation
- Disk rebalancing coordination
- ADVM and ACFS metadata
This ensures:
✔ Consistent storage view
✔ Safe disk operations
✔ Balanced I/O distribution
What Happens When GRD is Not Optimized?
When GRD coordination becomes heavy, you will see performance issues like:
gc cr requestgc current block busyges resource busyenq: TX - row lock contention
These indicate:
👉 Excessive inter-instance communication
👉 Poor cache locality
👉 Lock contention
Best Practices to Optimize Global Resource Directory Usage
Here are practical DBA tips to reduce GRD overhead:
✔ Use Service-Based Workload Routing
Keep sessions connected to the same instance
✔ Partition Hot Tables
Reduce cross-instance block access
✔ Increase Sequence Cache
Reduce SQ enqueue contention
✔ Use NOORDER sequences in RAC
Avoid global synchronization overhead
✔ Keep related transactions on same node
Improves cache locality
Real-Life Example
Let’s say your application:
- Updates the same table from multiple nodes
- Uses ordered sequences
- Has small cache size
This will cause:
❌ High GRD activity
❌ High interconnect traffic
❌ Performance degradation
After tuning:
✔ Larger cache
✔ NOORDER sequence
✔ Service affinity
👉 GRD overhead reduces dramatically
How to Monitor GRD Activity
DBAs can monitor Global Resource Directory activity using views like:
GV$GES_RESOURCEGV$GCSPFMASTER_INFOGV$GCSCRMASTER_INFOGV$SESSION_WAIT
These views help identify:
- Resource masters
- Block ownership
- Lock contention
Easy Way to Remember GRD
Here’s a simple memory trick:
GRD = Directory of all RAC resources
It answers questions like:
- Who owns the block?
- Who holds the lock?
- Where is the resource?
Conclusion
The Global Resource Directory is one of the most important internal components of Oracle RAC and ASM.
It ensures:
✔ Data consistency across nodes
✔ Proper lock coordination
✔ Efficient block transfer
✔ High availability
Without the Global Resource Directory, Oracle RAC simply cannot function.
Understanding GRD helps you:
- Troubleshoot RAC issues faster
- Optimize performance
- Design scalable RAC architectures




