Warum Export in FIFO-Datei ?

Hallo,

ich schaue mir gerade die ganzen Scripte an die auf unseren Servern liegen (seit kurzem kann ich die Dinger auch einigermaßen lesen…).

bei einem export-Script wird ein FIFO-File angelegt und das wird dann bei EXP als file angegeben.
exp userid=${CONNECT_STRING} file=${ORACLE_SID}_${METHOD}_exp.p log=${LOG_FILE} \
.
.

Das ganze wird komprimiert und dabei dann in das eigentliche dmp-File geschoben/umbenannt

makefifo () {

cd ${DESTINATION_PATH}
[-p ${ORACLE_SID}_${METHOD}_exp.p] && rm -f ${ORACLE_SID}_${METHOD}_exp.p

mkfifo ${ORACLE_SID}_${METHOD}_exp.p
if [$? -ne 0]; then
ExitProc 10 „Kann Named Pipe nicht erzeugen …“
exit
fi

compress -f $EXP_FILE &
}

Was wird damit erreicht ?

und noch eine Frage, die Variable CONNECT_STRING enthält ja nur ("/") wie funktioniert das ?funktioniert das nach dem gleichen Prinzip das man sich ja auch mit sqlplus ‚/ as sysdba‘ anmelden kann ?

Grüße

Chris

Was wird damit erreicht ?

Bei älteren Betriebsystem(BS) ist die maximale Dateigrösse 2GB, wenn der OracleDump grösser wird als 2GB dann bricht das BS ab. Um nun zu verhindern, dass die Datei grösser wird als 2GB kann man in eine NamedPipe exportieren und dann komprimieren.
Da sich OracleExports sehr gut komprimieren lassen kannst du hier einen sehr grossen Dump exportieren ohne das du an die BS- Dateigrössengrenze kommst.

Hallo Frank,

danke dir für die Antwort, noch eine Frage, ist eine Pipe eine Art Swapspace der den Dump erst einmal aufnimmt und dann als komplettsatz komprimiert oder wird on the fly in die Datei geschrieben und währenddessen direkt komprimiert ?

Grüße

Chris

Soweit ich weiss wird die Named Pipe on the fly geschreiben und gelesen. Ansonsten würdest du wieder an die maximale Dateigrösse stossen.

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]