Oracle Exadata Overview

Oracle Exadata is a ready-to-use, high-speed, and scalable system that makes running Oracle Database faster and easier without the hassle of manual setup.

What it is: A powerful system designed to run Oracle Database efficiently.

Key parts:

  • Database servers (where data is processed)
  • Storage servers (where data is stored)
  • Super-fast internal network (connects servers quickly)

Why it’s special:

  • All hardware is already set up, tested, and optimized by Oracle.
  • Saves weeks of effort compared to building a high-performance system yourself.
  • Uses modern “scale-out” design, meaning you can add more servers easily as your needs grow.

Oracle Exadata Configurations

Fixed Configurations (Older Models):

  • Early versions came in set sizes like quarter-rack or half-rack.
  • Limited flexibility — you had to choose one of the predefined options.

Elastic Configurations (Modern Models):

  • Current systems let you customize the number of database servers and storage servers.
  • You can build a rack that fits your exact needs within certain limits.
  • Example: The Exadata X9M-2 can have:
  • 0 to 22 database servers
    • 0 to 19 storage servers
    • Or any mix of both.

Scale-Out Architecture:

  • As you add more servers, CPU, storage, and networking grow together.
  • This ensures smooth scalability without performance bottlenecks.

Oracle Exadata Performance

Smart SQL Offloading

  • Heavy SQL tasks are shifted from database servers to storage servers.
  • Data is filtered and processed directly at storage, in parallel.
  • This reduces CPU usage and minimizes data movement between servers.

Advanced Data Compression (Hybrid Columnar Compression)

  • Saves huge amounts of storage space for large databases.
  • Improves performance by reducing disk I/O.
  • Unlike traditional systems, compression doesn’t slow things down because decompression is handled by many processors in storage servers.
  • Combines benefits of column storage (fast analytics) without the slowdown of pure columnar systems.

High-Speed PCIe Flash Technology

  • Uses PCIe flash cards instead of slower flash disks.
  • Flash is connected directly to the PCIe bus for faster access.
  • Greatly boosts read/write performance.

Exadata Smart Flash Cache

  • Frequently used data is stored in fast PCIe flash.
  • Less-used data stays on cheaper, larger disk drives.
  • The system intelligently decides what to cache and what to skip.
  • Users can set rules to keep specific tables or indexes in flash without complex manual work.

Best Practices for Optimizing Connections

Use Oracle Net Listeners (not local bequeath connections):

  • Improves scalability and resource utilization.

Match Listeners to CPU Sockets:

  • Number of listeners should equal the number of CPU sockets.
  • Example: On an 8-socket server, configure 8 listeners.

Distribute Listeners Evenly:

  • Spread listeners across CPU sockets for balanced performance.
  • Example script starts listeners LISTENER0 to LISTENER7, each bound to a different socket.

Connection Rate Limiting:

  • Prevents connection storms and system instability.
  • Limit total connection rate to 400 connections per second per server (across all listeners).

Recommended Listener Settings:

  • MAX_ALL_CONNECTIONS_listener_name = 4096
  • MAX_REG_CONNECTIONS_listener_name = 2048

Step‑by‑Step: Adding Listeners

1. Define listeners in listener.ora file

Each listener has a name (LISTENER0, LISTENER1, etc.) and a port number:

LISTENER0 =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = dbserver1)(PORT = 1521))
  )

LISTENER1 =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = dbserver1)(PORT = 1522))
  )
...
LISTENER7 =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = dbserver1)(PORT = 1528))
  )

2. Start listeners bound to CPU sockets

Bind each listener to a different CPU socket using numactl:

#!/bin/bash
export ORACLE_HOME=/u01/app/oracle/product/19.0.0.0/dbhome_1
for socket in `seq 0 7`
do
  numactl --cpunodebind=${socket} $ORACLE_HOME/bin/lsnrctl start LISTENER${socket}
done

This script starts 8 listeners (LISTENER0–LISTENER7), each tied to one CPU socket.

3. Control connection rate

To avoid overload, limit total connections per server to 400/sec. In listener.ora, add:

RATE_LIMIT_LISTENER0=50
RATE_LIMIT_LISTENER1=50
...
RATE_LIMIT_LISTENER7=50

(Sum across all listeners ≤ 400)

4. Set listener parameters

Recommended settings to prevent errors like TNS-12514:

MAX_ALL_CONNECTIONS_listener_name=4096
MAX_REG_CONNECTIONS_listener_name=2048

Leave a Reply