spacewalk/setup/lib/Spacewalk/Setup.pm | 5 -
spacewalk/setup/share/oracle/upgrade-db-10g.sh | 72 -------------------------
spacewalk/setup/share/oracle/upgrade-db.sh | 34 +++++++----
spacewalk/setup/spacewalk-setup.spec | 1
4 files changed, 24 insertions(+), 88 deletions(-)
New commits:
commit c9910bf121159b31e72be6e9b3d397f89dcc3f58
Author: Milan Zazrivec <mzazrivec(a)redhat.com>
Date: Wed Sep 15 14:56:14 2010 +0200
unify embedded database upgrades
There's no point in forcing Satellite customers to have to choose
embedded database upgrade scenario. We're able to detect the correct
scenario automatically.
diff --git a/spacewalk/setup/lib/Spacewalk/Setup.pm
b/spacewalk/setup/lib/Spacewalk/Setup.pm
index 408b5d6..934ae8a 100644
--- a/spacewalk/setup/lib/Spacewalk/Setup.pm
+++ b/spacewalk/setup/lib/Spacewalk/Setup.pm
@@ -969,9 +969,6 @@ sub oracle_setup_embedded_db {
if ($opts->{'upgrade'}) {
- my $upgrade_script = "upgrade-db-10g.sh";
- need_oracle_9i_10g_upgrade() and $upgrade_script = "upgrade-db.sh";
-
printf loc(<<EOQ, DB_UPGRADE_LOG_FILE);
** Database: Upgrading the database server to latest Oracle 10g:
** Database: This is a long process that is logged in:
@@ -983,7 +980,7 @@ EOQ
-err_message => "Could not upgrade database.\n",
-err_code => 15,
-system_opts => ['/sbin/runuser', 'oracle',
'-c',
- SHARED_DIR . '/oracle/' . $upgrade_script .
+ SHARED_DIR . '/oracle/upgrade-db.sh' .
" --db $answers->{'db-name'}" .
" --user
$answers->{'db-user'}"]);
diff --git a/spacewalk/setup/share/oracle/upgrade-db-10g.sh
b/spacewalk/setup/share/oracle/upgrade-db-10g.sh
deleted file mode 100644
index 1bbee9d..0000000
--- a/spacewalk/setup/share/oracle/upgrade-db-10g.sh
+++ /dev/null
@@ -1,72 +0,0 @@
-#!/bin/sh
-# Upgrades RHN embedded database at mountpoint /rhnsat (10g ver 10.2.0.3 -> 10g ver.
10.2.0.4)
-#
-# Copyright (c) 2009 Red Hat, Inc.
-#
-# This software is licensed to you under the GNU General Public License,
-# version 2 (GPLv2). There is NO WARRANTY for this software, express or
-# implied, including the implied warranties of MERCHANTABILITY or FITNESS
-# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
-# along with this software; if not, see
-#
http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
-#
-# Red Hat trademarks are not licensed under GPLv2. No permission is
-# granted to use or replicate Red Hat trademarks that are incorporated
-# in this software or its documentation.
-
-set -x
-
-# exit if anything fails
-set -e
-
-DB_NAME="rhnsat"
-DB_USER="rhnsat"
-
-if [ ${#} -gt 0 ]; then
- while [ -n "$1" ] ; do
- case $1 in
- -d | --db | --database )
- shift
- DB_NAME=$1
- ;;
- -u | --user* )
- shift
- DB_USER=$1
- ;;
- * )
- exit -1
- ;;
- esac
- shift
- done
-fi
-
-# set oracle environment to embedded server
-ORAENV_ASK=NO
-ORACLE_BASE=/opt/apps/oracle
-ORACLE_ADMIN_DIR=$ORACLE_BASE/admin/10.2.0
-ORACLE_CONFIG_DIR=$ORACLE_BASE/config/10.2.0
-
-# change env to rhnsat instance
-export ORACLE_SID=$DB_NAME
-. oraenv
-
-# If the record for satellite database exists, substitute it with new value.
-# Otherwise create a new record.
-if grep -q "^$ORACLE_SID:.*$" /etc/oratab; then
- oratab=$(sed "s;^$ORACLE_SID:.*$;$ORACLE_SID:$ORACLE_HOME:Y;" /etc/oratab)
- echo "$oratab" > /etc/oratab
-else
- echo "$ORACLE_SID:$ORACLE_HOME:Y" >> /etc/oratab
-fi
-
-# upgrade database
-UPGRADE_TMPL=$ORACLE_ADMIN_DIR/embedded-upgradedb-10g.tmpl
-m4 $UPGRADE_TMPL -I$ORACLE_ADMIN_DIR \
- --define RHNORA_DBNAME=$ORACLE_SID \
- --define RHNORA_LOG_PATH=/rhnsat/admin/rhnsat/logs \
- --define RHNORA_DATA_PATH=/rhnsat/data/rhnsat \
- --define RHNORA_DB_USER=$DB_USER \
- | $ORACLE_HOME/bin/sqlplus /nolog
-
-set +x
diff --git a/spacewalk/setup/share/oracle/upgrade-db.sh
b/spacewalk/setup/share/oracle/upgrade-db.sh
index bd0f291..e3e8eea 100644
--- a/spacewalk/setup/share/oracle/upgrade-db.sh
+++ b/spacewalk/setup/share/oracle/upgrade-db.sh
@@ -41,6 +41,12 @@ if [ ${#} -gt 0 ]; then
done
fi
+if [ -r "$(dbhome embedded)/dbs/spfilerhnsat.ora" ]; then
+ MAJOR_DB_UPGRADE=0
+else
+ MAJOR_DB_UPGRADE=1
+fi
+
# set oracle environment to embedded server
ORAENV_ASK=NO
ORACLE_SID=embedded
@@ -59,6 +65,8 @@ export ORACLE_SID=$DB_NAME
# If the record for satellite database exists, substitute it with new value.
# Otherwise create a new record.
if grep -q "^$ORACLE_SID:.*$" /etc/oratab; then
+ # We cannot do in-place edit, since we're running under oracle user and
+ # do not have write access to /etc
oratab=$(sed "s;^$ORACLE_SID:.*$;$ORACLE_SID:$ORACLE_HOME:Y;" /etc/oratab)
echo "$oratab" > /etc/oratab
else
@@ -73,13 +81,13 @@ LISTENER_ORA=network/admin/listener.ora
sed "s|\(ORACLE_HOME=.*\)|(ORACLE_HOME=$ORACLE_HOME)|" \
$ORACLE_9I_HOME/$LISTENER_ORA >$ORACLE_HOME/$LISTENER_ORA
-
-# modify db init files
-cp -a $ORACLE_CONFIG_9I_DIR/* $ORACLE_CONFIG_DIR/
-UPGRADE_PFILE=$ORACLE_CONFIG_DIR/upgrade-init$ORACLE_SID.ora
-cat $ORACLE_ADMIN_DIR/init-params.ora >$UPGRADE_PFILE
-grep --text -E -f - $ORACLE_CONFIG_9I_DIR/spfile$ORACLE_SID.ora \
- >>$UPGRADE_PFILE <<EOPATTERNS
+# for 9i -> 10g upgrades, modify db init files
+if [ $MAJOR_DB_UPGRADE -gt 0 ]; then
+ cp -a $ORACLE_CONFIG_9I_DIR/* $ORACLE_CONFIG_DIR/
+ UPGRADE_PFILE=$ORACLE_CONFIG_DIR/upgrade-init$ORACLE_SID.ora
+ cat $ORACLE_ADMIN_DIR/init-params.ora >$UPGRADE_PFILE
+ grep --text -E -f - $ORACLE_CONFIG_9I_DIR/spfile$ORACLE_SID.ora \
+ >>$UPGRADE_PFILE <<EOPATTERNS
audit_file_dest
background_dump_dest
control_files
@@ -89,11 +97,16 @@ db_name
instance_name
user_dump_dest
EOPATTERNS
-echo "compatible=10.2.0.4.0" >>$UPGRADE_PFILE
+ echo "compatible=10.2.0.4.0" >>$UPGRADE_PFILE
+fi
+# upgrade the database
+if [ $MAJOR_DB_UPGRADE -gt 0 ]; then
+ UPGRADE_TMPL=$ORACLE_ADMIN_DIR/embedded-upgradedb.tmpl
+else
+ UPGRADE_TMPL=$ORACLE_ADMIN_DIR/embedded-upgradedb-10g.tmpl
+fi
-# upgrade database
-UPGRADE_TMPL=$ORACLE_ADMIN_DIR/embedded-upgradedb.tmpl
m4 $UPGRADE_TMPL -I$ORACLE_ADMIN_DIR \
--define RHNORA_DBNAME=$ORACLE_SID \
--define RHNORA_LOG_PATH=/rhnsat/admin/rhnsat/logs \
@@ -102,4 +115,3 @@ m4 $UPGRADE_TMPL -I$ORACLE_ADMIN_DIR \
| $ORACLE_HOME/bin/sqlplus /nolog
set +x
-
diff --git a/spacewalk/setup/spacewalk-setup.spec b/spacewalk/setup/spacewalk-setup.spec
index 89aa2d4..e75a16a 100644
--- a/spacewalk/setup/spacewalk-setup.spec
+++ b/spacewalk/setup/spacewalk-setup.spec
@@ -77,7 +77,6 @@ install -d -m 755 %{buildroot}/%{_datadir}/spacewalk/setup/oracle/
install -m 0755 share/oracle/install-db.sh
%{buildroot}/%{_datadir}/spacewalk/setup/oracle
install -m 0755 share/oracle/remove-db.sh
%{buildroot}/%{_datadir}/spacewalk/setup/oracle
install -m 0755 share/oracle/upgrade-db.sh
%{buildroot}/%{_datadir}/spacewalk/setup/oracle
-install -m 0755 share/oracle/upgrade-db-10g.sh
%{buildroot}/%{_datadir}/spacewalk/setup/oracle
# create a directory for misc. Spacewalk things
install -d -m 755 %{buildroot}/%{_var}/spacewalk