Grzegorz Ludwiczek

Grzegorz Ludwiczek Specjalista d/s baz
danych i systemów
operacyjnych,
KAMSO...

Temat: z cyklu: "co lient potrafi nawyrabiać" i przy okazji...

Cześć
Właśnie mam okazję przerabiać temat/incydent co do którego sam prawdopodobnie bym nie wpadł, że takie coś można zrobić i wcale bym się nie zdziwił, gdyby takich jak ja było więcej :-)
Klient ma sobie RACa na 2 serwerach, na tym jakąś bazę z 2 instancjami - absolutny standard, żadnych "udziwnień".
I tenże Klient stwierdził sobie, że przetestuje czy backupy poprawnie się wykonują - chwała mu za to :-)
Wszystko wyszło mu bardzo dobrze, postawił drugiego klastra na wirtualkach, pokonfigurował, odtworzył z kopii bazę produkcyjną w całości - pełny sukces.
Aż za bardzo :-)

Klient ten strzelił dwa błędy/problemy.
1. Odtworzył to w swojej sieci produkcyjnej, nadał nowe IPki ale w tej samej sieci z tymi samymi DNSami. Czyli zmienił IPki, zmienił nazwy hostów, nie zmienił nazw bazy/instancji (to ważne)
2. Nie zmienił parametru remote_listener ! czyli parametru który mówi - na jakim listenerze poza lokalnym serwerem mają się zarejestrować instancje !
3. Właściwie to jeszcze 3ci błąd - po odtworzeniu tego wszystkiego zostawił to uruchomione ... bo chciał później jeszcze potestować.

Następnego dnia zaczął dostawać zgłoszenia, że czasami aplikacja wolno działa.
Potem jeszcze doszło w końcu "ale mi zniknęły moje dane które wcześniej wprowadziłam" - ale to już później.

Co się stało:
- odtworzona testowo baza zarejestrowała się na produkcyjnym listenerze (z parametru remote_listener - rozwiązana poprawnie po produkcyjnych DNSach) - ta sama nazwa bazy/instancji/dbid itp.
- użytkownicy (na szczęście nieliczni) którzy mieli wpisane w tnsie nazwę bazy a nie serwisów, łączyli się ... na zasadzie równoważenia obciążenia. Raz lądowali w bazie produkcyjnej, raz w testowej. Nazwy bazy/instancji zostały takie same, baza odtworzona z najnowszego backupu, więc nikt się na początku nie zorientował, że "coś tu nie gra".
- gdybym tego sam nie zobaczył i znalazł, to pewnie przez jeszcze jakiś czas nikt by się nie zorientował, tylko zaczęłyby się sypać zgłoszenia, że "znikają/pojawiają się dane".
Tak naprawdę znalazłem tylko 2 miejsca w których to można było znaleźć:
1. lsnrctl status pokazywał zarejestrowane 4 instancje a nie 2 (dla bazy, dla serwisów zostały 2) - przy czym, ponieważ Klient się nie powiedział wcześniej co zrobił - złożyłem to na karb jakiegoś błędu i kazałem wszystkich przepiąć na serwisy, bo te działały prawidłowo (serwisów na szczęście nie przeniósł na testowy serwer)
2. host_name w v$instance pokazywał inne nazwy hostów (na szczęście, ale to zauważyłem dopiero później, jak już zacząłem coraz głębiej szukać)

Jak już wszystko się wyjaśniło, to oczywiście wszyscy mieli "zabawę" bo trzeba poskładać dane z obydwu baz "do kupy", ale problem jak dla mnie leży gdzieś indziej.
Na szczęście miałem okazję "zobaczyć sam" co się stało i jak, ale co by było, gdybym tego nie znalazł, a Klient pewnie po max. kilku dniach wyłączył te serwery testowe ? Praca pod względem wydajności by się poprawiła, ale zostałaby baza bez wpisanych danych, mimo, że są wydruki jakichś dokumentów itp, dodatkowo byłyby wydruki dokumentów ze zdublowaną numeracją - podejrzewam, że byłaby niezła awantura i oskarżenia o "błędy w aplikacjach". A ja próbuję po logach znaleźć ślad, ze takie coś miało miejsce i właściwie ... nic nie ma ! Powtarzam - sidy bazy/instancji były takie same, podstawowa różnica to host_name (i ewentualnie IP), ale tego nigdzie w logach nie znalazłem, czyli jak na razie - nie mam żadnego jednoznacznego śladu "co się stało". Mam, że rejestrowały się w listenerze bazy, ale nie mam z jakich host_name'ów ! Były to dwie niezależne chociaż takie same bazy, każda z 2 instancjami (więc nawet nie znajdę, że baza miała 4 instancje bo nie miała!). Szukać IMHO można tylko w listenerze, bo nawet klastry były 2. A po wyłączeniu testowych szukać mógłbym tylko na serwerach produkcyjnych, bo Klient by pewnie nie wpadł "co nabroił" a nawet jakby wpadł to na 90% by się nie przyznał :-) - na testowych to bym widział, że coś się do nich łączyło więcej niż powinno.

Czy ktoś ma jakiś pomysł: gdzie / po czym można by po jakimś czasie takie coś wykryć ?

To tak do przemyślenia i "pośmiania się" na weekend :-)

P.S. RAC i baza w wersji 11.2.0.3 na linuksach jakby ktoś chciał potestować.Grzegorz Ludwiczek edytował(a) ten post dnia 02.02.13 o godzinie 08:57

Temat: z cyklu: "co lient potrafi nawyrabiać" i przy okazji...

Bez włączonego audytu to raczej nie ma szans. Choć ten Twój przypadek jest tak beznadziejny, że pewnie pozostałoby tylko rozłożenie rąk i domysły (po zaoraniu wirtualki). Dobrze mieć gdzieś z tyłu głowy, że taki przypadek też wchodzi w grę.

Następna dyskusja:

ora-01455 przy rman'ie




Wyślij zaproszenie do