Ik heb een ik-weet-niet-op-hoeveel manieren gezien om dit aan te pakken, en uiteindelijk denk ik dat je gewoon handmatige scripts moet onderhouden.
Nu hoeft u niet per se zelf te schrijven. In MSSQL, terwijl u een wijziging aanbrengt, is er een kleine knop om Script te genereren, dat een SQL-script uitspuugt voor de wijziging die u aanbrengt. Ik weet dat je het over Oracle hebt, en het is een paar jaar geleden dat ik met hun GUI heb gewerkt, maar ik kan me alleen maar voorstellen dat ze dezelfde functie hebben.
U ontkomt er echter niet aan om handmatig met scripts te werken. U zult veel problemen hebben met reeds bestaande gegevens, zoals standaardwaarden voor nieuwe kolommen of het verwerken van gegevens voor een hernoemde/verwijderde/verplaatste kolom. Dit is slechts een deel van de analyse van het werken met een databaseschema in de loop van de tijd waar u niet omheen kunt. Als u dit probeert te doen met een volledig geautomatiseerde oplossing, zullen uw gegevens vroeg of laat in de war raken.
Het enige dat ik zou aanraden, alleen om je leven een beetje gemakkelijker te maken, is ervoor te zorgen dat je schemawijzigingen scheidt van codewijzigingen. Het verschil is dat schemawijzigingen in tabellen en kolommen precies één keer moeten worden uitgevoerd en nooit meer, en daarom als afzonderlijke wijzigingsscripts moeten worden geversied. Codewijzigingen, zoals opgeslagen processen, functies en zelfs weergaven, kunnen (en moeten) echter steeds opnieuw worden uitgevoerd en kunnen net als elk ander codebestand worden geversied. De beste benadering hiervoor was toen we alle procs/functies/views in VSS hadden, en ons bouwproces zou alles laten vallen en ze opnieuw creëren tijdens elke update. Dit is hetzelfde idee als het opnieuw opbouwen van uw C#/Java/whatever-code, omdat het ervoor zorgt dat alles altijd up-to-date is.