powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Version Control для pl/sql
17 сообщений из 67, страница 3 из 3
Version Control для pl/sql
    #39631359
run09
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AmKadrun09Я так понимаю, в случае только с одной "миграцией", мне нужно будет последовательно накатывать все изменения...Это не так страшно, как может показаться на первый взгляд. Для тестирования времени наката с нуля я извратился следующим образом: снял метаданные с работающей БД в полторы сотни таблиц и сгенерил xml-файлы наката, в которых каждая таблица создается с одним полем. А далее все отдельные составляющие, такие как остальные поля (alter-ы), индексы + констраинты, комменты, засунул в отдельные changeset-ы. На каждый changeset один SQL-оператор и только один. Плюс recreatable-объекты: вьюхи, пакеты-процедуры и т.д.
Полный накат с нуля на чистую схему составил чуть более 1 минуты. Повторный перезапуск выполнился за несколько секунд - при совпадении хешей changeset повторно не выполняется.
Интересный подход. Спасибо, подумаю
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Version Control для pl/sql
    #40005143
НеофитSQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть желание иметь возможность проследить за историей изменений, не применяя полновесный сорс контроль.
(Обучение модеров тулзам, поддержание сорс контроль дисциплины, и т.д.). Еженочный дамп юзерского кода и ddl таблиц в принципе устраивает, но неудобно прослеживать цепочку изменений через дифф попарно.

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

С учётом этих хотелок (незаметно следит за изменениями, умеет показывать цепочку изменений и позволяет маркировку стабильных версий), есть ли какой-нибудь плагин для Оракла?
...
Рейтинг: 0 / 0
Version Control для pl/sql
    #40005158
dmdmdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НеофитSQL
Есть желание проследить за историей изменений, не применяя полновесный сорс контроль


Есть желание понять, что 2 x 2 = 4, не применяя арифметику.

Дорогой Тролль, мы за вами с интересом наблюдаем.
...
Рейтинг: 0 / 0
Version Control для pl/sql
    #40005164
НеофитSQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
dmdmdm

Есть желание понять, что 2 x 2 = 4, не применяя арифметику.


Вы неправильно думаете об арифметике. Таблицу умножения зубрят, а не понимают.

Вопрос был к тем, кто научился пользоваться сорс контролем только для учета, не для контроля.
...
Рейтинг: 0 / 0
Version Control для pl/sql
    #40005172
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НеофитSQLТаблицу умножения зубрят, а не понимают.

Зубрят её в начальной школе. В средней - уже понимают как она составлена. Перестаньте уже
зубрить.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Version Control для pl/sql
    #40005173
Фотография кит северных морей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да ладно, абсолютно резонный вопрос. полным-полно мест, где процесс разработки в части БД отсутствует в принципе, а скрипты для наката на прод в лучшем случае генерируются диффом между продом и девом, а в худшем всё просто переносится вручную.

в целом никто не мешает написать системный триггер, который будет срабатывать на компиляцию пакета, и сохранять текст того, что было скомпилировано, в какую-нибудь таблицу в удобном формате. мы когда-то примерно так на скорую руку решали задачу учета изменений в условиях отсутствия СКВ.

еще имеет смысл почитать про audit trail - возможно, его тоже можно научить это делать. сам не пробовал.
...
Рейтинг: 0 / 0
Version Control для pl/sql
    #40005186
graycode
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
НеофитSQL
но неудобно прослеживать цепочку изменений через дифф попарно.

То есть ты хочешь специфическое средство визуализации, тулза с первой страницы темы возможно это умеет 20832349 , хотя я не пробовал))
...
Рейтинг: 0 / 0
Version Control для pl/sql
    #40005202
НеофитSQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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.
SQL> call zz.snap(); 

Call completed.

SQL> call zz.show('new units');
ZZ

Call completed.

