Shell Script to Delete Archive Log Older than one hour
#!/bin/bash# ==========================================================# RMAN Archive Log Cleaner Script# Deletes archive logs older than 1 hour and crosschecks# Usage: ./clean_archivelogs.sh <catalog_tns> <target_tns># ==========================================================# ----------- Configuration (set your credentials here) -----------CATALOG_USER="rman_user"CATALOG_PASS="CatalogPassword"TARGET_USER="sys"TARGET_PASS="SysDBPassword"# ----------------------------------------------------------------if [ $# -ne 2 ]; thenecho "Usage: $0 <catalog_tns_alias> <target_tns_alias_or_SID>" >&2exit 1fiCATALOG_TNS=$1TARGET_TNS=$2LOGFILE="/tmp/clean_archivelogs_${TARGET_TNS}_$(date +%Y%m%d_%H%M%S).log"echo "Starting RMAN cleanup for target DB: $TARGET_TNS using catalog: $CATALOG_TNS"echo "Logging to: $LOGFILE"# ----------- Execute RMAN Commands -----------rman <<EOF >> "$LOGFILE" 2>&1CONNECT TARGET ${TARGET_USER}/${TARGET_PASS}@${TARGET_TNS} AS SYSDBACONNECT CATALOG ${CATALOG_USER}/${CATALOG_PASS}@${CATALOG_TNS}# Crosscheck existing archive logsCROSSCHECK ARCHIVELOG ALL;# Delete archive logs older than 1 hourDELETE NOPROMPT ARCHIVELOG UNTIL TIME "SYSDATE - (1/24)";# Refresh status after deletionCROSSCHECK ARCHIVELOG ALL;# Optionally delete expired recordsDELETE NOPROMPT EXPIRED ARCHIVELOG ALL;EXIT;EOFecho "RMAN cleanup complete for $TARGET_TNS. See log: $LOGFILE"
Execution Example
This will connect:
-
Catalog as:
rman_user/CatalogPassword@rcat_db
-
Target as:
sys/SysDBPassword@orcl AS SYSDBA
Post a Comment
Post a Comment