Skip to content

Instantly share code, notes, and snippets.

@Silvarion
Created July 8, 2015 13:20
Show Gist options
  • Select an option

  • Save Silvarion/d8de05914a76b605dfa1 to your computer and use it in GitHub Desktop.

Select an option

Save Silvarion/d8de05914a76b605dfa1 to your computer and use it in GitHub Desktop.

Revisions

  1. Silvarion created this gist Jul 8, 2015.
    82 changes: 82 additions & 0 deletions apply_to_all_db.sh
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,82 @@
    #!/bin/ksh

    ###########################
    ##
    ## File: apply_to_all.ksh
    ##
    ## Author: Jesus Sanchez ([email protected])
    ##
    ## Changelog:
    ## 2015-05-11 Jesus Sanchez Created this script
    ##
    ######################################################################

    ###############
    ## FUNCTIONS ##
    ###############

    #####################
    # Utility Functions #
    #####################
    export LAUNCH_DIR=`pwd`
    export SOURCE_DIR=$( cd -P -- "$(dirname -- "$(command -v -- "$0")")" && pwd -P )
    source $SOURCE_DIR/utility_functions.ksh
    export TEMPDIR=$LAUNCH_DIR


    function printUsage
    {
    print "USAGE: this script has exlusive modes for running."
    print "FILE MODE: PATH/TO/SCRIPT/apply_to_all_db.ksh -f <FILENAME>"
    print "COMMAND MODE: PATH/TO/SCRIPT/apply_to_all_db.ksh -c <DOUBLE-QUOTED COMMAND ENDED BY SEMICOLON>"
    }

    #########################
    # Function: crawl
    #
    # Description: this function will look for pmon running processes,
    # gather instance names and "crawl" through them, running the
    # command/SQL file on each instance on the same host.
    #
    # Usage:
    #
    ########################################################
    function crawl {
    ## Crawl through databases and execute command/file
    for DBNAME in $(ps -ef | grep pmon | cut -d"_" -s -f3 | grep -v ASM)
    do
    . oraenv <<_EOORA_
    ${DBNAME}
    _EOORA_
    sqlplus / as sysdba<<_EOSQL_
    select global_name from global_name;
    !echo "[INFO] About to execute: $1";
    $1
    exit
    _EOSQL_
    done
    msgPrint -info "All done!!!"
    }


    ## MAIN ALGORITHM ##

    ## Check parameters ##
    if [[ -z $2 ]];
    then
    printUsage
    else
    if [[ $1 = "-f" ]];
    then
    msgPrint -info "Using file mode"
    crawl "@${2}"
    elif [[ $1 = "-c" ]];
    then
    msgPrint -info "Using command mode"
    crawl "${2}"
    else
    printUsage
    fi
    fi

    exit 0