#!/bin/bash
# Ask for Oracle environment variables
read -p "Enter your ORACLE_HOME path: " ORACLE_HOME
read -p "Enter your ORACLE_SID: " ORACLE_SID
# Set Oracle environment variables
export ORACLE_HOME
export ORACLE_SID
export PATH=$ORACLE_HOME/bin:$PATH
# Get the current date format for naming backups
DATEFORMAT=$(date +"%Y%m%d_%H%M%S")
# Show menu options
echo "Select the type of backup:"
echo "1) Single schema backup"
echo "2) Multiple schema backup (comma separated)"
echo "3) Single table backup"
echo "4) Multiple table backup (comma separated)"
# Read user input
read -p "Enter your choice (1/2/3/4): " choice
case $choice in
1)
# Single schema backup
read -p "Enter the schema name: " schema_name
echo "Starting backup for schema $schema_name at $(date)" >> nohup.out
# Run expdp command for single schema
expdp \"/ as sysdba\" directory=OBACKUP dumpfile=expdp_${schema_name}_$DATEFORMAT_%U.dmp logfile=expdp_${schema_name}_$DATEFORMAT.log schemas=$schema_name parallel=4 cluster=n >> nohup.out 2>&1
;;
2)
# Multiple schema backup
read -p "Enter the schema names (comma separated): " schema_names
IFS=',' read -r -a SCHEMA_ARRAY <<< "$schema_names"
for schema in "${SCHEMA_ARRAY[@]}"; do
echo "Starting backup for schema $schema at $(date)" >> nohup.out
# Run expdp command for each schema
expdp \"/ as sysdba\" directory=OBACKUP dumpfile=expdp_${schema}_$DATEFORMAT_%U.dmp logfile=expdp_${schema}_$DATEFORMAT.log schemas=$schema parallel=4 cluster=n >> nohup.out 2>&1
done
;;
3)
# Single table backup
read -p "Enter the table name (schema.tablename): " table_name
echo "Starting backup for table $table_name at $(date)" >> nohup.out
# Run expdp command for single table
expdp \"/ as sysdba\" directory=OBACKUP dumpfile=expdp_${table_name}_$DATEFORMAT_%U.dmp logfile=expdp_${table_name}_$DATEFORMAT.log tables=$table_name parallel=4 cluster=n >> nohup.out 2>&1
;;
4)
# Multiple table backup
read -p "Enter the table names (schema.tablename1,schema.tablename2,...): " table_names
IFS=',' read -r -a TABLE_ARRAY <<< "$table_names"
for table in "${TABLE_ARRAY[@]}"; do
echo "Starting backup for table $table at $(date)" >> nohup.out
# Run expdp command for each table
expdp \"/ as sysdba\" directory=OBACKUP dumpfile=expdp_${table}_$DATEFORMAT_%U.dmp logfile=expdp_${table}_$DATEFORMAT.log tables=$table parallel=4 cluster=n >> nohup.out 2>&1
done
;;
*)
echo "Invalid choice. Please run the script again and select a valid option."
exit 1
;;
esac
echo "Backup process completed at $(date)." >> nohup.out
No comments:
Post a Comment