Viděl jsem, kolik způsobů se to snažilo zvládnout, a nakonec si myslím, že stačí udržovat ruční skripty.
Nyní nemusíte nutně psát sami. V MSSQL, když provádíte změnu, existuje malé tlačítko pro Generovat skript, které vyplivne SQL skript pro změnu, kterou provádíte. Vím, že mluvíte o Oracle, a už je to pár let, co jsem pracoval s jejich GUI, ale dokážu si jen představit, že mají stejnou funkci.
Ruční práci se skripty se však nezbavíte. Budete mít spoustu problémů s již existujícími daty, jako jsou výchozí hodnoty pro nové sloupce nebo jak zacházet s daty pro přejmenovaný/smazaný/přesunutý sloupec. Toto je jen část analýzy při práci s databázovým schématem v průběhu času, od kterého se nemůžete dostat. Pokud se o to pokusíte pomocí zcela automatizovaného řešení, vaše data se dříve nebo později zkazí.
Jediná věc, kterou bych vám doporučil, aby vám trochu usnadnil život, je oddělit změny schématu od změn kódu. Rozdíl je v tom, že změny schémat v tabulkách a sloupcích musí být spuštěny přesně jednou a nikdy znovu, a proto musí být verzovány jako jednotlivé skripty změn. Změny kódu, jako jsou uložené procesy, funkce a dokonce i pohledy, však lze (a měly by) spouštět znovu a znovu a lze je verzovat stejně jako jakýkoli jiný soubor kódu. Nejlepší přístup k tomu, jaký jsem viděl, byl, když jsme měli všechny procesy/funkce/pohledy ve VSS a náš proces sestavování všechny vypustil a znovu je vytvořil během každé aktualizace. Je to stejný nápad jako provést přestavbu vašeho kódu C#/Java/whatever, protože to zajistí, že je vše vždy aktuální.