Установка / разборка схемы Oracle для сборки CI без фрагментации каталога - PullRequest
6 голосов
/ 29 ноября 2011

Я хотел бы, чтобы CI-сборка (например, Hudson) была настроена и разрушила схему Oracle 11g как часть ночного цикла сборки / тестирования для довольно ванильного JSF / JPA-приложения.

Самый очевидный способ сделать это - удалить и заново создать все таблицы.Хотя это кажется довольно стандартным (по крайней мере, это то, что инструменты Hibernate / JPA сделали бы для вас автоматически), у меня есть администраторы базы данных Oracle, предупреждающие меня, что каталог Oracle будет фрагментирован после повторных циклов создания / удаления объектов.В конечном итоге это вызовет проблемы с производительностью, поскольку табличное пространство SYSTEM не может быть дефрагментировано / объединено.

У меня есть следующие вопросы:

  • - это фрагментация - настоящая проблема, или вам не о чем беспокоитьсяв типичной среде разработки веб-приложений?
  • если фрагментация действительно вызывает озабоченность, есть ли лучший способ разорвать и воссоздать схему в Oracle, чем DROP TABLE / CREATE TABLE?

Спасибо!

Ответы [ 2 ]

7 голосов
/ 29 ноября 2011

Не верьте этим администраторам баз данных

По крайней мере с 10g и выше при использовании локально управляемых табличных пространств (LMT) это не должно быть проблемой.

И даже если это вызвало какую-либо фрагментацию, я очень сомневаюсь, что вы можете измерить ее влияние - особенно на базу данных, которая используется для CI.

2 голосов
/ 30 ноября 2011

Я нахожусь в процессе внедрения процесса сборки CI для моего второго проекта Oracle.Я не думаю, что удаление и воссоздание всего принесет какой-либо вред (как указано выше a_horse_with_no_name).Я рад слышать, что вы думаете о расширении CI для объектов базы данных - слишком много команд этого не делают.

Другой подход может заключаться в том, чтобы восстанавливать базу данных из недавней резервной копии каждую ночь (или использовать базу данных флэшбэка)и переносите ваше приложение из «производственной резервной копии» в текущее состояние разработчика при каждом запуске CI.Таким образом, код, который в конечном итоге будет применяться к продукту, будет тестироваться каждую ночь на предмет чего-то, что в значительной степени идентично продукту.Это немного меняет мышление, но не слишком сильно, если вы уже думаете о КИ.

Если вы хотите попробовать миграционный подход, у меня есть инструмент, над которым я работал, который можетhelp - http://dbgeni.com Он все еще находится в стадии разработки, но я разработал его с помощью CI и управления изменениями базы данных с учетом миграции.

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