Freitag, 9. September 2011

Umstellung einer Applikation von Postgres auf Oracle

Vielleicht hat sich der ein oder andere schon mal mit der Umstellung einer bestehenden Web Applikation auf Oracle beschäftigt. Ich darf mich damit derzeit intensiv auseinandersetzen und geben hier einfach mal ein paar Informationen und Fakten weiter. Die Migration wird von Postgres nach Oracle durchgeführt.


Begrenzung der Namen für Tabellen, Felder und Sequenzen etc

Für alle Bezeichner von Spalten, Tabellen und Sequenzen gilt ein strenges Limit von 30 Zeichen. Ich weiß nicht wieso das gesetzt worden ist, aber gerade bei einer Migration von bestehenden Applikation kann dies ein echt kniffeliges Problem darstellen! Wenn jemand weiß, wieso es gerade 30 Zeichen sind, bitte in die Kommentare schreiben :)


Problematische Bezeichner/Schlüsselbegriffe

Es gibt so einige Keywords/Schlüsselbegrifflichkeiten die unter Oracle nicht als Spalten- oder Tabellenbezeichnung genommen werden dürfen. Auch Abfragen, in denen eine Spalte per as  Anweisung einen neuen Namen bekommt können Probleme verursachen. Ein (hoffentlich) vollständige  Liste kann unter [1] oder [2] eingesehen werden.


Autoincrement unter Oracle? Fehlanzeige!
Aus der Postgres bin ich gewohnt, dass bei der Kennzeichnung einer Spalte als Primary Key auch eine Sequenz erstellt wird und an das Feld gebunden wird. Bei Oracle passiert das nicht automatisch. Man muss manuell eine Sequenz erzeugen, die dann an das Feld gebunden werden kann. Sicher kein Weltuntergang, aber für mich ein Vorteil für Postgres.

Transaktionen
Bei Oracle wird per Standardeinstellung mit jedem Ausführen einer Query auch eine Transaktion eröffnet ("Begin Transaction"), die beim verlassen des Skripts oder beim beenden der Datenbankverbindung automatisch ausgeführt wird ("Commit Transaction"). Unter Postgres kann man manuell eine Transaction starten ("Begin Transaction")  und dann je nach Bedarf ausführen oder zurücksetzen ("Rollback Transaction"). Damit Oracle kein automatisches Ausführen vornimmt, muss dem Ausführungsstatement ein Paramter "OCI_NO_AUTOCOMMIT" mitgegeben werden.



Links:





Keine Kommentare:

Kommentar veröffentlichen