Инструменты для работы с хранимыми процедурами в Oracle, в команде? - PullRequest
12 голосов
/ 21 сентября 2008

Какие инструменты вы используете для разработки хранимых процедур Oracle в команде:

  • Чтобы автоматически "заблокировать" текущую процедуру, с которой вы работаете, чтобы никто другой в команде не мог вносить в нее изменения, пока вы не закончили.
  • Для автоматической отправки изменений, внесенных вами в хранимой процедуре, в базе данных Oracle, в Subversion, CVS, ... репозиторий

Спасибо!

Ответы [ 9 ]

9 голосов
/ 07 января 2009

Я не уверен, что оригинальный постер все еще отслеживает это, но я все равно задам вопрос.

Исходное сообщение, запрошенное для возможности:

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

Возможно, проблема здесь в одной из парадигм разработки, а не в неспособности продукта "заблокировать" сохраненный процесс. Всякий раз, когда я слышу «Я хочу заблокировать это, чтобы никто не изменил его», у меня сразу возникает ощущение, что люди делятся схемой, и все развиваются в одном и том же пространстве.

Если это так, то почему бы просто не позволить каждому иметь свою собственную схему с копией модели данных? Я имею в виду, серьезно, ребята, это ничего не стоит для создания другой схемы. Таким образом, каждый разработчик может вносить изменения до тех пор, пока он не станет голубым, не затрагивая никого другого.

Еще одна уловка, которую я использовал в прошлом (для небольших команд), когда было невозможно выполнимо предоставить каждому разработчику собственную копию данных из-за размера, заключалась в том, чтобы иметь главную схему со всеми таблицами и кодом. в этом, с публичными синонимами, указывающими на все это. Затем, если разработчик хочет работать с хранимым процессом, он просто создает его в своей схеме. Таким образом, разрешение имен Oracle находит сначала одну копию вместо основной в схеме, что позволяет им тестировать свой код, не затрагивая никого другого. У этого есть свои недостатки, но это был очень специфический случай, когда мы могли бы жить с ними. Я бы НИКОГДА не внедрял что-то подобное в производство.

Что касается второго требования:

Для автоматической отправки изменений, которые вы сделать в хранимой процедуре, в База данных Oracle, в Subversion, CVS, ... хранилище

Я был бы удивлен, найдя инструменты там достаточно умные, чтобы сделать это (возможно, возможность :). Он должен будет подключиться к вашей базе данных, запросить словарь данных (USER_SOURCE) и вытащить связанный текст. Высокий заказ для систем контроля версий, где почти все файлы основаны.

2 голосов
/ 22 сентября 2008

Относитесь к PL / SQL как к обычному коду: сохраняйте его в файлах и управляйте этими файлами с помощью инструмента контроля версий и внутренних процедур.

Если у вас еще нет инструмента контроля версий, запишите свои требования и выберите один . Похоже, что многие люди используют Subversion , связанный с TortoiseSVN в качестве клиента в Windows (да).

Дело в том, что используйте ваш инструмент в соответствии с рекомендациями и соответствующим образом адаптируйте ваши процедуры Например, Subversion по умолчанию использует модель copy-modify-merge , в отличие от модели lock-modify-unlock , которая Вы, кажется, поддерживаете.

В моем случае мне нравится использовать TortoiseSVN, как указано выше. И как обычно с этим инструментом:

  • Я никогда не блокирую файлы. Это очень легко справиться с небольшими командами и требует заблаговременного планирования более крупных команд, что всегда хорошо, ИМХО.
  • Я отправляю свои изменения вручную обратно на сервер, потому что ... я не думаю, что есть другой способ с Subversion (плюс, внутренние процедуры запрещают коммит без сообщения, что тоже хорошо, ИМХО).

И независимо от вашего выбора, я рекомендую прочитать этот пост (и связанные с ним) о управлении версиями базы данных .

2 голосов
/ 21 сентября 2008
1 голос
/ 18 сентября 2013

Используя Source Control для Oracle , вы получите много того, что ищете.

Хранимые процедуры (а также пакеты, функции, таблицы и т. Д.) Можно заблокировать вручную с помощью интерфейса, но не автоматически, но это не позволяет другим вносить изменения.

Новый SQL для создания объекта можно затем проверить в SVN или TFS (к сожалению, CVS не поддерживается).

Инструмент не является бесплатным, но имеет бесплатную 28-дневную пробную версию.

1 голос
/ 22 сентября 2008

Относительно простым (хотя и слегка старомодным) решением может быть использование системы контроля версий в режиме «блокировки», а не «слияния» .... Subversion или CVS обычно используют режим «слияния» (хотя я считаю, что Subversion можно ли "заблокировать" файлы?)

Системы контроля версий в режиме «Locking», конечно, имеют свои недостатки .....

Единственный способ, с помощью которого я могу думать в Oracle, это некоторые из BEFORE CREATE TRIGGER, возможно, ссылка на таблицу для поиска, кто может запускать пакет. Хотя звучит немного неприятно?

0 голосов
/ 16 июня 2009

После неудачного поиска инструмента для управления версиями для объектов Oracle мы создали следующее (не идеальное, но подходящее) решение:

  1. Используя пакет dbms_metadata , мы создаем дамп метаданных нашего сервера Oracle. Мы создаем один файл для каждого объекта, поэтому в результате получается не один огромный файл, а набор файлов. Для распознавания удаленного объекта мы удаляем все файлы перед созданием дампа снова.
  2. Копируем все файлы с сервера на клиентский компьютер.
  3. Используя Netbeans, мы распознаем изменения и фиксируем изменения на сервере CVS (или проверяем различия ...). Любое программное обеспечение обработчика CVS будет работать здесь, но мы уже использовали Netbeans для других целей. Netbeans также позволяет создавать задачу ant для вызова процесса Oracle, упомянутого в шаге 1, копируя файлы, упомянутые в шаге 2 ...

Вот наиболее важный запрос для шага 1:

SELECT object_type, object_name, 
  dbms_metadata.get_ddl(object_type, object_name) object_ddl FROM user_objects
WHERE OBJECT_TYPE in ('INDEX', 'TRIGGER', 'TABLE', 'VIEW', 'PACKAGE', 
  'FUNCTION', 'PROCEDURE', 'SYNONYM', 'TYPE')  
ORDER BY OBJECT_TYPE, OBJECT_NAME

Один файл на объектный подход помогает идентифицировать изменения. Если я добавлю поле в таблицу TTTT (конечно, не реальное имя таблицы), то будет изменен только файл TABLE_TTTT.SQL.

Оба шага 1 и шаг 3 являются медленными процессами. (несколько минут для нескольких тысяч файлов)

0 голосов
/ 22 сентября 2008

Вы также можете посмотреть на Aqua Data Studio. Они также встроены в SVN и представляют собой отличный редактор Stored Proc.

0 голосов
/ 22 сентября 2008

Жаба также делает это без CVS / SVN.

0 голосов
/ 22 сентября 2008

Используя Oracle SQL Developer 1.5 , вы можете легко создавать и управлять подключениями к CVS или Subversion. Чтобы создать соединение CVS (например), нажмите Управление версиями -> CVS -> Извлечь модуль . Вы запустите мастер для создания соединения (хост, имя пользователя и т. Д.), А затем сможете проверить свои процедуры / функции и войти как обычно.

Интеграция с CVS также предусмотрена в Toad .

...