Oracle 9i Dump unter anderen Tablespace

ioneshock

Grünschnabel
Hallo zusammen,

ich habe mit dem Export-Programm (exp.exe) unter einem 9i-Client (windows-XP) einen Dump erstellt (Nutzerexport, ohne Berechtigungen). Dieser lässt sich auch auf der Zieldatenbank problemlos einspielen, solange der gleiche Tablespacename verwendet wird.
Bei verschiedenen Bezeichnungen des Tablespace, wird eine Fehlerbezeichnung ausgegeben.
Nun ist meine Frage: Wie spiele ich einen Dump auf einem anderen Tablespace ein?

Schon einmal vielen Dank für die Antwort :)

Grüße Stephan
 
Ich glaube es gibt leider keine Möglichkeit direkt einen anderen Tablespace anzugeben.
Eine Möglichkeit wäre aber alle Segmente (Tabellen, Indizes) die in diesem Tablespace waren,
schon vor dem Import in der Datenbank anzulegen. Natürlich in dem Tablespace in dem sie später
auch liegen sollen. Wichtig ist, dass sie im selben Schema liegen wie früher.
Beim IMPORT wird er dann meckern, dass die Segmente bereits existieren. Mit dem Parameter
IGNORE=Y wird er die vorhandenen Tabellen mit den Daten aus dem Export füllen.

Sowas macht man immer dann, wenn man z.B. die Storage Parameter einer Tabelle ändern will.
 
Das Problem mit den Tablespaces hast Du nur dann, wenn per STORAGE-Klausel explizit angegeben wird, in welchen Tablespace die Tabellen sollen (oder zum Beispiel in ihnen enthaltene BLOBs). Ist das nicht der Fall, werden sie einfach in den Default Tablespace des entsprechenden Users abgelegt. Da ein Dump-File im Grunde nichts weiter als eine grosse Textdatei ist, kannst Du mittels sed (Stream Editor, gibts auch fuer Windows) oder einem Texteditor Deiner Wahl (bei hinreichend kleinen Dumps, bei groesseren wird das unangenehm) einfach den unpassenden Tablespace mit dem richtigen ersetzen. Etwa so:

PHP:
sed -r "s/TSORIG/TSNEW/g" dump_file.dmp > dump_file_fixed.dmp

Der regulaere Ausdruck muss ggf. angepasst werden, um unbeabsichtigte Aenderungen (wenn beispielsweise der Name des Tablespaces auch in Spaltennamen oder sogar Werten auftauchen kann) zu vermeiden.
 
Danke für die Hilfe :)

Die erste Lösung hat gut geklappt :) gab nu ein paar Probleme mit den Triggern. Die konnten aber nachträglich neu eingespielt werden.

Die zweite Lösung werde ich aber auf jeden Fall einmal ausprobieren.

Danke vom Stephan
 
Zurück