sql >> Databáze >  >> RDS >> Oracle

Jak mám migrovat změny DDL z jednoho prostředí do druhého?

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í.



  1. Jak vložit hodnoty vícenásobného výběru

  2. local postgres db stále dává chybu, duplicitní hodnota klíče porušuje jedinečné omezení

  3. Jak vygenerovat výpis Postgresql z kontejneru Docker?

  4. Během instalace PostgreSQL se nezdařilo načíst moduly SQL do clusteru databáze