Frank: Migration von Access nach Oracle

Beitrag lesen

Hi!!!

Oh, was für eine nette Aufgabe, da kann ich aus meiner aktuell kürzlichsten Tätigkeit erzählen.

Vorab eine Frage: um welche Version von Oracle handelt es sich?
7.3.x
8i
9i ?

In Oracle kann man mittels imp/exp sogenannte Dumps importieren, es handelt sich dabei (beim Dump) um eine sql-ähnliche Struktur, in der neben den eigentlichen Daten auch alle wichtigen Oracle-Daten drin.

Leider hat man jedoch mit Access nicht die Möglichkeit soetwas erzeugen. Schade.

Ich habe neulich zwei Möglichkeiten ausprobiert:

für Oracle9i gibt es eine Migration-Workbench, mit der man von verschiedenen anderen DB-Systemen (einzeln erhältliche Plug-Ins sei Dank) über Dialoge in Oracle (ab version 7.3.2 (not absolutely sure) und höher migrieren kann, die Versionsschwelle hängt mWn an einer bestimmten Dumpformatversion)... jedenfalls, man erwirbt diese Omwb von Oracle in irgendeiner Weise und dazu das Plugin für Access. Danach kann man mit etwas Zeitaufwand eine Access-Datenbank vollständig oracle-importfähig machen, Indizes;Constraints;Keys etc werden mit angelegt. Allerdings erzeugt dieses Omwb einige zusätzliche Objekte und man muß ziemlich herumfriemeln um ein vernünftiges Ergebnis zu bekommen. Ich habe es nicht geschafft, die DB in ein bestehendes Schema zu importieren. Aber funktionieren tutet es grundsätzlich.

Meine andere Methode war: die Tabellen aus Access per ODBC-Exportschnittstelle nach Oracle zu portieren, dabei haben sich aber mit jeder der o.g. Oracle Versionen Probleme gezeigt, nämlich alle Datenfelder waren plötzlich vom Typ VarChar2 und leer... das geschah unabhängig von der Wahl des DB-Treibers (MS ODBC für Oracle/Oracle ODBC Driver)
Außerdem konnte man direkt nach dem Export weder eine der Tabellen lesen noch hineinschreiben. Erst ein Extrahieren des Tabellen-SQLs in Oracle und ein Löschen der Tabelle und dann wieder die Erstellung der Tabelle mittels des SQLs über z.b. SQL+ Worksheet machte die Tabelle verfügbar. Darüber hinaus wurden keine Indizes, Keys, Constraints erzeugt.

Deswegen habe ich mehr oder minder beide Wege verworfen und mir mittels VBS, ADOX, ADO2.5 sql-scriptdateien aus meiner Datenbank erzeugt und die Daten als XML-Offline-Recordsets aus Access gezogen.
mittels SQL+ Worksheet von Oracle konnte man die sql-scripts (CREATE TABLE ...) hintereinander ausführen, dann mit dem 2. Batchscript die Indizes erzeugen und mit einem 3. alle benötigten Sequenzen anlegen.
Die Datenübername habe ich dann mittels vbs gemacht wobei ich die XML-Recordset eingelesen habe und durchlaufen habe... do until .eof usw....

Letzterer war der für mich und meinen Kunden beste Weg, zumal ich als "Abfallprodukt" dieses Vorganges jetzt auch ein unidirektionales (bald bidirektionales) Datenabgleichtool habe...

Ich hoffe, das hat dich etwas weiter gebracht.
Gruß, Frank

Überigens, zum Datenaustausch zwischen verschiedenen Oracle-Versionen klappt nicht ohne weiteres, man muß da gewisse goldene Regeln befolgen... ich schau mal in meinem Mail-Archiv nach, da stehen diese drin... kann aber 2-3 Tage dauern.