Skip to content

Oracle RAC Administration Guide — Scripts & Monitoring for Real Application Clusters

Essential scripts and monitoring practices for Oracle Real Application Clusters (RAC) environments. RAC scripts use GV$ (Global V$) views to query across all instances.


ScriptPurpose
gvinst.sqlRAC instance status across all nodes
db.sqlDatabase overview and status
health.sqlComprehensive health check suite
ScriptPurpose
gvsess.sqlActive sessions across all RAC instances
gvsessa.sqlActive sessions with SQL and wait events
gvsessab.sqlSession activity analysis
gvsessactive.sqlSession count summary by machine and user
gvsessw.sqlCurrent session waits excluding idle events
gvuserall.sqlAll user sessions across instances
ScriptPurpose
pgmcnt.sqlProgram connection count
pgmcnts.sqlProgram count by instance
pgmcntu.sqlProgram count by username
pgmcntm.sqlProgram count by module

ScriptPurpose
gvcpu.sqlCPU usage across all RAC instances
gvio.sqlI/O statistics across RAC nodes
gvlatch.sqlLatch statistics across instances
gvbp.sqlBuffer pool statistics per instance
gvpga.sqlPGA memory across all instances
SGAComponentsRAC.sqlSGA component sizes per instance

Key wait events in RAC environments:

Wait EventDescriptionInvestigation
gc buffer busy acquireBlock transfer between instancesCheck global cache transfer rates
gc buffer busy releaseWaiting for block transfer to completeCheck interconnect bandwidth
gc cr/current block busyRemote instance holding blockReduce cross-instance block requests
gc cr/current grant 2-wayBlock grant from remote instanceNormal RAC overhead

Scripts for interconnect analysis:

ScriptPurpose
gvsqltop.sqlTop SQL statements across all instances
gvsqltopunb.sqlTop unbound SQL statements
gvsqlplanfind.sqlSQL plan finder across instances
gvplanid.sqlExecution plan analysis
gvbindcap.sqlBind variable capture

Locks in RAC span all instances, making diagnosis more complex.

ScriptPurpose
gvlock.sqlLock analysis across all RAC instances
gvlockb.sqlBlocking locks across instances
vlockobj.sqlLocked objects identification
vlockb2.sqlBlocking and waiting locks
gvtrans.sqlTransaction analysis across nodes

Key considerations:

  • A session on Instance 1 can block a session on Instance 2
  • Use gvlock.sql instead of vlock.sql to see the full picture
  • Include INST_ID in lock queries to identify which node holds locks

Related errors:


This script collects:

  • Instance status and configuration
  • Interconnect statistics
  • Global cache performance
  • Cluster wait events
  • Resource usage per node
ScriptPurpose
gvscapture.sqlStreams capture status
streams_apply_lag.sqlStreams apply lag monitor
streams_capture_lag.sqlCapture lag history
capture_latency.sqlCapture latency analysis
apply_lag.sqlApply lag monitoring
ScriptPurpose
gvlogfreq.sqlRedo log switch frequency per instance
vlog.sqlRedo log file status
varchlog.sqlArchive log gap analysis
vthread.sqlRedo log thread information

Most RAC environments use ASM for shared storage.

ScriptPurpose
gvasmdsk.sqlASM disk performance across nodes
vasmdsk.sqlASM disk information
vasmdskg.sqlASM disk group information
vasm_disk.sqlASM disk performance metrics
vasmdgrp.sqlASM disk group capacity analysis
vasmdsumsz.sqlASM disk group summary

  1. Instance status — Run gvinst.sql to verify all nodes are up
  2. Session balance — Run pgmcnts.sql to check even distribution
  3. Wait events — Run gvsessw.sql for wait event spikes
  4. Lock contention — Run gvlockb.sql for blocking chains
  5. Space — Run ddbspacea.sql for tablespace usage
  1. Performance trends — Compare AWR reports across nodes
  2. Interconnect — Check global cache statistics
  3. Log switches — Run gvlogfreq.sql for redo log patterns
  4. ASM capacity — Run vasmdgrp.sql for disk group usage
ParameterDescriptionCheck With
CLUSTER_DATABASERAC enabledSHOW PARAMETER cluster
INSTANCE_NUMBERNode identifierSHOW PARAMETER instance
CLUSTER_INTERCONNECTSPrivate interconnectSHOW PARAMETER interconnect
REMOTE_LOGIN_PASSWORDFILEPassword file sharingSHOW PARAMETER remote