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@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