I managed it with the code below. Tweak it to suit your own requirements -
Note that you will have to change PASSWORD to something of your choosing
Code:
#!/bin/ksh
set -x
XE_LOG=/tmp/XEsilentinstall.log
touch ${XE_LOG}
chmod 0777 ${XE_LOG}
INSTALL_DIR=`pwd`
/usr/sbin/userdel -rf oracle
if [[ `grep ^dba /etc/group | wc -l` == 0 ]]
then
/usr/sbin/groupadd -g dba > ${XE_LOG}
fi
if [[ `grep ^oracle /etc/passwd | wc -l` == 0 ]]
then
/usr/sbin/useradd -g dba -G users -m -s /bin/ksh oracle >> ${XE_LOG}
chown oracle:dba /home/oracle/.profile >> ${XE_LOG}
chown oracle:dba /home/oracle/.bashrc >> ${XE_LOG}
cat >> /home/oracle/.profile << EOF
export ORACLE_SID=XE
export ORACLE_HOME=/usr/lib/oracle/xe/app/oracle/product/10.2.0/server
export PATH=$PATH:$ORACLE_HOME/bin
EOF
fi
su - oracle -l -c '/usr/lib/oracle/xe/app/oracle/product/10.2.0/server/bin/lsnrctl stop' >> ${XE_LOG}
rpm -ev oracle-xe-10.2.0.1-1.0 >> ${XE_LOG}
rm -rf /usr/lib/oracle >> ${XE_LOG}
rpm -ivh --nodeps /tmp/oracle-xe-10.2.0.1-1.0.i386.rpm >> ${XE_LOG}
rm /etc/default/oracle-xe >> ${XE_LOG}
rm /etc/oratab
cd /usr/lib/oracle/xe/app/oracle/product/10.2.0/server/dbs
cp -pf init.ora initXE.ora
cat >> /tmp/init.ora.sed << EOF
/^db_name=DEFAULT/i\db_name=XE
/^db_name=DEFAULT/d
/^shared_pool_size = 3500000/i\shared_pool_size = 70000000
/^shared_pool_size = 3500000/d
EOF
sed -f /tmp/init.ora.sed < init.ora > initXE.ora
echo ${INSTALL_DIR}
cd ${INSTALL_DIR}
cat > responsefile << EOF
8080
1521
PASSWORD
PASSWORD
n
EOF
chmod g+x oracle-xe
sh -x /usr/lib/oracle/xe/app/oracle/product/10.2.0/server/config/scripts/oracle-xe configure < responsefile >> ${XE_LOG}
rm -f responsefile
Once installed as root you can start it with
Code:
/etc/init.d/oracle-xe enable && /etc/init.d/oracle-xe start
or stop it with
Code:
/etc/init.d/oracle-xe stop && /etc/init.d/oracle-xe disable