Edycja / Przedmowa: To pytanie zostało przeniesione z SO, ponieważ jestem szczególnie zainteresowany pytaniem o przekroczenia limitu czasu w zapytaniach do łącza DB. Dostarczone obejście z SO jest nieco OK, ale naprawdę interesuje mnie samo pytanie.
Motywacja:
miałem jedno zapytanie działające „na zawsze” (ponad 2 dni, dopóki nie zabiłem sesji), które używało łącza do bazy danych. Wydawało się, że problem polega na tym, że zdalna baza danych stała się niedostępna i z jakiegoś jeszcze nieznanego powodu nie ORA-02068
zgłoszono żadnego (nie do omówienia tutaj), a zapytanie tylko czekało i czekało.
(Zapytanie jest wysyłane przez zadanie dbms_scheduler, które wykonuje procedurę w pakiecie PL / SQL. W rezultacie zadanie również zostało zablokowane. Ale to nie jest szczególnie interesujące dla sedna tego pytania)
Symulowałem tę sytuację, wprowadzając jedną z moich testowych baz danych w tryb wyciszenia i sprawdziłem ją przez łącze do bazy danych. Zgodnie z przewidywaniami kwerenda czekała na ręczne anulowanie lub zdalne wykonanie DB.
Pytanie:
Nie mam kontroli nad zachowaniem i czasem działania zdalnej bazy danych, dlatego szukam możliwości ustawienia limitu czasu dla zapytania korzystającego z łącza do bazy danych.
Przeglądałem już profile ( CPU_PER_CALL
itp.), sqlnet.ora
Parametry, dodawanie lokalnych parametrów nazewnictwa bezpośrednio do ciągu połączenia (np. Dodawanie (connect_timeout=10)
do definicji łącza do bazy danych), uruchamianie komendy ... for update wait 1
, ale albo działają one dla zajętych lub bezczynnych sesji, ale nie na sesje oczekujące.
Dlatego szukam opcji po „lokalnej” stronie łącza do bazy danych, która określa limit czasu dla zapytań dotyczących łączy do bazy danych.
Niektóre rozwiązania podobają się alter session set xyz
lub select ... from a@b "wait 100" --(yes, I know this syntax doesn't exist)
byłyby mile widziane, ponieważ nie mam uprawnień DBA do tych konkretnych DB.
Obecnie używam 10gR2, ale w ciągu kilku tygodni przeprowadzę aktualizację do 11gR2, więc pomysły na każdą z tych wersji będą przydatne.