Ergebnis 1 bis 3 von 3

Thema: Datenmigration Oracle -> PG

  1. #1
    acki4711 ist offline Benutzer
    Registriert seit
    11.04.2008
    Beiträge
    65

    Standard Datenmigration Oracle -> PG

    Hallo zusammen,
    Ich sollte eine Oracle DB nach Postgres migrieren.
    In einem ersten Schritt habe ich die bestehende Oracle DB gescriptet und nach PG geändert (Datentypen anpassen, SP's neu geschrieben etc.). Soweit so gut.
    Ich stehe nun vor dem Problem wie ich die Daten aus der Oracle DB exportieren und in PG importieren kann. (Oracle DB enthält CLOB + BLOB Datenfelder).
    Ist das via Export/Import überhaupt möglich (muss ich da was spezielles beachten)?

    Der Einsatz eines "Datapumptools" (ausser es funktioniert via Export-/Imortfiles) ist nicht möglich da ein gleichzeitiger Connect des Oracle und PG Servers nicht möglich ist.

    Besten Dank für einen Tipp.
    acki4711

  2. #2
    ads
    ads ist offline Super-Moderator
    Registriert seit
    08.02.2006
    Ort
    MD
    Beiträge
    4.020

    Standard

    Tja, wenn gleichzeitige Connects nicht möglich sind, bleibt alles am Export hängen.

    Dann erzähle doch mal, in welchen Formaten du die Daten in Oracle exportieren kannst ...
    Xandrian: Kurz gesagt: Du hast ein falsches Konzept und willst nicht auf ads hören

    Jetzt NEU: PostgreSQL - Datenbankpraxis für Anwender, Administratoren und Entwickler

    PostgreSQL Service & Support

  3. #3
    acki4711 ist offline Benutzer
    Registriert seit
    11.04.2008
    Beiträge
    65

    Standard

    Zitat Zitat von ads Beitrag anzeigen
    Tja, wenn gleichzeitige Connects nicht möglich sind, bleibt alles am Export hängen.

    Dann erzähle doch mal, in welchen Formaten du die Daten in Oracle exportieren kannst ...
    OK, das Exportieren von BLOB Feldern in Files zwar möglich:
    (Metalink Artikel: 471715.1)

    CREATE OR REPLACE PROCEDURE retrieve_lob_to_file(temp_blob in BLOB, file_path in varchar2, file_name in varchar2) IS
    data_buffer RAW (32767);
    position INTEGER := 1;
    filehandle utl_file.file_type;
    error_number NUMBER;
    error_message VARCHAR2(100);
    blob_length INTEGER;
    chunk_size BINARY_INTEGER := 32767;
    BEGIN
    blob_length := dbms_lob.getlength(temp_blob);

    filehandle := utl_file.fopen(file_path, file_name,'wb', 1024);

    WHILE position < blob_length LOOP

    dbms_lob.read (temp_blob, chunk_size, position, data_buffer);

    utl_file.put_raw (filehandle, data_buffer);

    position := position + chunk_size;

    data_buffer := null;

    END LOOP;

    utl_file.fclose(filehandle);


    EXCEPTION
    WHEN OTHERS THEN
    BEGIN
    error_number := sqlcode;
    error_message := substr(sqlerrm ,1 ,100);
    dbms_output.put_line('Error #: ' || error_number);
    dbms_output.put_line('Error Message: ' || error_message);
    utl_file.fclose_all;
    END;
    END;
    /

    Ist aber doch in meinen Augen sehr 'unhandlich'.
    Habe den Ansatz soeben beerdigt (RIP).
    Werde mir mal ora2pg oder das Tool "EMS Datapump für PostgreSQL" (EMS SQL Manager - EMS Data Pump for PostgreSQL: Migrations- und Konvertierungstool von Datenbanken für PostgreSQL. Flexible Änderung von Daten und Schemas, Befehlszeilendienstprogramm für automatische Migration in PostgreSQL und viele weitere Feat)
    näher anschauen...

    THX
    acki4711

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Links: Tobias Bauer - IT- und Funkdienstleistungen   -   Bilderrahmen-kaufen.de - Der Onlineshop für Bilderrahmen & Fotorahmen   -   Funkforum