diff options
Diffstat (limited to 'dev-db/oracle-xe/files/oracle_configure.sh')
-rw-r--r-- | dev-db/oracle-xe/files/oracle_configure.sh | 329 |
1 files changed, 329 insertions, 0 deletions
diff --git a/dev-db/oracle-xe/files/oracle_configure.sh b/dev-db/oracle-xe/files/oracle_configure.sh new file mode 100644 index 0000000..c246036 --- /dev/null +++ b/dev-db/oracle-xe/files/oracle_configure.sh @@ -0,0 +1,329 @@ +#!/bin/bash +# +# +# chkconfig: 2345 80 05 +# description: This is a program that is responsible for taking care of +# configuring the Oracle Database 10g Express Edition and its associated +# services. +# +# processname: oracle-xe +# config: /etc/conf.d/oracle-xe +# +# change log: +# svaggu - creation 28-Sep-2005 + +ORACLE_HOME=/usr/lib/oracle/xe/app/oracle/product/10.2.0/server +ORACLE_OWNER=oraclexe +ORACLE_GROUP=dba +ORACLE_SID=XE +LSNR=$ORACLE_HOME/bin/lsnrctl +SQLPLUS=$ORACLE_HOME/bin/sqlplus +SU=/bin/su +export ORACLE_HOME +export ORACLE_SID +export ORACLE_OWNER +export ORACLE_GROUP +export PATH=$ORACLE_HOME/bin:$PATH +LOG="$ORACLE_HOME_LISTNER/listener.log" + +export LC_ALL=C + +if [ $(id -u) != "0" ] +then + echo "You must be root to run the configure script. Login as root and then run the +configure script." + exit 1 +fi + +# +# write_sysconfig() +# +# Writes the system configuration +# +write_sysconfig() +{ + cat >/etc/conf.d/oracle-xe <<EOF + +#This is a configuration file for automatic starting of the Oracle +#Database and listener at system startup.It is generated By running +#'/usr/lib/oracle/xe/app/oracle/product/10.2.0/server/bin/oracle_configure.sh' +#Please use that method to modify this file + +# LISTENER_PORT: +LISTENER_PORT=${LISTENER_PORT} + +# HTTP_PORT +HTTP_PORT=${HTTP_PORT} + +#Configuration +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 + + sed -i "s/%port%/$LISTENER_PORT/g" $ORACLE_HOME/network/admin/tnsnames.ora + sed -i "s/%hostname%/`hostname`/g" $ORACLE_HOME/network/admin/tnsnames.ora + + sed -i "s/%httpport%/$HTTP_PORT/g" $ORACLE_HOME/config/scripts/postDBCreation.sql + sed -i "s/%FRA_DIR%/\/usr\/lib\/oracle\/xe\/app\/oracle\/flash_recovery_area/g" $ORACLE_HOME/config/scripts/postDBCreation.sql + + 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 + + # SGA and PGA Voodoo + TM=`cat /proc/meminfo | grep '^MemTotal' | awk '{print $2}'` + TM=`echo 0.40 \* $TM | bc | sed "s/\..*//"` + TMSP=`echo $TM-40960 | bc` + sga=`echo 0.75 \* $TMSP \* 1024 | bc | sed "s/\..*//"` + pga=`echo 0.25 \* $TMSP \* 1024 | bc | sed "s/\..*//"` + + if [ $sga -lt 146800640 ]; then + sga=146800640 + fi + + if [ $pga -lt 16777216 ]; then + pga=16777216 + fi + + sed -i "s/%sga_target%/$sga/g" $ORACLE_HOME/config/scripts/init.ora + sed -i "s/%pga_aggregate_target%/$pga/g" $ORACLE_HOME/config/scripts/init.ora + + sed -i "s/%sga_target%/$sga/g" $ORACLE_HOME/config/scripts/initXETemp.ora + sed -i "s/%pga_aggregate_target%/$pga/g" $ORACLE_HOME/config/scripts/initXETemp.ora + + #sed -i "s/%httpport%/$HTTP_PORT/g" /usr/share/applications/oraclexe-GotoDBHome.desktop + #sed -i "s/%httpport%/$HTTP_PORT/g" /usr/share/applications/oraclexe-ReadOnlineHelp.desktop + + + homedir=`echo $HOME` + if [ "$homedir" == "/root" ] + then + homedir=`sh -c "echo ~$USER"` + fi + + if [ -f $homedir/.gnome-desktop/oraclexe-GettingStartedDesktop.desktop ] + then + chown $ORACLE_OWNER:$ORACLE_GROUP $homedir/.gnome-desktop/oraclexe-GettingStartedDesktop.desktop + chmod 664 $homedir/.gnome-desktop/oraclexe-GettingStartedDesktop.desktop + fi + if [ -f $homedir/Desktop/oraclexe-GettingStartedDesktop.desktop ] + then + chown $ORACLE_OWNER:$ORACLE_GROUP $homedir/Desktop/oraclexe-GettingStartedDesktop.desktop + chmod 664 $homedir/Desktop/oraclexe-GettingStartedDesktop.desktop + fi + + mkdir /usr/lib/oracle/xe/oradata/XE -p + chmod -R 640 /usr/lib/oracle/xe/oradata/XE + chmod 750 /usr/lib/oracle/xe/oradata/XE + chown -R $ORACLE_OWNER:$ORACLE_GROUP /usr/lib/oracle + + chown -R root:$ORACLE_GROUP $ORACLE_HOME/bin + chmod -R 755 $ORACLE_HOME/bin + chmod 6751 $ORACLE_HOME/bin/oracle + + + if [ -f /etc/oratab ] + then + echo "XE:$ORACLE_HOME:N" >> /etc/oratab + else + echo "XE:$ORACLE_HOME:N" >> /etc/oratab + chown $ORACLE_OWNER:$ORACLE_GROUP /etc/oratab + chmod 644 /etc/oratab + fi + + + echo Configuring Database... + + SQLPLUS="$ORACLE_HOME/bin/sqlplus" + $SU $ORACLE_OWNER -c "$ORACLE_HOME/config/scripts/XE.sh" + + echo "alter user flows_020100 identified by \"$ORACLE_PASSWORD\";" | $SU $ORACLE_OWNER -c "$SQLPLUS -s / as sysdba" + echo "alter user sys identified by \"$ORACLE_PASSWORD\";" | $SU $ORACLE_OWNER -c "$SQLPLUS -s / as sysdba" + echo "alter user system identified by \"$ORACLE_PASSWORD\";" | $SU $ORACLE_OWNER -c "$SQLPLUS -s / as sysdba" + echo "alter user flows_files identified by \"$ORACLE_PASSWORD\";" | $SU $ORACLE_OWNER -c "$SQLPLUS -s / as sysdba" + echo "alter user anonymous identified by \"$ORACLE_PASSWORD\";" | $SU $ORACLE_OWNER -c "$SQLPLUS -s / as sysdba" + + $SU $ORACLE_OWNER -c "$ORACLE_HOME/bin/sqlplus -s /nolog @$ORACLE_HOME/config/scripts/stopdb.sql" + + chmod -R 640 /usr/lib/oracle/xe/oradata/XE + chmod 750 /usr/lib/oracle/xe/oradata/XE + chown -R oraclexe:dba /usr/lib/oracle/xe + rm -fr $ORACLE_HOME/config/seeddb + + echo "Done." + echo + echo "To start oracle-xe, run:" + echo "/etc/init.d/oracle-xe start" + echo "and point your Browser to:" + echo "http://localhost:$HTTP_PORT/apex/" + echo + echo "Log in using username system and the password you supplied..." + echo + +} + +# +#configure_ask() +# +# Ask configuration questions,setting the variables. +# + +configure_ask() +{ + cat <<EOF + +Oracle Database 10g Express Edition Configuration +------------------------------------------------- +This will configure on-boot properties of Oracle Database 10g 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 HTML DB [8080]: + read LINE + if [ -z $LINE ] + then + LINE=8080 + fi + port=`netstat -n --tcp --listen | grep :$LINE | awk '{print $4}' | cut -d':' -f2` + if [ "$port" = "$LINE" ] + then + echo Port $port appears to be in use by another application.\ + Please specify a different port. + else + break; + fi + done + + case "$LINE" in + "") + break + ;; + *[^0-9]*) + echo "Invalid http port: $LINE" >&2 + ;; + *) + HTTP_PORT=$LINE + break + ;; + esac + done + + #get the listener port value + while : + do + echo + 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 '{print $4}' | cut -d':' -f2` + if [ "$port" = "$LINE" ] + then + echo Port $port appears to be in use by another application.\ + Please specify a different port. + else + break; + fi + done + + case "$LINE" in + "") + break + ;; + *[^0-9]*) + echo "Invalid port: $LINE" >&2 + ;; + *) + LISTENER_PORT=$LINE + break + ;; + 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, SYSTEM and FLOWS_020100. Oracle recommends +the use of different passwords for each database account. This can be done +after initial configuration:" + while [ 1 ] + do + stty -echo + read LINE + while [ -z $LINE ] + do + echo + echo -n "Password can't be null. Enter password:" + read LINE + done + if [ -n $LINE ] + then + echo + echo -n "Confirm the password:" + read LINE1 + echo + if [ "$LINE" != "$LINE1" ]; + then + echo + echo -n "Passwords do not match. Enter the password:" + else + break; + fi + fi + done + + case "$LINE" in + + *[^a-zA-Z0-9]*) + echo "Invalid password: $LINE" >&2 + ;; + *) + stty echo + ORACLE_PASSWORD=$LINE + break + ;; + esac + done +} + +configure() +{ + configure_ask + configure_perform + CONFIGURE_RUN=true + write_sysconfig +} + +configure |