Предложения по системе контроля версий Oracle - PullRequest
2 голосов
/ 27 января 2010

На работе мы используем Oracle (ick) для базы данных клиента (это миграция из предыдущего проекта компании, поэтому, к сожалению, база данных была заложена). До этого момента это не вызывало каких-либо серьезных головной боли (кроме обычных Oracle и MSSQL): мы находимся в точке, когда пять отдельных разработчиков разрабатывают пять отдельных улучшений для системы, каждый из которых использует свою ветвь в Perforce.

Может кто-нибудь предложить хороший способ отслеживать изменения версий в Oracle: в основном хранимые процедуры, но также (возможно) изменения в архитектуре таблицы?

В настоящий момент мы просто присоединяем сценарии «Создать или заменить» к случаям FogBugz, но были случаи, когда это приводило к тому, что изменения оставались незамеченными, что быстро приводит к большой головной боли!

N.B. невозможно иметь более одной копии самой базы данных, поскольку она слишком велика.

Ответы [ 4 ]

7 голосов
/ 27 января 2010

Очень похожий вопрос задавался до Управление исходным кодом базы данных с помощью Oracle , на который я тогда ответил.

Сводка - DDL и хранимые процедуры - это код, которым нужно управлять в инструменте контроля версий, как в Java, C # или как угодно.

4 голосов
/ 27 января 2010

Вы не говорите, какую версию Oracle вы используете, и я подозреваю, что она вряд ли будет самой последней.Но если вы используете 11gR2, вам следует ознакомиться с функцией Editions.

Переопределение на основе Edition позволяет нам управлять различными версиями объектов PL / SQL внутри базы данных .Он не заменяет правильное управление версиями, но дополняет его, позволяя различным версиям схемы сосуществовать в одном и том же экземпляре.Это очень круто. Узнать больше .

2 голосов
/ 27 января 2010

Как насчет проверки в сценарии для процедур в SVN, помечая каждую проверку номером дела FB, чтобы изменения можно было увидеть непосредственно в FB?

Это то, что мы делаем для наших скриптов (в основном MSSQL), но вместо FB мы используем Jira.

1 голос
/ 27 января 2010

Как сказал ACP , функция Editions хорошо подойдет для этого, если у вас последняя и лучшая версия Oracle.

В любом случае другой связанный ответ показывает путь - сохранить все PL / SQL в управлении версиями и сохранить все изменения DDL в виде патчей, которые также вводятся в управление версиями.

Несколько практических вопросов, которые могут повлиять на ваше дело.

Если у вас относительно унифицированная структура базы данных и быстро меняющиеся пакеты PL / SQL, то вариант состоит в том, чтобы иметь одну схему, содержащую таблицы и основную ветвь пакетов PL / SQL, и дать каждому разработчику отдельную схему для своей ветви. PL / SQL пакеты. Все таблицы в основной схеме синонимичны каждой схеме разработчика.

Итак, у вас есть несколько версий PL / SQL, работающих с одним хранилищем данных. По мере того, как ветки разработчика собираются вместе, они проверяются в основной ветке и компилируются в основную схему приложения.

Мне проще иметь все пакеты pl / sql в каждой схеме разработки, а не только те, которые в данный момент находятся в разработке, но вы можете заставить его работать в любом случае.

Очевидно, что вам все еще нужны как минимум 2 базы данных, чтобы ваша производственная среда была защищена от всех этих махинаций.

Еще один вариант, если у вас это просто не работает, - предоставить каждому разработчику свою собственную базу данных, в которой можно повозиться. Вы сказали, что размер является здесь препятствующим фактором, но вы можете использовать функции Data Pump для ограничения количества строк, которые передаются из основной базы данных в каждую базу данных разработчика.

Например:

Чтобы экспортировать только 5% строк ...

$ expdp sample=5

Чтобы экспортировать только 5% определенной таблицы ...

$ expdp sample=mybigtable:5

Таким образом, каждый разработчик может работать с одной и той же структурой базы данных, но у вас нет одинаковых проблем с хранилищем.

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...