Ich versuche, unsere Oracle-Datenbankerstellungsskripts so zu konvertieren, dass Flyway verwendet wird, sodass die verteilte Entwicklung auf der Datenbank einfacher wird. Diese Skripte bestehen hauptsächlich aus SQL-Befehlen und erfordern fast keine Änderung, so dass es in Ordnung ist. Ich verwende die Kommandozeilenversion von Flyway (4.0.3) gegen eine Oracle 11.2 Express Datenbank.Fehler bei der Verwendung von "connect sys as sysdba" in der Migration von FlywayDb
Allerdings gibt es ein Skript, mit dem ich einige Probleme habe, nämlich beim Erstellen der Schemas, der Rollen und Gewähren von Berechtigungen für diese Schemas/Rollen. Hier
ist ein Beispiel, wie die SQL-Migration-Datei wie folgt aussieht:
alter user SAMPLEDB identified by ${schemaPassword};
alter user LOCDB identified by ${schemaPassword};
grant create session,create view,resource to SAMPLEDB;
grant create session,create view,resource to LOCDB;
connect sys/[email protected] as sysdba;
grant EXECUTE ON SYS.DBMS_PIPE to SAMPLEDB;
Die Datei ist natürlich viel größer, aber dies sollte ausreichen, um die allgemeine Vorstellung zu geben, wie es aussieht.
Also, wenn ich flyway laufen wandern auf diesen SQL-Befehle, die ich die folgende Fehlermeldung erhalten:
SQL State : 42000
Error Code : 900
Message : ORA-00900: invalid SQL statement
Statement : connect sys/[email protected] as sysdba
Wenn ich das connect sys/password @ xe als sysdba Linie entfernen dann habe ich diesen Fehler:
SQL State : 42000
Error Code : 1031
Message : ORA-01031: insufficient privileges
Statement : grant EXECUTE ON SYS.DBMS_PIPE to SAMPLEDB
Ich verwende den Oracle "System" -Benutzer, der in der Konfigurationsdatei "flyway.conf" konfiguriert ist.
Also die Frage ist, kann ich irgendwie den Benutzer zu dem Benutzer sysdba in der SQL-Datei ändern, oder sollte ich die Schema-Benutzer/Rollen erstellen und ihnen Berechtigungen manuell gewähren, bevor Sie den Befehl flyway migrieren?
Diese Aufgabe wird nur ausgeführt, wenn eine neue Datenbank erstellt wird, die nicht oft vorkommen sollte.
Hoffe ihr könnt mir helfen mit diesem
Ich danke Ihnen für Ihre Antwort. Aufgrund anderer Probleme in meiner Arbeit musste ich dieses Projekt an ein anderes Team in einem anderen Land liefern. Im Moment habe ich keine Möglichkeit zu testen, ob Ihre Lösung funktioniert, aber ich werde sie trotzdem als Lösung markieren :) – Elvar