Narzędzia programisty PL/SQL - baza developerska oracle docker
Pracując w zespole programistów baz danych jest problem z równoczesnym rozwojem kilku zadań jednocześnie. Jeszcze pół biedy, kiedy zmiany wykonywane przez realizowane są w różnych obszarach, bez zmian struktury tabel. Istnieje szansa, że będzie można kompilować obiekty i wykonywać testy jednostek programowych. Gorzej, gdy te warunki nie są spełnione. Wymaganie, aby dla każdego programisty admini podnosili oddzielną instancję bazy deweloperskiej zalatuje utopią. I tu wjeżdżają możliwości jakie niesie ze sobą docker.
Oryginalne repozytorium Oracle zawiera skrypty do tworzenia obrazów bazy Oracle w różnych wersjach. Zwykle wymagane są dodatkowe pliki, przy wywołaniu trzeba podać wersję i numer bazy. Potem już wystarczy podnieść kontener na bazie stworzonego obrazu.
Niestety, obraz z tego repo będzie duży i ciężki, zatem najlepiej wyposażony we wszystkie możliwe bajery. Aby zmniejszyć problemy licencyjne rozpatrywane do tworzenia w wersji XE.
Aby wyciąć wszystkie zbędne składniki, a zostawić sam core bazy szukałem rozwiązania. I znalazłem rozwiązanie przygotowane przez Francka Pachota dla Oracle 19 XE.
Modyfikacje tego skryptu wymagały jeszcze doinstalowania paru programów - należało to umieścić w skrycie buildowania. Doinstalowane zostały utPLSQL, java, Liquibase, sqlCL, by już w trakcie podnoszenia kontenera były one dostępne. W trakcie podnoszenia następuje inicjalizacja bazy danych (około 20s), kopiowanie własnego repo do środka kontenera i jego instalacja na bazie, potem instalacja utPLSQL i uruchomienie testów jednostkowych.
Rozwiązanie sprawdziło się, każdy programista na początku pracy w ramach zadania aktualny stan kodu, a zmiany nanosić na własnym kawałku. Potem testować na tym swoim oddzielnym serwerze.
W zeszłym pojawiła się konieczność upgrade'u bazy do najnowszej wersji 23. Początkowo dostosowywałem skrypty Francka z 19 na 23, ale potem zmieniłem strategie i zmieniłem obraz wyjściowy na ten od gvenzla.
Zostały zaktualizowane wersje również dołączanych programów towarzyszących. Różnica też była taka, że w 23 postawiony został nacisk na korzystanie z PDB. Tamteż zainstalowana została utPLSQL, tylko w trakcie podnoszenia kontenera należy dodać uprawnienia i synonimy dla nowo utworzonego usera.
Teraz każdy programista może postawić sobie bazę z każdą wybraną wersją kodu w repozytorium. Oprócz do developmentu taka baza z kontenera może być użyta także do sprawdzenia poprawności kodu (utPLSQL) w trakcie buildowania (bamboo), ale to opiszę w kolejnej części.