bash
#!/bin/bash
# Function to check if a database is up
check_db_status() {
local db_name="$1"
sqlplus -s / as sysdba <<EOF
SET PAGESIZE 0 FEEDBACK OFF VERIFY OFF HEADING OFF ECHO OFF
SELECT 'UP' FROM v\$instance WHERE status = 'OPEN';
EXIT;
EOF
}
# Function to check if GoldenGate is configured
check_goldengate() {
if [ -d "/u01/ogg" ]; then
if [ "$(ps -ef | grep -i 'ggsci' | grep -v 'grep' | wc -l)" -gt 0 ]; then
echo "GoldenGate: Configured"
else
echo "GoldenGate: Not Configured"
fi
else
echo "GoldenGate: Not Installed"
fi
}
# Function to check if Oracle Wallet is configured
check_wallet() {
if [ -f "/etc/ORACLE_WALLET" ]; then
echo "Wallet: Configured"
else
echo "Wallet: Not Configured"
fi
}
# Function to check if Data Guard is configured and sync status
check_dataguard() {
local db_name="$1"
sync_status=$(sqlplus -s / as sysdba <<EOF
SET PAGESIZE 0 FEEDBACK OFF VERIFY OFF HEADING OFF ECHO OFF
SELECT CASE
WHEN (SELECT count(*) FROM v\$database WHERE role = 'PHYSICAL STANDBY') > 0 THEN
'Data Guard: Configured as Standby'
WHEN (SELECT count(*) FROM v\$database WHERE role = 'PRIMARY') > 0 THEN
'Data Guard: Configured as Primary'
ELSE
'Data Guard: Not Configured'
END FROM dual;
EXIT;
EOF
)
echo "$sync_status"
# Check if Data Guard is configured, then check synchronization
if [[ "$sync_status" == *"Configured"* ]]; then
sync_check=$(sqlplus -s / as sysdba <<EOF
SET PAGESIZE 0 FEEDBACK OFF VERIFY OFF HEADING OFF ECHO OFF
SELECT 'Sync Status: ' || (SELECT 'SYNCHRONIZED' FROM v\$archive_dest_state WHERE destination = 'VALID' AND state = 'VALID' AND error IS NULL) FROM dual;
EXIT;
EOF
)
echo "$sync_check"
fi
}
# Main script execution
echo "Oracle Database Configuration Summary"
echo "----------------------------- ---------"
# Get the list of database instances based on PMON processes
pmon_processes=$(ps -ef | grep pmon | grep -v grep | awk '{print $NF}' | cut -d'_' -f3 | sort -u)
for db in $pmon_processes; do
echo "Checking database: $db"
db_status=$(check_db_status "$db")
if [[ "$db_status" == "UP" ]]; then
echo "Status: UP"
check_goldengate
check_wallet
check_dataguard "$db"
else
echo "Status: DOWN"
fi
echo "----------------------------- ---------"
done
echo "Summary check completed."





0 comments:
Post a Comment