Hinweis
Mit der Version 10g hat Oracle das neue Werkzeug Data Pump Export und Import verfügbar gemacht. Oracle empfiehlt, dass ab der Version 10g Data Pump für Export und Import verwendet werden sollen.
Es muss das (alte) Export / Import Werkzeug verwendet werden, wenn:
Sie wollen eine große Datenbank (unter Unix) exportieren!
Wenn Sie bereits eine Oracle 9i im Einsatz haben, können Sie hierfür den neuen Export Parameter FILESIZE im Zusammenhang mit dem Parameter FILE benutzen. In allen anderen Fällen lässt sich das Ganze am einfachsten mittels eines Shell Skriptes lösen.
Mit einer 9i Datenbank
Der Parameter FILESIZE definiert die maximale Größe einer Exportdatei. Ist diese erreicht, werden die weiteren Daten in eine neue Datei geschrieben. Die Dateinamen aller verwendbaren Dateien müssen dabei über den Parameter FILE angegeben werden. Dies ist ein kleiner Nachteil, denn d. h., Sie müssen vorher abschätzen wie viele Dateien der Export benötigen wird.
Tipp:
Die Größe eines gesamten Exports bestimmt sich größtenteils aus der Summe der Daten aller exportierten Tabellen.
Beispiel:
$ exp userid=system/manager full=y file=(exp_1.dmp,exp_2.dmp) filesize=2GB
Sie können die Dateigröße in Bytes, aber auch in KB, MB oder GB angeben.
Mit einem Unix Shell Skript
Bei Verwendung älterer Oracle Versionen muss man "selber" dafür sorgen, dass die Dateigröße einer Exportdatei ein bestimmtes Limit nicht überschreitet. Dieses Limit wird meist mit 2 GB definiert, wobei heute die meisten Betriebssystemversionen auch schon mit größeren Dateien umgehen können. Nichtsdestotrotz empfiehlt es sich, die Dateigröße immer "klein" zu halten, denn auch das Export und Import Utility haben bis zur Version 8.1.6 Probleme mit Dateien, die größer als 2 GB sind.
Das folgende (einfache) Shell Skript (ksh) soll Ihnen zeigen, wie man eine Unix Pipe dazu verwenden kann, um unser Ziel zu erreichen.
Beispiel:
#!/usr/bin/ksh
# some individual parameters
export ORACLE_SID=DEMO
export ORACLE_HOME=/opt/oracle/product/816
export EXPDIR=/opt/oracle/admin/${ORACLE_SID}/exp
### define export user and password
export DBUSER=system
export DBPWD=manager
# some global parameters
export ORACLE_TERM=vt100
export ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data
export NLS_LANG=AMERICAN_AMERICA.WE8ISO8859P1
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib
export PATH=/bin:/usr/bin:/etc:/usr/local/bin:.
export PATH=$PATH:/usr/ccs/bin:$ORACLE_HOME/bin
# ******** and now the real work ********
cd ${EXPDIR}
if [ $? -eq 0 ] ; then
# delete and recreate the pipe
test -e exp_pipe && rm exp_pipe
mknod exp_pipe p
# split export dumps > 2G to files named exp_${ORACLE_SID}aa,
*ab, *ac ...
# start in background !
split -b 1990m exp_pipe exp_${ORACLE_SID} &
# call export utility
exp userid=$DBUSER/$DBPWD full=y file=exp_pipe log=
exp_${ORACLE_SID}.log
else
echo "Export Directory ${EXPDIR} does not exist."
fi
# ********************************************
exit $?
#EOF
Bitte nehmen Sie mich in den Verteiler der monatlichen Tipps & Tricks auf.