#!/bin/sh -f #++ # emutil - Utility Script for the EM # # emutil is currently used to register job types with EM #-- # # MODIFIED # lsatyapr 04/16/09 - Lrg3465690 Fix shift usage # rdabbott 09/04/07 - cons conf not used # rdabbott 08/30/07 - fix 4570966: get password from stdin # minfan 04/25/07 - ojdbc14 sunset # rkpandey 03/16/07 - Bug 5343881 for LoP # rkpandey 04/20/07 - Backport rkpandey_bug-5343881 from main # bram 02/27/06 - Change Copyright year # smodh 02/20/06 - XbranchMerge smodh_jdbc_emcore from main # rdabbott 08/23/05 - hand merge 4230566 by ashugupt # ashugupt 08/10/05 - Fix 4230566 # rdabbott 08/18/05 - change echo order for jdbc # rdabbott 08/11/05 - fix version # njagathe 08/20/04 - Replace join with minimal perl5lib # njagathe 08/16/04 - Fix hardcoded 561 refs # rdabbott 08/06/04 - fix regression paths # rdabbott 07/27/04 - emdrep bin in oracle home # kmanicka 07/19/04 - added JDBC option # djoly 05/14/04 - Update core reference # mbhoopat 03/11/04 - merge from pl_main_gen # nsharma 02/27/04 - ia64 changes # mbhoopat 12/19/03 - Fix class path # skini 08/31/03 - FIx return code # jsutton 04/25/03 - Fix up OUILOC # jmcdonal 04/09/03 - Bug 2737518: OUI dir changes # skini 03/18/03 - Changes to register jobtype to generate sql file # rlal 01/25/03 - fix for bug 2769541 # jsutton 01/21/03 - -native not a supported VM option # aaitghez 01/13/03 - change EM version string # itarashc 12/16/02 - # itarashc 12/11/02 - # dmshah 12/08/02 - dmshah_add_emutil_main # skini 12/17/02 - Cutover to sysman/jlib location for em.jar # dmshah 11/26/02 - dmshah_emctl_40 # dmshah 11/22/02 - Created. # displayHelp() { if ! test "$1" then echo "" echo "Error: Incorrect command option" elif [ "$1" != "NONE" ] then echo "" echo Error: $1 fi echo "" echo Usage: echo " emutil register jobtype [options] [connect details] " echo " CONNECT DETAILS:" echo " -username Repository login username" echo " -password Repository login password" echo " -alias Repository alias or connect descriptor" echo " " echo "" if [ "$2" = "" ] then echo " Try emutil -help for more information." echo "" else echo "" echo " OPTIONS:" echo " -o : Output the generated PL/SQL into the specified" echo " file as an executable PL/SQL script. In this case, the job" echo " type is not registered with the repository" echo "" echo " -jdbc: Use JDBC driver to connect to the repository. This option" echo " is mutually exclusive to the -o option." echo "" echo "" echo " Deprecated Usage:" echo " emutil register jobtype [options] " echo " [ ]" echo " OR" echo " emutil register jobtype [options] " echo " [ ]" echo "" fi exit 2 } # # Make sure certain environment variables are set # JAVA_HOME=%JAVA_HOME% ORACLE_HOME=%ORACLE_HOME% EMDROOT=%EMDROOT% export JAVA_HOME export ORACLE_HOME export EMDROOT printf "Enterprise Manager 10.2.0.4.0\n" printf "Copyright (c) 2002, 2007, Oracle Corporation. All rights reserved.\n" EM_OC4J_HOME=$EMDROOT/sysman/j2ee # these variables - PERL5LIB and LD_LIBRARY_PATH - are set so that # osfetchlets can run correctly uname=`uname` if [ "$uname" = "SunOS" ]; then # Set up TZ if not already set, this is done as a workaround # for bug in JDK 1.3.1 if [ "$TZ" = "" ] then TMPFILE=/tmp/setTZ.sh.$$ grep -v "^#" /etc/TIMEZONE | grep TZ > $TMPFILE . $TMPFILE echo "TZ set to $TZ\n" rm $TMPFILE fi export TZ fi PERL5LIB_NATIVE=:$ORACLE_HOME/perl/lib:$ORACLE_HOME/perl/lib/site_perl PERL5LIB_TMP=${PERL5LIB_NATIVE}:$EMDROOT/sysman/admin/scripts if [ "$PERL5LIB" = "" ] ; then PERL5LIB=${PERL5LIB_TMP} else PERL5LIB=${PERL5LIB_TMP}:${PERL5LIB} fi if [ "$LD_LIBRARY_PATH" = "" ] ; then LD_LIBRARY_PATH=$ORACLE_HOME/lib:$ORACLE_HOME/perl/lib:$EMDROOT/lib:%OUILOC%/lib/%PLATFORM% else LD_LIBRARY_PATH=$ORACLE_HOME/lib:$ORACLE_HOME/perl/lib:$EMDROOT/lib:%OUILOC%/lib/%PLATFORM%:$LD_LIBRARY_PATH fi if [ "$SHLIB_PATH" = "" ] ; then SHLIB_PATH=$ORACLE_HOME/lib32:$ORACLE_HOME/perl/lib:$EMDROOT/lib:%OUILOC%/lib/%PLATFORM% else SHLIB_PATH=$ORACLE_HOME/lib32:$ORACLE_HOME/perl/lib:$EMDROOT/lib:%OUILOC%/lib/%PLATFORM%:$SHLIB_PATH fi if [ "$LIBPATH" = "" ] ; then LIBPATH=$ORACLE_HOME/lib32:$ORACLE_HOME/perl/lib:$EMDROOT/lib:%OUILOC%/lib/%PLATFORM% else LIBPATH=$ORACLE_HOME/lib32:$ORACLE_HOME/perl/lib:$EMDROOT/lib:%OUILOC%/lib/%PLATFORM%:$LIBPATH fi # add java lib to LD_LIBRARY_PATH. if [ "$uname" = "SunOS" ]; then LD_LIBRARY_PATH=$JAVA_HOME/jre/lib/sparc/client:$JAVA_HOME/jre/lib/sparc:$LD_LIBRARY_PATH elif [ "$uname" = "HP-UX" ] && [ "`uname -m`" = "9000/800" ] ; then SHLIB_PATH=$JRE_HOME/lib/PA_RISC2.0/client:$JRE_HOME/lib/PA_RISC2.0:$SHLIB_PATH elif [ "$uname" = "HP-UX" ] && [ "`uname -m`" = "ia64" ] ; then SHLIB_PATH=$JRE_HOME/lib/IA64N/client:$JRE_HOME/lib/IA64N:$SHLIB_PATH elif [ "$uname" = "Linux" ] && [ "`uname -m`" = "i686" ] ; then LD_LIBRARY_PATH=$JRE_HOME/lib/i386/client:$JRE_HOME/lib/i386:$LD_LIBRARY_PATH elif [ "$uname" = "Linux" ] && [ "`uname -m`" = "ia64" ] ; then LD_LIBRARY_PATH=$JRE_HOME/lib/ia64/client:$JRE_HOME/lib/ia64:$LD_LIBRARY_PATH elif [ "$uname" = "Linux" ] && [ "`uname -m`" = "ppc64" ] ; then LD_LIBRARY_PATH=$JRE_HOME/bin/classic:$JRE_HOME/bin:$LD_LIBRARY_PATH fi # to workaround Solaris2.8 Java thr_suspend hang, use alternate libthread. # Since this directory doesn't exist on other versions, this is a noop there. # # ---- Let's try using T1 on 2.8 for a while with Java workaround -- jabramso # #if [ "$uname" = "SunOS" ]; #then # LD_LIBRARY_PATH=/usr/lib/lwp:$LD_LIBRARY_PATH #fi export PERL5LIB export LD_LIBRARY_PATH export SHLIB_PATH export LIBPATH # Add the var for HP if [ "$uname" = "HP-UX" ] ; then UNIX95=XPG4; export UNIX95 # fix for emctl stop issue on HP. EM_OC4J_OPTS="-XdoCloseWithReadPending $EM_OC4J_OPTS" export EM_OC4J_OPTS fi # jsutton 1/21/03: -native desupported for JDK 1.4 # (1.4 to be used when this branch ships) # #if [ "$uname" = "OSF1" ] ; then # # java "-native" flag not used on decunix # JAVA_OPTS="" #else # JAVA_OPTS="-native" #fi # # Set path so that our native executables can be found when run from java # PATH=$EMDROOT/bin:$PATH export PATH # use ulimit to make sure we have enough descriptors if [ "$EM_DESCRIPTORS" = "" ] then EM_DESCRIPTORS=1024 fi CURRENT_LIMIT=`ulimit -n` if [ "$CURRENT_LIMIT" != "unlimited" ] then if [ $CURRENT_LIMIT -lt $EM_DESCRIPTORS ] then ulimit -n $EM_DESCRIPTORS fi fi # # emutil register jobtype # if [ "$1" = "register" ] && [ "$2" = "jobtype" ] ; then CP=$ORACLE_HOME/oc4j/jdbc/lib/ojdbc5dms.jar:\ $ORACLE_HOME/oc4j/jdbc/lib/ojdbc14dms.jar:\ $ORACLE_HOME/oc4j/jdbc/lib/orai18n-net-ee.jar:\ $ORACLE_HOME/oc4j/jdbc/lib/orai18n-utility.jar:\ $ORACLE_HOME/oc4j/jdbc/lib/orai18n-collation.jar:\ $ORACLE_HOME/oc4j/jdbc/lib/orai18n-net.jar:\ $ORACLE_HOME/oc4j/jdbc/lib/orai18n-internal.jar:\ $ORACLE_HOME/oc4j/jdbc/lib/orai18n-servlet.jar:\ $ORACLE_HOME/oc4j/jdbc/lib/orai18n-lcsd.jar:\ $ORACLE_HOME/oc4j/jdbc/lib/orai18n-tools.jar:\ $ORACLE_HOME/oc4j/jdbc/lib/orai18n-mapping.jar:\ $ORACLE_HOME/oc4j/jdbc/lib/orai18n-translation.jar:\ $ORACLE_HOME/oc4j/jdbc/lib/orai18n.jar:\ $ORACLE_HOME/oc4j/lib/dms.jar:\ $ORACLE_HOME/jdbc/lib/ojdbc14.jar:\ $ORACLE_HOME/jdbc/lib/nls_charset12.jar:\ $ORACLE_HOME/j2ee/OC4J_EM/applications/em/em/WEB-INF/classes:\ $ORACLE_HOME/j2ee/OC4J_EM/applications/em/em/WEB-INF/lib/emCORE.jar:\ $ORACLE_HOME/j2ee/OC4J_EM/applications/em/em/WEB-INF/lib/emagentSDK.jar:\ $ORACLE_HOME/j2ee/OC4J_EM/applications/em/em/WEB-INF/lib/log4j-core.jar:\ $ORACLE_HOME/sysman/jlib/emCORE.jar:\ $ORACLE_HOME/sysman/jlib/emagentSDK.jar:\ $ORACLE_HOME/sysman/jlib/log4j-core.jar:\ $ORACLE_HOME/jlib/uix2.jar:\ $ORACLE_HOME/lib/xmlparserv2.jar shift shift if [ "$1" = "-o" ] ; then FILE_ONLY=true OUTFILENAME=$2 if [ $# -gt 1 ] ; then shift ; fi if [ $# -gt 1 ] ; then shift ; fi else FILE_ONLY=false OUTFILENAME=$ORACLE_HOME/sysman/admin/emdrep/bin/`basename $1 .xml`_JT.sql fi if [ "$1" = "-jdbc" ] ; then if [ "$FILE_ONLY" = "true" ] ; then displayHelp "-o is not compatible with -jdbc" fi JDBC_FLAG=true if [ $# -gt 1 ] ; then shift ; fi else JDBC_FLAG=false fi if [ "$1" = "-username" ] ; then REP_USER=$2 if [ $# -gt 1 ] ; then shift ; fi if [ $# -gt 1 ] ; then shift ; fi fi if [ "$1" = "-password" ] ; then REP_PWD=$2 if [ $# -gt 1 ] ; then shift ; fi if [ $# -gt 1 ] ; then shift ; fi fi if [ "$1" = "-alias" ] ; then # NOTE: not possible to handle host:port:sid here... REP_ALIAS=$2 if [ $# -gt 1 ] ; then shift ; fi if [ $# -gt 1 ] ; then shift ; fi fi if [ "$1" = "-help" ] ; then displayHelp "NONE" 2 fi case "$1" in -*) displayHelp "Unexpected option: $1" ;; esac if [ "$1" = "" ] ; then displayHelp "Input filename not specified." fi XML_FILE=$1 if [ "" != "$REP_USER" -o "" != "$REP_PWD" -o "" != "$REP_ALIAS" ] ; then if [ $# -gt 1 ] ; then displayHelp "Repository connection parameters can be specified by options or after the jobtype filename, but not both." elif [ "" = "$REP_USER" -o "" = "$REP_ALIAS" ] ; then displayHelp "Both -username and -alias must be supplied for secure mode." fi fi if [ "" = "$REP_ALIAS" ] ; then # get the connection detials the old way if [ $# -lt 4 ] ; then displayHelp "The repository connection details must be specified." fi REP_USER=$2 REP_PWD=$3 if [ $# -lt 6 ] ; then REP_ALIAS=$4 DEBUG=$5 else REP_HOST=$4 REP_PORT=$5 REP_SID=$6 DEBUG=$7 REP_ALIAS="(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(Host=$REP_HOST)(Port=$REP_PORT))(CONNECT_DATA=(SID=$REP_SID)))" fi if [ $# -gt 1 ] ; then shift ; fi fi if [ "$DEBUG" = "" ] ; then DEBUG="nodebug" fi if [ "$JDBC_FLAG" = "false" ] ; then ${JAVA_HOME}/bin/java -classpath $CP -DEMDROOT=$EMDROOT oracle.sysman.emSDK.job.dtd.JobTypeHandler $XML_FILE $OUTFILENAME $DEBUG RET=$? if [ $RET -eq 0 ] && [ "$FILE_ONLY" = "false" ] ; then # Add a QUIT directive to sqlplus so that it exits echo "QUIT" >>$OUTFILENAME echo "Committing type to database...." if [ "$REP_PWD" = "" ] ; then CONNECT_STR=" -L $REP_USER@$REP_ALIAS" else CONNECT_STR="-S -L $REP_USER/$REP_PWD@$REP_ALIAS" fi $ORACLE_HOME/bin/sqlplus $CONNECT_STR @$OUTFILENAME RET=$? if [ "$RET" = "0" ] ; then echo "Commit to database complete" else echo "Errors committing to database, exiting" fi exit $RET fi if [ "$FILE_ONLY" = "false" ] ; then rm -f $OUTFILENAME elif [ "$RET" = "0" ] ; then echo "Output file $OUTFILENAME saved successfully" else echo "Error saving output file" fi else echo "Committing type to database...." echo "- using jdbc connection" ${JAVA_HOME}/bin/java -classpath $CP -DEMDROOT=$EMDROOT oracle.sysman.emSDK.job.dtd.JobTypeHandler $XML_FILE -jdbc $REP_USER $REP_PWD $REP_ALIAS $DEBUG RET=$? if [ "$RET" = "0" ] ; then echo "Commit to database complete" else echo "Errors committing to database, exiting" fi exit $RET fi else if [ "$1" = "-help" ] then displayHelp "NONE" 2 else displayHelp fi fi