2015-02-23 3 views
1

Возможно ли в Oracle генерировать связку операторов ALTER TABLE на основе существующей таблицы в схеме плюс CREATE TABLE с новым определением этой таблицы?Сгенерировать сценарий обновления для ALTER TABLE на основе инструкции CREATE TABLE в Oracle

Предположим, у меня есть схема с предыдущей версией приложения. У меня есть сценарий установки для последней версии приложения. Сценарий создает все таблицы и последовательности с нуля, выполняя операторы CREATE TABLE (и, возможно, CREATE SEQUENCE).

Я хотел бы обновить схему до последней версии приложения без потери данных (например, без выполнения DROP TABLE).

Возможно ли использование стандартных компонентов Oracle 11gR2 или сторонних компонентов?

+0

Нет инструмента, которому я бы доверял 100%, чтобы сделать это. Но несколько небольших скриптов, использующих DBMS_METADATA_DIFF, могут получить большую часть вашего пути. В зависимости от того, что именно вы ищете, этот вопрос будет дублировать [этот вопрос] (http://stackoverflow.com/q/19574971/409172). –

+0

@ Джона Хеллера не является дополнительной стоимостью DBMS_METADATA_DIFF? – ibre5041

+0

@ Politank-Z, мой вопрос не о миграции, а о автоматизации нормальной установки. Я видел этот вопрос, но он скорее спрашивает о сравнении двух схем (источник и цель), тогда как мой вопрос задает вопрос о сравнении схемы с 'CREATE TABLE'. –

ответ

0

Вы можете попробуйте CORT: www.softcraftltd.co.uk/cort Это бесплатно

+0

Похоже, именно то, что мне нужно. –

+0

Если у вас есть вопросы, как использовать его или как организовать исходный код, пожалуйста, свяжитесь со мной по электронной почте с сайта – Rusty

+0

Спасибо! CORT выглядит очень многообещающим, идея обработки модификаций с помощью 'DDL TRIGGER' великолепна. –

0

Вы можете создать процедуру в PLSQL для:

  • создать новую таблицу, если она не существует в новой БД
  • альтер таблицы, когда она существует, подпитывая его ALL_TAB_COLUMNS
+0

Это не вариант, потому что мне придется анализировать инструкцию CREATE TABLE, чтобы получить список отсутствующих столбцов. –

+0

Вы не можете найти недостающие столбцы со сравнением ALL_TAB_COLUMNS? –

+0

Я не могу найти недостающие столбцы, не выполнив сначала мою CREATE TABLE на некоторой дополнительной схеме. Это может быть дорогостоящим, и это невозможно сделать отдельно для каждого 'CREATE TABLE' из-за возможных ограничений FOREIGN KEY. Сначала я должен запустить весь скрипт установки поверх вспомогательной базы данных, и я бы хотел избежать этого шага. –