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
LISTENER0toLISTENER7, 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 = 4096MAX_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