Czas dla administratora. Jak wy byście to zorganizowali?

0

Witajcie,

Dzisiaj chciałem Was podpytać o temat prac serwisowych na bazie.

Pracuję w firmie gdzie jest główna baza danych (oracle) na której pracuje setki jeśli nie tysiące użytkowników/aplikacji. System jest na tyle rozproszony, że ja w zasadzie sam nie wiem nawet kto z tego korzysta bo mamy wiele endpointów wystawionych dla dostawców zewnętrznych. No i właśnie tutaj zaczynają się schody. Nie mając kontroli nad tym kto i kiedy korzysta z bazy proces wgrywania zmian/aktualizacji/fixów na bazie jest stosunkowo trudny tu jakiś lock na obiekcie tu jakaś transakcja, tu jakiś raport ... Ostatnio na wgrywaniu zmian musieliśmy "ubić" część sesji ponieważ blokowały wgrywanie np nowych wersji pakietów itd. Ogólnie wraz z adminem sobie poradziliśmy trwało to wszystko dobrą godzinę ale okazało się, że właśnie jakiś podmiot zewnętrzny nie dostał informacji o planowanym wgrywaniu zmian i utknęli z robotą na godzinę. Afera się zrobiła i od razu przylecieli z nowymi "procedurami", że mamy teraz wszystkich informować o wgrywkach .... (pomijam już corpo bzdury, że nikt nam nie powiedział komu i co mam komunikować ale o tym napiszę na microblogu w wolnej chwili).

Do rzeczy .... przydałby mi się mechanizm czasowego blokowania logowania użytkowników.

Wymyśliłem takie rozwiązanie, że dam adminom narzędzie (aplikację / skrypt), która do nowej tabeli wprowadzi informacje o planowanym upgrade. Na trigerze AFTER LOGON on DATATABASE sprawdzę czy w najbliższych 3 dniach jest planowany upgrade i jeśli tak to wyświetlę notyfikację logującej sesji (w jaki sposób to już inna kwestia - mam kilka pomysłów i opcji). Teraz w momencie gdy admin rozpocznie wgrywanie skryptów to najpierw wywalę wszystkie sesje, a następnie przy logowaniu (znaczna część microserwisów ponawia automatycznie połączenie przy zerwaniu) automatycznie rzucę RAISE APPLICATION ERROR z informacją, że system w trakcie aktualizacji od ... do ... i nie pozwolę się zalogować takiemu użytkownikowi. Po skończonej wgrywce admin puści skrypt/aplikację i zakończy wgrywkę automatycznie odblokowując logowanie do bazy.

Pytanie do Was czy znacie lepszy sposób? Może oracle sam w sobie ma taki ... "czas dla admina" ? Będę wdzięczny za wszelkie sugestie.

0

To jest zewnętrzny producent systemu - czy własny firmy?
Stosownie do tego pytanie do działu wsparcia - głównego naczialstwa

Firmy miewają jakiś "switch" aby zmniejszyć/wyłączyć aktywność, nie gwałcąc trwających czynności nadmiernie , który np blokuje rozpoczynanie nowych akcji, albo coś podobnego.
Często pokrewny mechanizmowi, który pilnuje ilości sztuk licencji

1

W firmie to chyba najważniejsze abyś miał kryty zadek :D
Wysyłasz informację kiedy będzie "Czas dla admina" i jak nadchodzi czas to działasz.
Z czasem ludzie się nauczą.
Ewentualnie kombinować "Czas dla admina" był w czasie najmniejszej aktywności użytkowników (np. 2:37 :D)

0

U mnie w jednej z firm, w której pracowałem odbywało się to w taki sposób, że wysyłało się maila do wszystkich, nawet Pani Jadzia z recepcji, że następnego dnia od tej do tej będa prowadzone prace na bazie. Kto się nie dostosuje, jego problem, informacje dostal.

0

Ok dupokryjka swoją drogą, ale chodzi mi o techniczny aspekt tego zagadnienia. W normalnej firmie miałbym lustrzany serwer i w momencie aktualizacji ruch przekierował na ta druga maszynę potem znowu wlasciwa maszyna replikacja danych i upgrade lustrzanki. Tutaj nie ma takiej możliwości i szukam technicznego rozwiązania. Na ten moment nie wymyśliłem nic lepszego a może oracle sam z siebie ma cos takiego. (To samo mieliśmy z anonimizacja danych ... developer sie narobil a oracle ma to juz gotowe)

2

ALTER SYSTEM ENABLE RESTRICTED SESSION;

Tylko użytkownik z uprawnieniem RESTRICTED SESSION może się zalogować (czyli wszystkie sesje musisz najpierw wywalić).

Albo
ALTER SYSTEM QUIESCE RESTRICTED;

czyli sesja po przejściu do stanu INACTIVE nie może wrócić do ACTIVE dopóki system jest w stanie QUIESCED.

1

@wartek01: jeśli to Oracle, to masz jeszcze funkcjonalność "edycji".

1 użytkowników online, w tym zalogowanych: 0, gości: 1