Jag har sett ett jag-vet-inte-hur-många sätt försökt hantera detta, och i slutändan tror jag att du bara behöver underhålla manuella skript.
Nu behöver du inte nödvändigtvis skriva själv. I MSSQL, när du gör en ändring, finns det en liten knapp för att generera skript, som kommer att spotta ut ett SQL-skript för ändringen du gör. Jag vet att du pratar om Oracle, och det har gått några år sedan jag arbetade med deras GUI, men jag kan bara föreställa mig att de har samma funktion.
Du kan dock inte komma ifrån att arbeta med skript manuellt. Du kommer att ha många problem kring redan existerande data, som standardvärden för nya kolumner eller hur man hanterar data för en omdöpt/raderad/flyttad kolumn. Detta är bara en del av analysen i att arbeta med ett databasschema över tid som man inte kan komma ifrån. Om du försöker göra detta med en helt automatiserad lösning kommer din data att bli förstörd förr eller senare.
Det enda jag skulle rekommendera, bara för att göra ditt liv lite enklare, är att se till att du skiljer schemaändringar från kodändringar. Skillnaden är att schemaändringar av tabeller och kolumner måste köras exakt en gång och aldrig igen, och måste därför versioneras som individuella ändringsskript. Kodändringar, som lagrade processer, funktioner och till och med vyer, kan (och bör) köras om och om igen och kan versioneras precis som alla andra kodfiler. Det bästa tillvägagångssättet för detta jag har sett var när vi hade alla processer/funktioner/vyer i VSS, och vår byggprocess skulle tappa alla och och återskapa dem under varje uppdatering. Detta är samma idé som att göra en ombyggnad av din C#/Java/whatever-kod, eftersom det ser till att allt alltid är uppdaterat.