#!/bin/bash
SGA_TARGET_GB=128
SGA_TARGET_KB=$((SGA_TARGET_GB * 1024 * 1024))
echo "🔍 Oracle SGA Feasibility Check (Target: ${SGA_TARGET_GB} GB)"
echo "-------------------------------------------------------------"
# Get total system memory
TOTAL_MEM_KB=$(grep MemTotal /proc/meminfo | awk '{print $2}')
TOTAL_MEM_GB=$((TOTAL_MEM_KB / 1024 / 1024))
echo "🧠 Total Physical Memory: ${TOTAL_MEM_GB} GB"
# Get HugePages info
HP_SIZE_KB=$(grep Hugepagesize /proc/meminfo | awk '{print $2}')
HP_TOTAL=$(grep HugePages_Total /proc/meminfo | awk '{print $2}')
HP_FREE=$(grep HugePages_Free /proc/meminfo | awk '{print $2}')
HP_RSVD=$(grep HugePages_Rsvd /proc/meminfo | awk '{print $2}')
# Derived values
HP_TOTAL_KB=$((HP_TOTAL * HP_SIZE_KB))
HP_FREE_KB=$((HP_FREE * HP_SIZE_KB))
REQUIRED_HUGEPAGES=$((SGA_TARGET_KB / HP_SIZE_KB))
echo "📦 HugePage Size: $((HP_SIZE_KB / 1024)) MB"
echo "📦 HugePages Configured: ${HP_TOTAL} (${HP_TOTAL_KB} KB)"
echo "📦 HugePages Free: ${HP_FREE} (${HP_FREE_KB} KB)"
echo "📐 Required HugePages for ${SGA_TARGET_GB} GB SGA: ${REQUIRED_HUGEPAGES}"
echo "-------------------------------------------------------------"
# Evaluation
if [ "$TOTAL_MEM_KB" -lt "$((SGA_TARGET_KB + 10485760))" ]; then
echo "❌ ERROR: Not enough total system memory for ${SGA_TARGET_GB} GB SGA (plus OS needs)."
exit 1
fi
if [ "$HP_TOTAL" -lt "$REQUIRED_HUGEPAGES" ]; then
echo "❌ ERROR: Not enough HugePages configured."
echo "➡️ You need at least $REQUIRED_HUGEPAGES HugePages."
exit 1
fi
if [ "$HP_FREE" -lt "$REQUIRED_HUGEPAGES" ]; then
echo "⚠️ WARNING: HugePages configured but not enough free pages available now."
echo "➡️ Consider rebooting or shutting down DBs using HugePages."
exit 1
fi
echo "✅ YES: Your server is READY for ${SGA_TARGET_GB} GB SGA allocation using HugePages!"
exit 0





0 comments:
Post a Comment