dbimport: Unterschied zwischen den Versionen

Aus Mikiwiki
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
 
(2 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
Der [[Informix]]-Befehl <b>dbimport</b> kann mit [[dbexport]] entladene Informix-Daten auf einem anderen Rechner einspielen. Der Befehl wird durch den Benutzer "informix" aufgerufen.
Der [[Informix-Online]]-Befehl <b>dbimport</b> kann mit [[dbexport]] aus einer Informix-Datenbank entladene Daten in eine andere Informix-Datenbank einspielen. Der Befehl wird durch den Benutzer "informix" aufgerufen.


== Verwendung ==
== Verwendung ==
Zeile 17: Zeile 17:
   $ <b>dbaccess - -</b>
   $ <b>dbaccess - -</b>
   > <b>drop database sisis;</b>
   > <b>drop database sisis;</b>
   Ctrl C
   CTRL+C


4. Da nicht genug Platz für die Daten der ABG vorhanden war, musste ein zusätzlicher chunk angelegt und zum bereits bestehenden Dbspace "sisisdbs" hinzugefügt werden. Die Grösse wird dabei in KB angegeben.
4. Da nicht genug Platz für die Daten der ABG vorhanden war, musste ein zusätzlicher chunk angelegt und zum bereits bestehenden Dbspace "sisisdbs" hinzugefügt werden. Die Grösse wird dabei in KB angegeben.

Aktuelle Version vom 28. Januar 2009, 22:11 Uhr

Der Informix-Online-Befehl dbimport kann mit dbexport aus einer Informix-Datenbank entladene Daten in eine andere Informix-Datenbank einspielen. Der Befehl wird durch den Benutzer "informix" aufgerufen.

Verwendung

Vorgehen im Fall des Testrechners der ABG

1. Sichern der Datenbank.

 # su - informix
 $ ontape -s -L 0

2. Der Informixserver muss laufen.

3. Löschen der vorhandenen Datenbank "sisis".

 # su - informix
 $ dbaccess - -
 > drop database sisis;
 CTRL+C

4. Da nicht genug Platz für die Daten der ABG vorhanden war, musste ein zusätzlicher chunk angelegt und zum bereits bestehenden Dbspace "sisisdbs" hinzugefügt werden. Die Grösse wird dabei in KB angegeben.

 # su - informix
 $ cd /home/informix
 $ cat /dev/null > sisisdbs2
 $ chmod 660 sisisdbs2
 $ onspaces -a sisisdbs -p /home/informix/sisisdbs -o 0 -s 2000000

5. Danach wird die Umgebung gesetzt und die unter "/home/sisis" stehenden dbexport-Daten (die Dateien "sisis.exp" und "dbexport.out") werden mittels dbimport in die neu anzulegende Datenbank "sisis" im Dbspace "sisisdbs" geladen.

 # su - sisis
 # DBMONEY=.; export DBMONEY
 # DBDATE=DMY4.; export DBDATE
 # cd /home/sisis
 # dbimport -d sisisdbs sisis

6. Danach müssen die vorhandenen SQL-Dateien mit dem Skript "/home/sisis/sc/patch.sh" für den Dbspace "sisisdbs" angepasst werden.

 $ cd /home/sisis/sc
 $ vi patch.sh
 HOMESISIS=`egrep "sisis:" /etc/passwd | awk -F\: ' { print $6; } '`
 #HOMESISIS=$SISISHOME
 $ ./patch.sh sisisdbs

7. Sichern der Datenbank.

 # su - informix
 $ ontape -s -L 0

8. Es waren zwei "tapes" nötig - die Datei "dbsich" musste zwischendurch weggesichert werden.

9. Zum Schluss muss unter Informix-OnLine WGS 7.20 das Skript "/opt/lib/sisis/bin/loadBLOB.sh" ausgeführt werden. Die Anleitung zur Verwendung des Skripts steht im Skript selber:

#!/bin/sh
#
# $Id: loadBLOB.sh,v 1.1.2.4 2000/07/21 15:52:28 baj Exp $

# co guru@Sisis.de, 1999

# the Informix tool dbimport has a bug which damages all BLOBS
# this tool allows you to re-load the tables from the unload
# files in the dbimport area

cat << EOF-EOF-EOF

# IMPORTANT
# the script assumes that:
# 1.  you're in the dbimport area itself as current working dir,
#     e.g. in ..../$DATABASE.exp
# 2.  you have the SQL files for creating tables below
#     \$SISISHOME/sql/siskis/*.sql and they are prepared
#     for right DBSPACE and EXTEND values
# 3.  the SQL files in \$SISISHOME/sql/siskis/*.sql must have an ";" on
#     one line as the terminator of the create-table statement; the
#     semicolon is used to split the SQL file into two parts - one for
#     creating the table and one for creating the index;
# 4.  you should have a level-0 backup of your server too (as usual)

EOF-EOF-EOF

if [ "$DATABASE" = "" ]; then
  DATABASE=${1:-'sisis'} export DATABASE
fi
INFORMIXSERVER=${INFORMIXSERVER:-'sisis'} export INFORMIXSERVER

printf "\nBLOB-loader for SISIS-sunRISE version 1.0\n\n"
printf "... pre-selected database \"${DATABASE}\"\n"
printf "... pre-selected server   \"${INFORMIXSERVER}\"\n"
printf "... you should be in      \"..../${DATABASE}.exp\" as current dir\n"
printf "\n"
printf "    We'll DROP all TABLE containing BLOBS and reload them\n"
printf "    from a dbimport-area -- is this what you really want to do?\n\n"
printf "... Let's start and hit ENTER to CONTINUE or interrupt "
read x
printf "    Anyway: LAST chance to interrupt, sleeping 3 seconds "
printf "." ; sleep 1
printf "." ; sleep 1
printf "." ; sleep 1
printf "\n... now scribbling in database (you were warned).\n"

# set the environment

SISISROOT=`pkgparam sisisbase SISISROOT` export SISISROOT
      DBS=${DBS:-`pkgparam sisisbase DBS`}

. $SISISROOT/etc/$DBS.rc

egrep "^sisis:" /etc/passwd > /dev/null 2>&1
if [ $? -ne 0 ]; then
    printf "\nPANIC: no user \"sisis\" in /etc/passwd -- exit.\n"
    exit 1
fi

if [ "$SISISHOME" = "" ]; then
  SISISHOME=`egrep "^sisis:" /etc/passwd | awk -F\: ' { print $6; } '`
fi

for tabName in       \
         koe_daten   \
         koe_kette   \
         per_daten   \
         per_kette   \
         pool_daten  \
         pool_kette  \
         swd_daten   \
         swd_kette   \
         sys_daten   \
         sys_kette   \
         titel_daten \
         titel_kette
    do
    
    rm -f /tmp/line.$$ /tmp/creat.$$ /tmp/index.$$ /tmp/error.$$

    # check for db-schema SQL file
    test -f $DATABASE.sql || {
        printf "\nPANIC: no file $DATABASE.sql in current dir -- exit.\n"
        exit 1
    }

    # check for SQL file to re-creat table
    test -f $SISISHOME/sql/sikis/$tabName.sql || {
        printf \
	"\nPANIC: file $SISISHOME/sql/sikis/$tabName.sql not found -- exit.\n"
        exit 1
    }

    ed -s $DATABASE.sql << EOF-EOF-EOF > /dev/null
    1
    /TABLE.*$tabName /
    +,+w /tmp/line.$$
    q
    EOF-EOF-EOF

    file=`cut -f 6 -d ' ' /tmp/line.$$`

    test -f $file || {
        printf "\nPANIC: file $file not found -- exit.\n"
        exit 1
    }

    printf "... running for table $tabName: "
    printf "drop table $tabName;\n" | \
      $INFORMIXDIR/bin/dbaccess $DATABASE >/tmp/error.$$ 2>&1

    printf " droped "

    ed -s $SISISHOME/sql/sikis/$tabName.sql << EOF-EOF-EOF > /dev/null
    1
    /^;/
    1,.w /tmp/creat.$$
    +,\$w /tmp/index.$$
    q
    EOF-EOF-EOF

    $INFORMIXDIR/bin/dbaccess $DATABASE < /tmp/creat.$$ > /tmp/error.$$ 2>&1

    test $? -ne 0 && {
        printf "\nPANIC: sql error -- exit.\n"
        tail /tmp/error.$$
        exit
    }

    printf "load from $file insert into $tabName;\n" | \
      $INFORMIXDIR/bin/dbaccess $DATABASE >/tmp/error.$$ 2>&1

    test $? -ne 0 && {
        printf "\nPANIC: sql error -- exit.\n"
        tail /tmp/error.$$
        exit
    }

    printf " loaded "
    $INFORMIXDIR/bin/dbaccess $DATABASE < /tmp/index.$$ > /tmp/error.$$ 2>&1

    test $? -ne 0 && {
        printf "\nPANIC: sql error -- exit.\n"
        tail /tmp/error.$$
        exit
    }

    printf " indexes created\n"
    rm -f /tmp/line.$$ /tmp/creat.$$ /tmp/index.$$ /tmp/error.$$
    
    done