Mageia Bugzilla – Attachment 3392 Details for
Bug 8723
systemd cannot start Oracle Express Edition
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
Log In
[x]
|
New Account
|
Forgot Password
oracle-xe initscript
oracle-xe (text/plain), 19.51 KB, created by
Frank Griffin
on 2013-01-17 18:41:20 CET
(
hide
)
Description:
oracle-xe initscript
Filename:
MIME Type:
Creator:
Frank Griffin
Created:
2013-01-17 18:41:20 CET
Size:
19.51 KB
patch
obsolete
>#!/bin/bash ># >### BEGIN INIT INFO ># Provides: oracle-xe ># Default-Start: 2 3 4 5 ># Default-Stop: 0 1 6 ># Required-Start: ># Required-Stop: ># Short-Description: Whatever ># Description: Whatever Whatever Whatever Whatever Whatever Whatever ># Whatever Whatever Whatever Whatever Whatever Whatever Whatever ># Whatever Whatever Whatever Whatever Whatever Whatever Whatever >### END INIT INFO > ># ># ># chkconfig: 2345 80 05 ># description: This is a program that is responsible for taking care of ># configuring the Oracle Database 11g Express Edition and its associated ># services. ># ># processname: oracle-xe ># Red Hat or SuSE config: /etc/sysconfig/oracle-xe ># Debian or Ubuntu config: /etc/default/oracle-xe ># ># change log: ># svaggu 02/19/11 - /etc/oratab permissions are updated to 664 ># svaggu 12/20/10 - apex updates. ># svaggu 07/28/10 - Creation ># > ># Source fuction library >if [ -f /lib/lsb/init-functions ] >then > . /lib/lsb/init-functions >elif [ -f /etc/init.d/functions ] >then > . /etc/init.d/functions >fi > ># Set path if path not set (if called from /etc/rc) >case $PATH in > "") PATH=/bin:/usr/bin:/sbin:/etc > export PATH ;; >esac > ># Save LD_LIBRARY_PATH >SAVE_LLP=$LD_LIBRARY_PATH >RETVAL=0 >export ORACLE_HOME=/u01/app/oracle/product/11.2.0/xe >export ORACLE_SID=XE >export ORACLE_BASE=/u01/app/oracle >export PATH=$ORACLE_HOME/bin:$PATH >LSNR=$ORACLE_HOME/bin/lsnrctl >SQLPLUS=$ORACLE_HOME/bin/sqlplus >ORACLE_OWNER=oracle >LOG="$ORACLE_HOME_LISTNER/listener.log" > >if [ -z "$CHOWN" ]; then CHOWN=/bin/chown; fi >if [ -z "$CHMOD" ]; then CHMOD=/bin/chmod; fi >if [ -z "$HOSTNAME" ]; then HOSTNAME=/bin/hostname; fi >if [ -z "$NSLOOKUP" ]; then NSLOOKUP=/usr/bin/nslookup; fi >if [ -z "$GREP" ]; then GREP=/usr/bin/grep; fi >if [ ! -f "$GREP" ]; then GREP=/bin/grep; fi >if [ -z "$SED" ]; then SED=/bin/sed; fi >if [ -z "$AWK" ]; then AWK=/bin/awk; fi >if [ -z "$SU" ];then SU=/bin/su; fi > >export LC_ALL=C > >if [ $(id -u) != "0" ] >then > echo "You must be root user to run the configure script. Login as root user and >then run the configure script." > exit 1 >fi > >CONFIG_NAME=oracle-xe >CONFIGURATION="/etc/sysconfig/$CONFIG_NAME" >if [ -f /etc/redhat-release ] >then > . /etc/init.d/functions > > init_status() > { > return 0 > } > exit_status() > { > exit $? > } > success_status() > { > success > echo > } > failure_status() > { > failure $? > echo > } > >elif [ -f /etc/SuSE-release ] >then > . /etc/rc.status > > init_status() > { > rc_reset > } > success_status() > { > echo "OK" > return 0 > } > failure_status() > { > echo "Failed" > return 1 > } > exit_status() > { > exit $? > } > >else > if [ -d /etc/default ] > then > CONFIGURATION="/etc/default/$CONFIG_NAME" > fi > > init_status() > { > return 0 > } > > success_status() > { > echo "OK" > return 0 > } > > failure_status() > { > echo "Failed" > return 0 > } > > exit_status() > { > exit $? > } >fi > ># Source configuration > >[ -f "$CONFIGURATION" ] && . "$CONFIGURATION" > >init_status > ># ># if_fail() ># ># Evaluates return codes. If 0, prints "OK", if 1, prints "Failed" ># and exits. If 2, status is "already done" and nothing is printed. ># The rest of the functions in here all honor this convention. ># >if_fail() >{ > RC="$1" > REASON="$2" > if [ "$RC" = "0" ] > then > return > elif [ "$RC" = "2" ] > then > return > fi > failure_status "${REASON}" > exit 1 >} > > ># ># write_sysconfig() ># ># Writes the system configuration ># >write_sysconfig() >{ > cat >"$CONFIGURATION" <<EOF > >#This is a configuration file for automatic starting of the Oracle >#Database and listener at system startup.It is generated By running >#'/etc/init.d/oracle-xe configure'.Please use that method to modify this >#file > ># ORACLE_DBENABLED:'true' means to load the Database at system boot. >ORACLE_DBENABLED=${ORACLE_DBENABLED:-false} > ># LISTENER_PORT: Database listener >LISTENER_PORT=${LISTENER_PORT} > ># HTTP_PORT : HTTP port for Oracle Application Express >HTTP_PORT=${HTTP_PORT} > ># Configuration : Check whether configure has been done or not >CONFIGURE_RUN=${CONFIGURE_RUN} > >EOF > > if [ $? != 0 ] > then > return 1 > fi > return 0 >} > > ># configure_perform() ># ># Instantantiate listener.ora,tnsnames.ora,and create the database, ># sets the password,start the listener,and adds database to inittab ># if necessary > >configure_perform() >{ > $SED -i "s/%hostname%/$HOSTNAME/g" $ORACLE_HOME/network/admin/listener.ora > $SED -i "s/%port%/$LISTENER_PORT/g" $ORACLE_HOME/network/admin/listener.ora > $CHOWN oracle:dba $ORACLE_HOME/network/admin/listener.ora > > sed -i "s/%httpport%/$HTTP_PORT/g" $ORACLE_HOME/config/scripts/postDBCreation.sql > $CHOWN oracle:dba $ORACLE_HOME/config/scripts/postDBCreation.sql > $SED -i "s/%hostname%/$HOSTNAME/g" $ORACLE_HOME/network/admin/tnsnames.ora > $SED -i "s/%port%/$LISTENER_PORT/g" $ORACLE_HOME/network/admin/tnsnames.ora > $CHOWN oracle:dba $ORACLE_HOME/network/admin/tnsnames.ora > > if test $LISTENER_PORT -ne 1521 > then > if [ -f /tmp/local_listener ] > then > cat >/tmp/local_listener$$ <<EOF >########################################### ># Registration of instance with listsner >########################################### >local_listener="(ADDRESS = (PROTOCOL=TCP) (HOST=%hostname%) (PORT=%port%))" >EOF > $CHMOD 664 /tmp/local_listener$$ > cat /tmp/local_listener$$ >> $ORACLE_HOME/config/scripts/init.ora > else > cat >/tmp/local_listener <<EOF >########################################### ># Registration of instance with listsner >########################################### >local_listener="(ADDRESS = (PROTOCOL=TCP) (HOST=%hostname%) (PORT=%port%))" >EOF > $CHMOD 664 /tmp/local_listener > cat /tmp/local_listener >> $ORACLE_HOME/config/scripts/init.ora > fi > > if test -f /tmp/local_listener > then > rm -fr /tmp/local_listener > elif test -f /tmp/local_listener$$ > then > rm -fr /tmp/local_listener$$ > fi > > $SED -i "s/%port%/$LISTENER_PORT/g" $ORACLE_HOME/config/scripts/init.ora > $SED -i "s/%hostname%/$HOSTNAME/g" $ORACLE_HOME/config/scripts/init.ora > $CHOWN oracle:dba $ORACLE_HOME/config/scripts/init.ora > > fi > > sed -i "s/%httpport%/$HTTP_PORT/g" $ORACLE_HOME/config/scripts/gettingstarted.sh > $CHOWN oracle:dba $ORACLE_HOME/config/scripts/gettingstarted.sh > > if [ -f $ORACLE_HOME/bin/tnslsnr ] > then > echo -n "Starting Oracle Net Listener..." > $SU -s /bin/bash $ORACLE_OWNER -c "$LSNR start" > /dev/null 2>&1 > touch /var/lock/subsys/listener > echo "Done" > fi > > echo -n "Configuring database..." > $SU -s /bin/bash $ORACLE_OWNER -c "$ORACLE_HOME/config/scripts/XE.sh" > /dev/null 2>&1 > if [ -d $ORACLE_HOME/config/log ] > then > err=`grep "ORA-44410" $ORACLE_HOME/config/log/*.log` > out=`grep "ORA-01034" $ORACLE_HOME/config/log/*.log` > if [ "$err" != "" ] || [ "$out" != "" ] > then > echo > echo "Database Configuration failed. Look into $ORACLE_HOME/config/log for details" > exit 1 > fi > fi > > pmon=`ps -ef | egrep pmon_$ORACLE_SID'\>' | $GREP -v $GREP` > > if [ "$pmon" = "" ]; > then > echo > echo "Database Configuration failed. Look into $ORACLE_HOME/config/log for details" > exit 1 > fi > > echo alter user sys identified by \"$ORACLE_PASSWORD\"\; | $SU -s /bin/bash $ORACLE_OWNER -c "$SQLPLUS -s / as sysdba" > /dev/null 2>&1 > echo alter user system identified by \"$ORACLE_PASSWORD\"\; | $SU -s /bin/bash $ORACLE_OWNER -c "$SQLPLUS -s / as sysdba" > /dev/null 2>&1 > > echo @$ORACLE_HOME/apex/apxxepwd.sql \"$ORACLE_PASSWORD\"\; | $SU -s /bin/bash $ORACLE_OWNER -c "$SQLPLUS -s / as sysdba" > /dev/null 2>&1 > echo "Done" > > $CHMOD 750 /u01/app/oracle/oradata > $CHMOD -R 775 /u01/app/oracle/diag > rm -fr $ORACLE_HOME/config/seeddb > > if [ -f /etc/oratab ] > then > echo "XE:$ORACLE_HOME:N" >> /etc/oratab > else > echo "XE:$ORACLE_HOME:N" >> /etc/oratab > $CHOWN oracle:dba /etc/oratab > $CHMOD 664 /etc/oratab > fi > > echo -n "Starting Oracle Database 11g Express Edition instance..." > pmon=`ps -ef | egrep pmon_$ORACLE_SID'\>' | grep -v grep` > > if [ "$pmon" = "" ]; > then > $SU -s /bin/bash $ORACLE_OWNER -c "$SQLPLUS -s /nolog @$ORACLE_HOME/config/scripts/startdb.sql" > /dev/null 2>&1 > touch /var/lock/subsys/oracle-xe > fi > echo "Done" > > echo "Installation completed successfully." > > > return 0 >} > ># >#configure_ask() ># ># Ask configuration questions,setting the variables. ># > >configure_ask() >{ > cat <<EOF > >Oracle Database 11g Express Edition Configuration >------------------------------------------------- >This will configure on-boot properties of Oracle Database 11g Express >Edition. The following questions will determine whether the database should >be starting upon system boot, the ports it will use, and the passwords that >will be used for database accounts. Press <Enter> to accept the defaults. >Ctrl-C will abort. > >EOF > #get the http port value > while : > do > while [ 1 ] > do > echo -n Specify the HTTP port that will be used for Oracle Application Express [8080]: > read LINE > if [ -z $LINE ] > then > LINE=8080 > fi > echo > port=`netstat -n --tcp --listen | grep :$LINE | awk -F: '{print $4}' | sed 's/ //g'` > if [ "$port" = "$LINE" ] > then > if [ ! -z $1 ] > then > echo > echo "Port $LINE appears to be in use by another application. Specify a different >port and retry the configuration." > trap "rm -fr $1" exit > exit > fi > echo "Port $port appears to be in use by another application. Specify a different port." > else > break; > fi > done > > case "$LINE" in > "") > break > ;; > *[^0-9]*) > echo "Invalid http port: $LINE" > ;; > *) > HTTP_PORT=$LINE > break > ;; > esac > done > > #get the listener port value > while : > do > while [ 1 ] > do > echo -n Specify a port that will be used for the database listener [1521]: > read LINE > if [ -z $LINE ] > then > LINE=1521 > fi > echo > port=`netstat -n --tcp --listen | $GREP :$LINE | $AWK -F: '{print $4}' | $SED 's/ //g'` > if [ "$port" = "$LINE" ] > then > if [ ! -z $1 ] > then > echo > echo "Port $LISTENER_PORT appears to be in use by another application. Specify a different >port and retry the configuration." > trap "rm -fr $1" exit > exit > fi > echo Port $port appears to be in use by another application.\ > Specify a different port. > else > break; > fi > done > > case "$LINE" in > "") > break > ;; > *[^0-9]*) > echo "Invalid port: $LINE" >&2 > ;; > *) > if [ "$HTTP_PORT" != "$LINE" ] > then > LISTENER_PORT=$LINE > break > else > echo Database listener cannot be configured on the same port as Oracle Application Express. > fi > ;; > esac > done > > #get the database password > while : > do > echo -n "Specify a password to be used for database accounts. Note that the same >password will be used for SYS and SYSTEM. Oracle recommends the use of >different passwords for each database account. This can be done after >initial configuration:" > while [ 1 ] > do > /bin/stty -echo > /dev/null 2>&1 > temp=`echo $IFS` > export IFS="\n" > while [ 1 ] > do > read LINE > while [ -z "$LINE" ] > do > echo > echo -n "Password can't be null. Enter password:" > read LINE > done > > result=`expr index "$LINE" [\!\@\%\^\&\*\(\)\+\=\\|~\[\]{}\;\:\'\"\,\<\>\/\?]` > if [ $result != 0 ]; > then > echo > echo -n "The password you entered contains invalid characters. Enter password:" > else > break > fi > done > echo > echo -n "Confirm the password:" > read LINE1 > echo > if [ "$LINE" != "$LINE1" ]; > then > if [ ! -z $1 ] > then > echo > echo "Passwords do not match. Specify the same password for both ORACLE_PASSSWORD and >ORACLE_CONFIRM_PASSWORD, and retry the configuration." > trap "rm -fr $1" exit > exit > fi > echo > echo -n "Passwords do not match. Enter the password:" > else > break > fi > done > /bin/stty echo > /dev/null 2>&1 > ORACLE_PASSWORD=$LINE > export IFS=$temp > break; > done > > while : > do > if [ "$ORACLE_DBENABLED" = "true" ] > then > CUR=y > else > CUR=n > fi > echo > echo -n "Do you want Oracle Database 11g Express Edition to be started on boot (y/n) [y]:" > read LINE > if [ -z $LINE ] > then > ORACLE_DBENABLED=true > fi > echo > case "$LINE" in > "") > break > ;; > y|Y) > ORACLE_DBENABLED=true > break > ;; > n|N) > ORACLE_DBENABLED=false > break > ;; > *) > echo "Invalid response: $LINE " >&2 > break > esac > done >} > >configure() >{ > if test -f "$CONFIGURATION" > then > echo "Oracle Database 11g Express Edition is already configured" > exit 1 > fi > configure_ask > configure_perform > CONFIGURE_RUN=true > write_sysconfig >} > >start() { > > if [ "$CONFIGURE_RUN" != "true" ] > then > echo "Oracle Database 11g Express Edition is not configured. You must run >'/etc/init.d/oracle-xe configure' as the root user to configure the database." > exit 0 > fi > status=`ps -ef | grep tns | grep oracle` > if [ "$status" == "" ] > then > if [ -f $ORACLE_HOME/bin/tnslsnr ] > then > echo "Starting Oracle Net Listener." > $SU -s /bin/bash $ORACLE_OWNER -c "$LSNR start" > /dev/null 2>&1 > touch /var/lock/subsys/listener > fi > fi > pmon=`ps -ef | egrep pmon_$ORACLE_SID'\>' | grep -v grep` > if [ "$pmon" = "" ]; > then > echo "Starting Oracle Database 11g Express Edition instance." > $SU -s /bin/bash $ORACLE_OWNER -c "$SQLPLUS -s /nolog @$ORACLE_HOME/config/scripts/startdb.sql" > /dev/null 2>&1 > else > echo "Oracle Database 11g Express Edition instance is already started" > fi > RETVAL=$? > if [ $RETVAL -eq 0 ] > then > echo > touch /var/lock/subsys/oracle-xe > else > echo Failed to start Oracle Net Listener using $ORACLE_HOME/bin/tnslsnr\ > and Oracle Express Database using $ORACLE_HOME/bin/sqlplus. > RETVAL=1 > fi > return $RETVAL >} > >stop() { > if [ "$CONFIGURE_RUN" != "true" ] > then > echo "Oracle Database 11g Express Edition is not configured. You must run >'/etc/init.d/oracle-xe configure' as the root user to configure the database." > exit 0 > fi > > # Stop Oracle 11g Express Edition Database and Listener > echo Shutting down Oracle Database 11g Express Edition instance. > $SU -s /bin/bash $ORACLE_OWNER -c "$SQLPLUS -s /nolog @$ORACLE_HOME/config/scripts/stopdb.sql" > /dev/null 2>&1 > echo Stopping Oracle Net Listener. > $SU -s /bin/bash $ORACLE_OWNER -c "$LSNR stop" > /dev/null 2>&1 > RETVAL=$? > echo > if [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/listener > then > rm -f /var/lock/subsys/oracle-xe > return $RETVAL > fi >} > >dostatus() { > if test ! -f "$CONFIGURATION" > then > echo "Oracle Database 11g Express Edition is not configured. You must run >'/etc/init.d/oracle-xe configure' as the root user to configure the database." > exit 0 > elif [ "$CONFIGURE_RUN" != "true" ] > then > echo "Oracle Database 11g Express Edition is not configured. You must run >'/etc/init.d/oracle-xe configure' as the root user to configure the database." > exit 0 > fi > > $SU -s /bin/bash $ORACLE_OWNER -c "$LSNR status" > RETVAL=$? >} > >configure_with_user_inputs() >{ > >case "$1" in > start) > if [ "$0" != "/etc/init.d/oracle-xe" ] > then > if test -f "$CONFIGURATION" > then > if test "$ORACLE_DBENABLED" != "true" > then > exit 0 > fi > else > echo "Oracle Database 11g Express Edition is not configured. You must run >'/etc/init.d/oracle-xe configure' as the root user to configure the database." > exit 0 > fi > fi > start > ;; > configure) > configure > ;; > stop) > stop > ;; > restart|reload|force-reload) > stop > start > RETVAL=$? > ;; > status) > dostatus > ;; > enable) > if test -f "$CONFIGURATION" > then > ORACLE_DBENABLED=true > write_sysconfig > else > echo "Oracle Database 11g Express Edition is not configured. You must run >'/etc/init.d/oracle-xe configure' as the root user to configure the database." > exit 0 > fi > ;; > > disable) > if test -f "$CONFIGURATION" > then > ORACLE_DBENABLED=false > write_sysconfig > else > echo "Oracle Database 11g Express Edition is not configured. You must run >'/etc/init.d/oracle-xe configure' as the root user to configure the database." > exit 0 > fi > ;; > > *) > echo $"Usage: $0 {start|stop|restart|force-reload|configure|status|enable|disable}" > exit 1 >esac >} > >readFromResponseFile() >{ > > HTTP_PORT=`sed '/^\#/d' $1 | grep -w ^ORACLE_HTTP_PORT | tail -n -1 | cut -d "=" -f2- | sed 's/^[[:space:]]*//;s/[[:space:]]*$//'` > LISTENER_PORT=`sed '/^\#/d' $1 | grep -w ^ORACLE_LISTENER_PORT | tail -n -1 | cut -d "=" -f2- | sed 's/^[[:space:]]*//;s/[[:space:]]*$//'` > PASSWORD=`sed '/^\#/d' $1 | grep -w ^ORACLE_PASSWORD | tail -n -1 | cut -d "=" -f2- | sed 's/^[[:space:]]*//;s/[[:space:]]*$//'` > CONFIRM_PASSWORD=`sed '/^\#/d' $1 | grep -w ^ORACLE_CONFIRM_PASSWORD | tail -n -1 | cut -d "=" -f2- | sed 's/^[[:space:]]*//;s/[[:space:]]*$//'` > ORACLE_DBENABLE=`sed '/^\#/d' $1 | grep -w ^ORACLE_DBENABLE | tail -n -1 | cut -d "=" -f2- | sed 's/^[[:space:]]*//;s/[[:space:]]*$//'` > > RESTOREUMASK=$(umask) > while : ;do > umask 0077 > MYTEMPFILE="${TMPDIR:-/tmp}/$(basename $0).$$.$(date +%s)" > echo $HTTP_PORT > $MYTEMPFILE > echo $LISTENER_PORT >> $MYTEMPFILE > echo $PASSWORD >> $MYTEMPFILE > echo $CONFIRM_PASSWORD >> $MYTEMPFILE > echo $ORACLE_DBENABLE >> $MYTEMPFILE > break > done > umask "$RESTOREUMASK" >} > >configure_with_responsefile_values() >{ > RESPONSEFILE=`echo $1 | awk -F"=" '{print $2}'` > if [ -z $RESPONSEFILE ];then > echo "Please provide a valid responseFile" > exit 1 > fi > if [ X`ls $RESPONSEFILE` = X ] > then > echo $RESPONSEFILE does not exists > exit 1 > fi > > if [ `stat -c "%a" $RESPONSEFILE` -lt 400 ]; then > echo "$RESPONSEFILE exists but is not readable" > else > readFromResponseFile $RESPONSEFILE ># exit > RETVAL=$? > if [ $RETVAL -eq 0 ];then > configure_ask $MYTEMPFILE < $MYTEMPFILE > trap "rm -fr $MYTEMPFILE" exit > configure_perform > CONFIGURE_RUN=true > write_sysconfig ># echo To access the Database Home Page go to \"http://127.0.0.1:$HTTP_PORT/apex\" > > else > echo "Please check the responseFile for required variables" > exit 1 > fi > > fi >} > >case "$#" in > "1") > configure_with_user_inputs $1 > ;; > "2") > if test -f "$CONFIGURATION" > then > echo "Oracle Database 11g Express Edition is already configured" > exit 1 > fi > > case "$2" in > responseFile=*) > ;; > *) > echo "Usage: $0 $1 responseFile=<responseFile location>" > exit 1 > esac > configure_with_responsefile_values $2 > ;; > *) > echo $"Usage: $0 {start|stop|restart|force-reload|configure|status|enable|disable}" > exit 1 > ;; > >esac
#!/bin/bash # ### BEGIN INIT INFO # Provides: oracle-xe # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Required-Start: # Required-Stop: # Short-Description: Whatever # Description: Whatever Whatever Whatever Whatever Whatever Whatever # Whatever Whatever Whatever Whatever Whatever Whatever Whatever # Whatever Whatever Whatever Whatever Whatever Whatever Whatever ### END INIT INFO # # # chkconfig: 2345 80 05 # description: This is a program that is responsible for taking care of # configuring the Oracle Database 11g Express Edition and its associated # services. # # processname: oracle-xe # Red Hat or SuSE config: /etc/sysconfig/oracle-xe # Debian or Ubuntu config: /etc/default/oracle-xe # # change log: # svaggu 02/19/11 - /etc/oratab permissions are updated to 664 # svaggu 12/20/10 - apex updates. # svaggu 07/28/10 - Creation # # Source fuction library if [ -f /lib/lsb/init-functions ] then . /lib/lsb/init-functions elif [ -f /etc/init.d/functions ] then . /etc/init.d/functions fi # Set path if path not set (if called from /etc/rc) case $PATH in "") PATH=/bin:/usr/bin:/sbin:/etc export PATH ;; esac # Save LD_LIBRARY_PATH SAVE_LLP=$LD_LIBRARY_PATH RETVAL=0 export ORACLE_HOME=/u01/app/oracle/product/11.2.0/xe export ORACLE_SID=XE export ORACLE_BASE=/u01/app/oracle export PATH=$ORACLE_HOME/bin:$PATH LSNR=$ORACLE_HOME/bin/lsnrctl SQLPLUS=$ORACLE_HOME/bin/sqlplus ORACLE_OWNER=oracle LOG="$ORACLE_HOME_LISTNER/listener.log" if [ -z "$CHOWN" ]; then CHOWN=/bin/chown; fi if [ -z "$CHMOD" ]; then CHMOD=/bin/chmod; fi if [ -z "$HOSTNAME" ]; then HOSTNAME=/bin/hostname; fi if [ -z "$NSLOOKUP" ]; then NSLOOKUP=/usr/bin/nslookup; fi if [ -z "$GREP" ]; then GREP=/usr/bin/grep; fi if [ ! -f "$GREP" ]; then GREP=/bin/grep; fi if [ -z "$SED" ]; then SED=/bin/sed; fi if [ -z "$AWK" ]; then AWK=/bin/awk; fi if [ -z "$SU" ];then SU=/bin/su; fi export LC_ALL=C if [ $(id -u) != "0" ] then echo "You must be root user to run the configure script. Login as root user and then run the configure script." exit 1 fi CONFIG_NAME=oracle-xe CONFIGURATION="/etc/sysconfig/$CONFIG_NAME" if [ -f /etc/redhat-release ] then . /etc/init.d/functions init_status() { return 0 } exit_status() { exit $? } success_status() { success echo } failure_status() { failure $? echo } elif [ -f /etc/SuSE-release ] then . /etc/rc.status init_status() { rc_reset } success_status() { echo "OK" return 0 } failure_status() { echo "Failed" return 1 } exit_status() { exit $? } else if [ -d /etc/default ] then CONFIGURATION="/etc/default/$CONFIG_NAME" fi init_status() { return 0 } success_status() { echo "OK" return 0 } failure_status() { echo "Failed" return 0 } exit_status() { exit $? } fi # Source configuration [ -f "$CONFIGURATION" ] && . "$CONFIGURATION" init_status # # if_fail() # # Evaluates return codes. If 0, prints "OK", if 1, prints "Failed" # and exits. If 2, status is "already done" and nothing is printed. # The rest of the functions in here all honor this convention. # if_fail() { RC="$1" REASON="$2" if [ "$RC" = "0" ] then return elif [ "$RC" = "2" ] then return fi failure_status "${REASON}" exit 1 } # # write_sysconfig() # # Writes the system configuration # write_sysconfig() { cat >"$CONFIGURATION" <<EOF #This is a configuration file for automatic starting of the Oracle #Database and listener at system startup.It is generated By running #'/etc/init.d/oracle-xe configure'.Please use that method to modify this #file # ORACLE_DBENABLED:'true' means to load the Database at system boot. ORACLE_DBENABLED=${ORACLE_DBENABLED:-false} # LISTENER_PORT: Database listener LISTENER_PORT=${LISTENER_PORT} # HTTP_PORT : HTTP port for Oracle Application Express HTTP_PORT=${HTTP_PORT} # Configuration : Check whether configure has been done or not CONFIGURE_RUN=${CONFIGURE_RUN} EOF if [ $? != 0 ] then return 1 fi return 0 } # configure_perform() # # Instantantiate listener.ora,tnsnames.ora,and create the database, # sets the password,start the listener,and adds database to inittab # if necessary configure_perform() { $SED -i "s/%hostname%/$HOSTNAME/g" $ORACLE_HOME/network/admin/listener.ora $SED -i "s/%port%/$LISTENER_PORT/g" $ORACLE_HOME/network/admin/listener.ora $CHOWN oracle:dba $ORACLE_HOME/network/admin/listener.ora sed -i "s/%httpport%/$HTTP_PORT/g" $ORACLE_HOME/config/scripts/postDBCreation.sql $CHOWN oracle:dba $ORACLE_HOME/config/scripts/postDBCreation.sql $SED -i "s/%hostname%/$HOSTNAME/g" $ORACLE_HOME/network/admin/tnsnames.ora $SED -i "s/%port%/$LISTENER_PORT/g" $ORACLE_HOME/network/admin/tnsnames.ora $CHOWN oracle:dba $ORACLE_HOME/network/admin/tnsnames.ora if test $LISTENER_PORT -ne 1521 then if [ -f /tmp/local_listener ] then cat >/tmp/local_listener$$ <<EOF ########################################### # Registration of instance with listsner ########################################### local_listener="(ADDRESS = (PROTOCOL=TCP) (HOST=%hostname%) (PORT=%port%))" EOF $CHMOD 664 /tmp/local_listener$$ cat /tmp/local_listener$$ >> $ORACLE_HOME/config/scripts/init.ora else cat >/tmp/local_listener <<EOF ########################################### # Registration of instance with listsner ########################################### local_listener="(ADDRESS = (PROTOCOL=TCP) (HOST=%hostname%) (PORT=%port%))" EOF $CHMOD 664 /tmp/local_listener cat /tmp/local_listener >> $ORACLE_HOME/config/scripts/init.ora fi if test -f /tmp/local_listener then rm -fr /tmp/local_listener elif test -f /tmp/local_listener$$ then rm -fr /tmp/local_listener$$ fi $SED -i "s/%port%/$LISTENER_PORT/g" $ORACLE_HOME/config/scripts/init.ora $SED -i "s/%hostname%/$HOSTNAME/g" $ORACLE_HOME/config/scripts/init.ora $CHOWN oracle:dba $ORACLE_HOME/config/scripts/init.ora fi sed -i "s/%httpport%/$HTTP_PORT/g" $ORACLE_HOME/config/scripts/gettingstarted.sh $CHOWN oracle:dba $ORACLE_HOME/config/scripts/gettingstarted.sh if [ -f $ORACLE_HOME/bin/tnslsnr ] then echo -n "Starting Oracle Net Listener..." $SU -s /bin/bash $ORACLE_OWNER -c "$LSNR start" > /dev/null 2>&1 touch /var/lock/subsys/listener echo "Done" fi echo -n "Configuring database..." $SU -s /bin/bash $ORACLE_OWNER -c "$ORACLE_HOME/config/scripts/XE.sh" > /dev/null 2>&1 if [ -d $ORACLE_HOME/config/log ] then err=`grep "ORA-44410" $ORACLE_HOME/config/log/*.log` out=`grep "ORA-01034" $ORACLE_HOME/config/log/*.log` if [ "$err" != "" ] || [ "$out" != "" ] then echo echo "Database Configuration failed. Look into $ORACLE_HOME/config/log for details" exit 1 fi fi pmon=`ps -ef | egrep pmon_$ORACLE_SID'\>' | $GREP -v $GREP` if [ "$pmon" = "" ]; then echo echo "Database Configuration failed. Look into $ORACLE_HOME/config/log for details" exit 1 fi echo alter user sys identified by \"$ORACLE_PASSWORD\"\; | $SU -s /bin/bash $ORACLE_OWNER -c "$SQLPLUS -s / as sysdba" > /dev/null 2>&1 echo alter user system identified by \"$ORACLE_PASSWORD\"\; | $SU -s /bin/bash $ORACLE_OWNER -c "$SQLPLUS -s / as sysdba" > /dev/null 2>&1 echo @$ORACLE_HOME/apex/apxxepwd.sql \"$ORACLE_PASSWORD\"\; | $SU -s /bin/bash $ORACLE_OWNER -c "$SQLPLUS -s / as sysdba" > /dev/null 2>&1 echo "Done" $CHMOD 750 /u01/app/oracle/oradata $CHMOD -R 775 /u01/app/oracle/diag rm -fr $ORACLE_HOME/config/seeddb if [ -f /etc/oratab ] then echo "XE:$ORACLE_HOME:N" >> /etc/oratab else echo "XE:$ORACLE_HOME:N" >> /etc/oratab $CHOWN oracle:dba /etc/oratab $CHMOD 664 /etc/oratab fi echo -n "Starting Oracle Database 11g Express Edition instance..." pmon=`ps -ef | egrep pmon_$ORACLE_SID'\>' | grep -v grep` if [ "$pmon" = "" ]; then $SU -s /bin/bash $ORACLE_OWNER -c "$SQLPLUS -s /nolog @$ORACLE_HOME/config/scripts/startdb.sql" > /dev/null 2>&1 touch /var/lock/subsys/oracle-xe fi echo "Done" echo "Installation completed successfully." return 0 } # #configure_ask() # # Ask configuration questions,setting the variables. # configure_ask() { cat <<EOF Oracle Database 11g Express Edition Configuration ------------------------------------------------- This will configure on-boot properties of Oracle Database 11g Express Edition. The following questions will determine whether the database should be starting upon system boot, the ports it will use, and the passwords that will be used for database accounts. Press <Enter> to accept the defaults. Ctrl-C will abort. EOF #get the http port value while : do while [ 1 ] do echo -n Specify the HTTP port that will be used for Oracle Application Express [8080]: read LINE if [ -z $LINE ] then LINE=8080 fi echo port=`netstat -n --tcp --listen | grep :$LINE | awk -F: '{print $4}' | sed 's/ //g'` if [ "$port" = "$LINE" ] then if [ ! -z $1 ] then echo echo "Port $LINE appears to be in use by another application. Specify a different port and retry the configuration." trap "rm -fr $1" exit exit fi echo "Port $port appears to be in use by another application. Specify a different port." else break; fi done case "$LINE" in "") break ;; *[^0-9]*) echo "Invalid http port: $LINE" ;; *) HTTP_PORT=$LINE break ;; esac done #get the listener port value while : do while [ 1 ] do echo -n Specify a port that will be used for the database listener [1521]: read LINE if [ -z $LINE ] then LINE=1521 fi echo port=`netstat -n --tcp --listen | $GREP :$LINE | $AWK -F: '{print $4}' | $SED 's/ //g'` if [ "$port" = "$LINE" ] then if [ ! -z $1 ] then echo echo "Port $LISTENER_PORT appears to be in use by another application. Specify a different port and retry the configuration." trap "rm -fr $1" exit exit fi echo Port $port appears to be in use by another application.\ Specify a different port. else break; fi done case "$LINE" in "") break ;; *[^0-9]*) echo "Invalid port: $LINE" >&2 ;; *) if [ "$HTTP_PORT" != "$LINE" ] then LISTENER_PORT=$LINE break else echo Database listener cannot be configured on the same port as Oracle Application Express. fi ;; esac done #get the database password while : do echo -n "Specify a password to be used for database accounts. Note that the same password will be used for SYS and SYSTEM. Oracle recommends the use of different passwords for each database account. This can be done after initial configuration:" while [ 1 ] do /bin/stty -echo > /dev/null 2>&1 temp=`echo $IFS` export IFS="\n" while [ 1 ] do read LINE while [ -z "$LINE" ] do echo echo -n "Password can't be null. Enter password:" read LINE done result=`expr index "$LINE" [\!\@\%\^\&\*\(\)\+\=\\|~\[\]{}\;\:\'\"\,\<\>\/\?]` if [ $result != 0 ]; then echo echo -n "The password you entered contains invalid characters. Enter password:" else break fi done echo echo -n "Confirm the password:" read LINE1 echo if [ "$LINE" != "$LINE1" ]; then if [ ! -z $1 ] then echo echo "Passwords do not match. Specify the same password for both ORACLE_PASSSWORD and ORACLE_CONFIRM_PASSWORD, and retry the configuration." trap "rm -fr $1" exit exit fi echo echo -n "Passwords do not match. Enter the password:" else break fi done /bin/stty echo > /dev/null 2>&1 ORACLE_PASSWORD=$LINE export IFS=$temp break; done while : do if [ "$ORACLE_DBENABLED" = "true" ] then CUR=y else CUR=n fi echo echo -n "Do you want Oracle Database 11g Express Edition to be started on boot (y/n) [y]:" read LINE if [ -z $LINE ] then ORACLE_DBENABLED=true fi echo case "$LINE" in "") break ;; y|Y) ORACLE_DBENABLED=true break ;; n|N) ORACLE_DBENABLED=false break ;; *) echo "Invalid response: $LINE " >&2 break esac done } configure() { if test -f "$CONFIGURATION" then echo "Oracle Database 11g Express Edition is already configured" exit 1 fi configure_ask configure_perform CONFIGURE_RUN=true write_sysconfig } start() { if [ "$CONFIGURE_RUN" != "true" ] then echo "Oracle Database 11g Express Edition is not configured. You must run '/etc/init.d/oracle-xe configure' as the root user to configure the database." exit 0 fi status=`ps -ef | grep tns | grep oracle` if [ "$status" == "" ] then if [ -f $ORACLE_HOME/bin/tnslsnr ] then echo "Starting Oracle Net Listener." $SU -s /bin/bash $ORACLE_OWNER -c "$LSNR start" > /dev/null 2>&1 touch /var/lock/subsys/listener fi fi pmon=`ps -ef | egrep pmon_$ORACLE_SID'\>' | grep -v grep` if [ "$pmon" = "" ]; then echo "Starting Oracle Database 11g Express Edition instance." $SU -s /bin/bash $ORACLE_OWNER -c "$SQLPLUS -s /nolog @$ORACLE_HOME/config/scripts/startdb.sql" > /dev/null 2>&1 else echo "Oracle Database 11g Express Edition instance is already started" fi RETVAL=$? if [ $RETVAL -eq 0 ] then echo touch /var/lock/subsys/oracle-xe else echo Failed to start Oracle Net Listener using $ORACLE_HOME/bin/tnslsnr\ and Oracle Express Database using $ORACLE_HOME/bin/sqlplus. RETVAL=1 fi return $RETVAL } stop() { if [ "$CONFIGURE_RUN" != "true" ] then echo "Oracle Database 11g Express Edition is not configured. You must run '/etc/init.d/oracle-xe configure' as the root user to configure the database." exit 0 fi # Stop Oracle 11g Express Edition Database and Listener echo Shutting down Oracle Database 11g Express Edition instance. $SU -s /bin/bash $ORACLE_OWNER -c "$SQLPLUS -s /nolog @$ORACLE_HOME/config/scripts/stopdb.sql" > /dev/null 2>&1 echo Stopping Oracle Net Listener. $SU -s /bin/bash $ORACLE_OWNER -c "$LSNR stop" > /dev/null 2>&1 RETVAL=$? echo if [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/listener then rm -f /var/lock/subsys/oracle-xe return $RETVAL fi } dostatus() { if test ! -f "$CONFIGURATION" then echo "Oracle Database 11g Express Edition is not configured. You must run '/etc/init.d/oracle-xe configure' as the root user to configure the database." exit 0 elif [ "$CONFIGURE_RUN" != "true" ] then echo "Oracle Database 11g Express Edition is not configured. You must run '/etc/init.d/oracle-xe configure' as the root user to configure the database." exit 0 fi $SU -s /bin/bash $ORACLE_OWNER -c "$LSNR status" RETVAL=$? } configure_with_user_inputs() { case "$1" in start) if [ "$0" != "/etc/init.d/oracle-xe" ] then if test -f "$CONFIGURATION" then if test "$ORACLE_DBENABLED" != "true" then exit 0 fi else echo "Oracle Database 11g Express Edition is not configured. You must run '/etc/init.d/oracle-xe configure' as the root user to configure the database." exit 0 fi fi start ;; configure) configure ;; stop) stop ;; restart|reload|force-reload) stop start RETVAL=$? ;; status) dostatus ;; enable) if test -f "$CONFIGURATION" then ORACLE_DBENABLED=true write_sysconfig else echo "Oracle Database 11g Express Edition is not configured. You must run '/etc/init.d/oracle-xe configure' as the root user to configure the database." exit 0 fi ;; disable) if test -f "$CONFIGURATION" then ORACLE_DBENABLED=false write_sysconfig else echo "Oracle Database 11g Express Edition is not configured. You must run '/etc/init.d/oracle-xe configure' as the root user to configure the database." exit 0 fi ;; *) echo $"Usage: $0 {start|stop|restart|force-reload|configure|status|enable|disable}" exit 1 esac } readFromResponseFile() { HTTP_PORT=`sed '/^\#/d' $1 | grep -w ^ORACLE_HTTP_PORT | tail -n -1 | cut -d "=" -f2- | sed 's/^[[:space:]]*//;s/[[:space:]]*$//'` LISTENER_PORT=`sed '/^\#/d' $1 | grep -w ^ORACLE_LISTENER_PORT | tail -n -1 | cut -d "=" -f2- | sed 's/^[[:space:]]*//;s/[[:space:]]*$//'` PASSWORD=`sed '/^\#/d' $1 | grep -w ^ORACLE_PASSWORD | tail -n -1 | cut -d "=" -f2- | sed 's/^[[:space:]]*//;s/[[:space:]]*$//'` CONFIRM_PASSWORD=`sed '/^\#/d' $1 | grep -w ^ORACLE_CONFIRM_PASSWORD | tail -n -1 | cut -d "=" -f2- | sed 's/^[[:space:]]*//;s/[[:space:]]*$//'` ORACLE_DBENABLE=`sed '/^\#/d' $1 | grep -w ^ORACLE_DBENABLE | tail -n -1 | cut -d "=" -f2- | sed 's/^[[:space:]]*//;s/[[:space:]]*$//'` RESTOREUMASK=$(umask) while : ;do umask 0077 MYTEMPFILE="${TMPDIR:-/tmp}/$(basename $0).$$.$(date +%s)" echo $HTTP_PORT > $MYTEMPFILE echo $LISTENER_PORT >> $MYTEMPFILE echo $PASSWORD >> $MYTEMPFILE echo $CONFIRM_PASSWORD >> $MYTEMPFILE echo $ORACLE_DBENABLE >> $MYTEMPFILE break done umask "$RESTOREUMASK" } configure_with_responsefile_values() { RESPONSEFILE=`echo $1 | awk -F"=" '{print $2}'` if [ -z $RESPONSEFILE ];then echo "Please provide a valid responseFile" exit 1 fi if [ X`ls $RESPONSEFILE` = X ] then echo $RESPONSEFILE does not exists exit 1 fi if [ `stat -c "%a" $RESPONSEFILE` -lt 400 ]; then echo "$RESPONSEFILE exists but is not readable" else readFromResponseFile $RESPONSEFILE # exit RETVAL=$? if [ $RETVAL -eq 0 ];then configure_ask $MYTEMPFILE < $MYTEMPFILE trap "rm -fr $MYTEMPFILE" exit configure_perform CONFIGURE_RUN=true write_sysconfig # echo To access the Database Home Page go to \"http://127.0.0.1:$HTTP_PORT/apex\" else echo "Please check the responseFile for required variables" exit 1 fi fi } case "$#" in "1") configure_with_user_inputs $1 ;; "2") if test -f "$CONFIGURATION" then echo "Oracle Database 11g Express Edition is already configured" exit 1 fi case "$2" in responseFile=*) ;; *) echo "Usage: $0 $1 responseFile=<responseFile location>" exit 1 esac configure_with_responsefile_values $2 ;; *) echo $"Usage: $0 {start|stop|restart|force-reload|configure|status|enable|disable}" exit 1 ;; esac
View Attachment As Raw
Actions:
View
Attachments on
bug 8723
: 3392