|
Version Control для pl/sql
|
|||
---|---|---|---|
#18+
AmKadrun09Я так понимаю, в случае только с одной "миграцией", мне нужно будет последовательно накатывать все изменения...Это не так страшно, как может показаться на первый взгляд. Для тестирования времени наката с нуля я извратился следующим образом: снял метаданные с работающей БД в полторы сотни таблиц и сгенерил xml-файлы наката, в которых каждая таблица создается с одним полем. А далее все отдельные составляющие, такие как остальные поля (alter-ы), индексы + констраинты, комменты, засунул в отдельные changeset-ы. На каждый changeset один SQL-оператор и только один. Плюс recreatable-объекты: вьюхи, пакеты-процедуры и т.д. Полный накат с нуля на чистую схему составил чуть более 1 минуты. Повторный перезапуск выполнился за несколько секунд - при совпадении хешей changeset повторно не выполняется. Интересный подход. Спасибо, подумаю ... |
|||
:
Нравится:
Не нравится:
|
|||
17.04.2018, 10:28 |
|
Version Control для pl/sql
|
|||
---|---|---|---|
#18+
Есть желание иметь возможность проследить за историей изменений, не применяя полновесный сорс контроль. (Обучение модеров тулзам, поддержание сорс контроль дисциплины, и т.д.). Еженочный дамп юзерского кода и ddl таблиц в принципе устраивает, но неудобно прослеживать цепочку изменений через дифф попарно. Можно ночные дампы складывать в сорс контроль, и научить всех пользоваться историей, но это вовлекает установку клиента (или вэб сервера) и не покажет внутридневных изменений, а также не позволит маркировку версий. С учётом этих хотелок (незаметно следит за изменениями, умеет показывать цепочку изменений и позволяет маркировку стабильных версий), есть ли какой-нибудь плагин для Оракла? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2020, 17:43 |
|
Version Control для pl/sql
|
|||
---|---|---|---|
#18+
НеофитSQL Есть желание проследить за историей изменений, не применяя полновесный сорс контроль Есть желание понять, что 2 x 2 = 4, не применяя арифметику. Дорогой Тролль, мы за вами с интересом наблюдаем. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2020, 18:56 |
|
Version Control для pl/sql
|
|||
---|---|---|---|
#18+
dmdmdm Есть желание понять, что 2 x 2 = 4, не применяя арифметику. Вы неправильно думаете об арифметике. Таблицу умножения зубрят, а не понимают. Вопрос был к тем, кто научился пользоваться сорс контролем только для учета, не для контроля. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2020, 19:39 |
|
Version Control для pl/sql
|
|||
---|---|---|---|
#18+
НеофитSQLТаблицу умножения зубрят, а не понимают. Зубрят её в начальной школе. В средней - уже понимают как она составлена. Перестаньте уже зубрить. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2020, 20:17 |
|
Version Control для pl/sql
|
|||
---|---|---|---|
#18+
да ладно, абсолютно резонный вопрос. полным-полно мест, где процесс разработки в части БД отсутствует в принципе, а скрипты для наката на прод в лучшем случае генерируются диффом между продом и девом, а в худшем всё просто переносится вручную. в целом никто не мешает написать системный триггер, который будет срабатывать на компиляцию пакета, и сохранять текст того, что было скомпилировано, в какую-нибудь таблицу в удобном формате. мы когда-то примерно так на скорую руку решали задачу учета изменений в условиях отсутствия СКВ. еще имеет смысл почитать про audit trail - возможно, его тоже можно научить это делать. сам не пробовал. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2020, 20:18 |
|
Version Control для pl/sql
|
|||
---|---|---|---|
#18+
НеофитSQL но неудобно прослеживать цепочку изменений через дифф попарно. То есть ты хочешь специфическое средство визуализации, тулза с первой страницы темы возможно это умеет 20832349 , хотя я не пробовал)) ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2020, 20:50 |
|
Version Control для pl/sql
|
|||
---|---|---|---|
#18+
graycode и кит, спасибо. У меня довольно скромные нужды, поэтому не хотелось внедрять что-то новое и блестящее. Я за пару часов сделал модуль который показывает что поменялось в Pl/SQL за последний день, вывод корявый но он позволяет отследить какие модули трогались (и следовательно могут требовать code review или ретест), а какие нет. На неделю добавлю историю изменений. Жаль, он не покажет "кто" именно внес изменения, я еще подумаю как это сделать. Выглядит это так: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20.
zz.snap('метка') - хватает состояние кода на данный момент zz.show(команда, модуль, дней смотреть) - показывает чего нового появилось. zz.showt(..) - то же что и .show, но пайплайнит таблицу. Научился делать папйлайн без курсора, может пригодится. В процессе выяснилось что 11.2 не умеет делать SHA256, пришлось позаимствовать извне. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2020, 22:29 |
|
Version Control для pl/sql
|
|||
---|---|---|---|
#18+
НеофитSQL В процессе выяснилось что 11.2 не умеет делать SHA256, пришлось позаимствовать извне. Не умеет делать 11.2.0.1, 11.2.0.4 успешно делает ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2020, 01:29 |
|
Version Control для pl/sql
|
|||
---|---|---|---|
#18+
Bfink НеофитSQL В процессе выяснилось что 11.2 не умеет делать SHA256, пришлось позаимствовать извне. Не умеет делать 11.2.0.1, 11.2.0.4 успешно делает Спасибо, не знал - наверное документацию не обновили. В .0.4 это добавили в dbms_crypto, как четвертый хэш? Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
Я собирался тянуть SHA256 через WinCAPI, но стыковки с С ДЛЛ настолько нудная что плюнул и сделал через джаву. Кто-то пользовался механизмом подгрузки С-шных процедур в Оракл? Он хорошо отполирован, или из разряда Оракл мультимедиа? Я не говорю о внутреннем pragma interface, а про поддерживаемый медод, который через RPC для безопасности. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2020, 02:12 |
|
Version Control для pl/sql
|
|||
---|---|---|---|
#18+
НеофитSQL ... Я за пару часов сделал модуль который показывает что поменялось в Pl/SQL за последний день, вывод корявый но он позволяет отследить какие модули трогались (и следовательно могут требовать code review или ретест), а какие нет. На неделю добавлю историю изменений. Жаль, он не покажет "кто" именно внес изменения, я еще подумаю как это сделать. А в чём смысл смотреть эти изменения? На тестовых серверах хз сколько из этих изменений в релиз пойдут. И если пойдут, то перед этим и так будет стадия код ревью? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2020, 08:59 |
|
Version Control для pl/sql
|
|||
---|---|---|---|
#18+
mnbvcx, Смысл тот, что я описал ранее - облегчить анализ изменений в объеме недокументированого кода. Скорее лог изменений, чем полный соурс контроль. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2020, 15:07 |
|
Version Control для pl/sql
|
|||
---|---|---|---|
#18+
НеофитSQL, Лог изменений где? На девелоперском сервере? И зачем он нужен? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2020, 17:21 |
|
Version Control для pl/sql
|
|||
---|---|---|---|
#18+
graycode, На живом, который трогают ежедневно. Есть дев-схема, которую создали для меня. У нас, как это, неосознаный CI процесс. :) В октябре пойдет волна изменений по одной из инициатив, и я хочу иметь возможность их анализа. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2020, 19:09 |
|
Version Control для pl/sql
|
|||
---|---|---|---|
#18+
НеофитSQL, Процесс менять надо, а не SHA256 на ровном месте прикручивать. Если цель НеофитSQL следовательно могут требовать code review или ретест то собирать только текст пакетов - глупо. Например, изменился тип поля в таблице, на которую в пакете есть переменная%rowtype. Код пакета не изменится, хэш тоже. А работать начнёт по другому. Или поменялась вьюха (поля перепутали местами), а в пакете (по рукам за такое) Код: plsql 1.
. Код прежний, результаты новые. Лучше процесс организуйте с версионированием на этапе разработки и запретом выката на прод кода не слитого в нужную ветку. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.10.2020, 09:33 |
|
Version Control для pl/sql
|
|||
---|---|---|---|
#18+
НеофитSQL, я бы посоветовал Вам не изобретать велосипеды, а использовать сразу SourceControl. Вот с механизмом, конечно, придется повозиться, т.к. Best Practices нет и каждый выкручивается как может либо как принято в компании до него. Если же вообще никакого подхода нет, то все карты в руки... В компании, где я работаю, используется такой подход: 1. Есть таск в JIRA, по которому нужно реализовать какой-то функционал. 2. Есть SVN, в котором хранятся все скрипты по структуре: Имя схемы (каталог) - тип объекта (подкаталог) - имя объекта (файл). 3. У каждого файла в SVN есть обязательный заголовок с ключевыми SVN-аттрибутами типа $Revision, $HeadURL (которые автоматически заполняет SVN при коммите). 4. У каждого файла в SVN есть дополнительный аттрибут в заголовке: $JIRA - который Hook-скриптом выбирается из Message при коммите и добавляется в заголовок. 5. В 99% работаем всегда с Master-веткой. Таким образом, каждый файл в SVN содержит все необходимые аттрибуты, чтобы связать его с конкретным таском в JIRA. 6. Девелопер создает новые/модифицирует старые файлы, сохраняет их в SVN. 7. SVN заголовок каждого файла в правильном порядоке наката указывает в таске JIRA. 8. ДБА при деплойменте выбирает файлы из всех тасков, включенных в деплоймент, компонует их и выполняет сначала на снапшоте продакшена (чтобы выявить все косяки, ошибки и прочие неожиданности), а затем на продакшене. 9. При деплойменте в DBA_SOURCE попадает SVN заголовок из исходника, который потом на 1-минутном джобе парсится и заносится в специальные служебные таблицы. Таким образом, мы имеет связи DB<->SVN<->JIRA, всегда можем сказать, что было задеплоено, что не было, что задеплоилось частично, что провтыкали, что задеплоили лишнее и т.д. Т.е. 99% человеческих косяков выявляем еще на этапе деплоймента на снапшот продакшена. Для большинства этих шагов написана внутренняя автоматизация, т.е. ручное вмешательство в процесс - минимальное. Скользкий момент такого подхода - необходимость написания веток в случае, когда на продакшен уходит не последняя ревизия скрипта, и нужно вырезать то или иное изменение, внесенное таском, который еще не идет в продакшен. В этом случае требуется ручное вмешательство, которое обязательно ревьювится другим девелопером и проверяется с особой тщательностью. Как-то так... ... |
|||
:
Нравится:
Не нравится:
|
|||
05.10.2020, 11:35 |
|
Version Control для pl/sql
|
|||
---|---|---|---|
#18+
Amberit, Все хорошие советы для организаций, которые готовы вводить соурс контроль. Здесь это (пока) не та ситуация. Велосипед изобретался исключительно с целью изобретения велосипеда, как многие мои хобби-задачки. После реализации пробной версии нашел несколько недостатков построчного подхода, т.к. реализация качественного diff или тем более 3-сравнения в PL/SQL превращается в немаленькую задачу, плюс SQL+ накладывает ограничения на визуализацию. Рассматривать диффы без GUI - неблагодарное занятие. Поэтому польза для такого небольшого внутреннего тулза наверное находится на уровне юнита (напр. юнит АБВ и его зависимости не менялись за последний месяц - есть повод считать юнит сравнительно стабильным), но не на уровне строчек. Что, в общем, и следует ожидать от игрушки сделанной за час-два. Для более общего change log процесса я собираюсь посмотреть на CVS/JIRA/... которым кормить ночные бэкапы исходников и в которых потом можно порыться по поводу изменений что/где/когда. Кроме того, я узнал о существовании специализированных продуктов, напр. https://www.apexsql.com/sql-tools-source-control.aspx (еще не смотрел), которые оптимизированы для SQL кодеров. Если найду решение, которое отвечает моим требованиям и удобно в работе - напишу здесь. Оно может помочь тем, кто пока не готов менять процесс под соурс контроль, но хочет возможность видеть историю изменений. Это совершенно нормальная хотелка для тех, кто знаком в TimeMachine(Эппл) или версиями файлов в Винде. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.10.2020, 23:05 |
|
|
start [/forum/topic.php?fid=52&msg=40005393&tid=1880830]: |
0ms |
get settings: |
8ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
67ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
51ms |
get tp. blocked users: |
1ms |
others: | 12ms |
total: | 172ms |
0 / 0 |