SQL> call zz.show('new lines');
ZZ 19   function  showt(op in varchar2, unit in varchar2 default null) return ZZTABLE PIPELINED;
ZZ 26     if op like 'new lines' then
ZZ 27       for v in (select * from zzcode z where z.name like nvl(unit,'%')
ZZ 29         besapi.Print( v.name, v.line, v.text );
ZZ 33       besapi.Print('invalid parameters');
ZZ 41       for v in (select * from zzcode z where z.name like nvl(unit,'%'))
ZZ 42         pipe row (v);
ZZ 47   end showt;

Call completed.



zz.snap('метка') - хватает состояние кода на данный момент
zz.show(команда, модуль, дней смотреть) - показывает чего нового появилось.
zz.showt(..) - то же что и .show, но пайплайнит таблицу.

Научился делать папйлайн без курсора, может пригодится.
В процессе выяснилось что 11.2 не умеет делать SHA256, пришлось позаимствовать извне.
...
Рейтинг: 0 / 0
Version Control для pl/sql
    #40005222
Bfink
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НеофитSQL

В процессе выяснилось что 11.2 не умеет делать SHA256, пришлось позаимствовать извне.


Не умеет делать 11.2.0.1, 11.2.0.4 успешно делает
...
Рейтинг: 0 / 0
Version Control для pl/sql
    #40005225
НеофитSQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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.
SQL> select dbms_crypto.hash('1111',3) from dual;
DBMS_CRYPTO.HASH('1111',3)
--------------------------------------------------------------------------------
7B107F2C48DAE774DBB46E72C84246102CE5B06C

SQL> select dbms_crypto.hash('1111',4) from dual;
select dbms_crypto.hash('1111',4) from dual
ORA-28827: invalid cipher type passed
ORA-06512: at "SYS.DBMS_CRYPTO_FFI", line 131
ORA-06512: at "SYS.DBMS_CRYPTO", line 72
SQL> 



Я собирался тянуть SHA256 через WinCAPI, но стыковки с С ДЛЛ настолько нудная что плюнул и сделал через джаву.

Кто-то пользовался механизмом подгрузки С-шных процедур в Оракл? Он хорошо отполирован, или из разряда Оракл мультимедиа?
Я не говорю о внутреннем pragma interface, а про поддерживаемый медод, который через RPC для безопасности.
...
Рейтинг: 0 / 0
Version Control для pl/sql
    #40005234
mnbvcx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
НеофитSQL

...

Я за пару часов сделал модуль который показывает что поменялось в Pl/SQL за последний день, вывод корявый но он позволяет отследить какие модули трогались (и следовательно могут требовать code review или ретест), а какие нет.

На неделю добавлю историю изменений. Жаль, он не покажет "кто" именно внес изменения, я еще подумаю как это сделать.


А в чём смысл смотреть эти изменения?
На тестовых серверах хз сколько из этих изменений в релиз пойдут. И если пойдут, то перед этим и так будет стадия код ревью?
...
Рейтинг: 0 / 0
Version Control для pl/sql
    #40005271
НеофитSQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mnbvcx,

Смысл тот, что я описал ранее - облегчить анализ изменений в объеме недокументированого кода.

Скорее лог изменений, чем полный соурс контроль.
...
Рейтинг: 0 / 0
Version Control для pl/sql
    #40005284
graycode
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
НеофитSQL,

Лог изменений где? На девелоперском сервере? И зачем он нужен?
...
Рейтинг: 0 / 0
Version Control для pl/sql
    #40005291
НеофитSQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
graycode,

На живом, который трогают ежедневно.
Есть дев-схема, которую создали для меня.

У нас, как это, неосознаный CI процесс. :)
В октябре пойдет волна изменений по одной из инициатив, и я хочу иметь возможность их анализа.
...
Рейтинг: 0 / 0
Version Control для pl/sql
    #40005374
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НеофитSQL,

Процесс менять надо, а не SHA256 на ровном месте прикручивать.

Если цель
НеофитSQL
следовательно могут требовать code review или ретест

то собирать только текст пакетов - глупо. Например, изменился тип поля в таблице, на которую в пакете есть переменная%rowtype. Код пакета не изменится, хэш тоже. А работать начнёт по другому.

Или поменялась вьюха (поля перепутали местами), а в пакете (по рукам за такое)
Код: plsql
1.
select v.* bulk collect into ...

.

Код прежний, результаты новые.

Лучше процесс организуйте с версионированием на этапе разработки и запретом выката на прод кода не слитого в нужную ветку.
...
Рейтинг: 0 / 0
Version Control для pl/sql
    #40005393
Фотография Amberit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Неофит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% человеческих косяков выявляем еще на этапе деплоймента на снапшот продакшена.

Для большинства этих шагов написана внутренняя автоматизация, т.е. ручное вмешательство в процесс - минимальное.

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

Как-то так...
...
Рейтинг: 0 / 0
Version Control для pl/sql
    #40005568
НеофитSQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Amberit,

Все хорошие советы для организаций, которые готовы вводить соурс контроль. Здесь это (пока) не та ситуация.

Велосипед изобретался исключительно с целью изобретения велосипеда, как многие мои хобби-задачки.
После реализации пробной версии нашел несколько недостатков построчного подхода, т.к. реализация качественного diff или тем более 3-сравнения в PL/SQL превращается в немаленькую задачу, плюс SQL+ накладывает ограничения на визуализацию. Рассматривать диффы без GUI - неблагодарное занятие.

Поэтому польза для такого небольшого внутреннего тулза наверное находится на уровне юнита (напр. юнит АБВ и его зависимости не менялись за последний месяц - есть повод считать юнит сравнительно стабильным), но не на уровне строчек. Что, в общем, и следует ожидать от игрушки сделанной за час-два.

Для более общего change log процесса я собираюсь посмотреть на CVS/JIRA/... которым кормить ночные бэкапы исходников и в которых потом можно порыться по поводу изменений что/где/когда.

Кроме того, я узнал о существовании специализированных продуктов, напр. https://www.apexsql.com/sql-tools-source-control.aspx (еще не смотрел), которые оптимизированы для SQL кодеров.

Если найду решение, которое отвечает моим требованиям и удобно в работе - напишу здесь. Оно может помочь тем, кто пока не готов менять процесс под соурс контроль, но хочет возможность видеть историю изменений. Это совершенно нормальная хотелка для тех, кто знаком в TimeMachine(Эппл) или версиями файлов в Винде.
...
Рейтинг: 0 / 0
17 сообщений из 67, страница 3 из 3
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Version Control для pl/sql
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]