oracle - zlinkowane bazy
Marek Horodyski - 31-03-2006 00:15
oracle - zlinkowane bazy
W srodowisku sa dwie bazy oracl polaczone dblinkiem z bazy B do bazy A. Otwarcie linku w bazie B jest niejawne. Baza A ( argumentujac potrzebami wydajnosciowym) zamyka polaczenie po pownym czasie jego niewykorzystywania po swojej stronie. Ponowna proba uzycia go po stronie bazy B generuje blad z bazy A. Aby temu zapobiec, z bazy B probuje jawnie zamknac polaczenie. Jednakze sledzenie w aplikacji czy link zostal otwarty (nie zawsze byl), wymaga zmian w kilku miejscach, a wydaje mi sie, ze tą informacje powinienem moc dostac z samej bazy. I tu jest moje pytanie : czy i jak mozna sprawdzic status polaczenia o okreslonej nazwie, aby swiadomie a nie w ciemno wydac polcenie "alter session close databases link xxxx" ? Admini poustawiali "samopas" zamkniecia po stronie bazy A, ale niestety nie umieli mi odpowiedziec jak mam to sprawdzic po stronie klienta.
Popzdrawiam, Marek Horodyski
dap - 31-03-2006 00:16
Marek Horodyski wrote: > W srodowisku sa dwie bazy oracl polaczone dblinkiem z bazy B do bazy A. > Otwarcie linku w bazie B jest niejawne. Baza A ( argumentujac potrzebami > wydajnosciowym) zamyka polaczenie po pownym czasie jego > niewykorzystywania po swojej stronie. Ponowna proba uzycia go po stronie > bazy B generuje blad z bazy A. Aby temu zapobiec, z bazy B probuje > jawnie zamknac polaczenie. Jednakze sledzenie w aplikacji czy link > zostal otwarty (nie zawsze byl), wymaga zmian w kilku miejscach, a > wydaje mi sie, ze tą informacje powinienem moc dostac z samej bazy. I tu > jest moje pytanie : czy i jak mozna sprawdzic status polaczenia o > okreslonej nazwie, aby swiadomie a nie w ciemno wydac polcenie "alter > session close databases link xxxx" ? Admini poustawiali "samopas" > zamkniecia po stronie bazy A, ale niestety nie umieli mi odpowiedziec > jak mam to sprawdzic po stronie klienta.
Prawdopodobnie dba ustawili na Bazie A timeout dla polaczen - i to powoduje ich zamkniecie.
Z tego co przetestowalem (9i) nie da sie tego sprawdzic po stronie B czy ma otwarty link. Po stronie A jest otwarta sesja z komputera B. Mozesz to jednak zrobic zgodnie z filozofia Oracle a nie Microsoftu. Microsoft (MSSQL) zwykle sprawdza czy cos istnieje, i jesli nie to dany obiekt jest tworzony. Oracle tworzy obiekt, a jak wystapi jakichs wyjatek to go odpowiednio obsluguje.
Jesli mozesz to zrob obsluge wyjatku, a nie baw sie w pytanie bazy czy i co istnieje. Z drugiej strony jak jest to zbyt duzym problemem, wysylaj po prostu co pewnie czas; select sysdate from dual@A ; Z tego co pisales bedzie ono zawsze poprawne - bo jak link jest otwarty to zostanie wykonane, jak zamkniety to otworzy i nastepnie wykona.
dap
Marek Horodyski - 31-03-2006 00:16
Użytkownik "dap" <news997@gazeta.pl> napisał w wiadomości news:e0g9k0$cbn$1@inews.gazeta.pl... > Marek Horodyski wrote:
[ ... ]
> Prawdopodobnie dba ustawili na Bazie A timeout dla polaczen - i to > powoduje ich zamkniecie. > dokladnie tak zrobili, o czym my sie dowiedzielismy z informacji o bledach
> Z tego co przetestowalem (9i) nie da sie tego sprawdzic po stronie B czy > ma otwarty link. Po stronie A jest otwarta sesja z komputera B.
A to jest wlasnie 9i, a b niestety 8.1.7
> Mozesz to jednak zrobic zgodnie z filozofia Oracle a nie Microsoftu. > Microsoft (MSSQL) zwykle sprawdza czy cos istnieje, i jesli nie to dany > obiekt jest tworzony. > Oracle tworzy obiekt, a jak wystapi jakichs wyjatek to go odpowiednio > obsluguje.
I tu mam problem - gdyz jest to cos ksztalt przetwarzania wsadowego, i obsluzyc wyjatek moge, a tak troche "na okolo". Musze dopisac obsluge wyjatkow w wykonaniu skryptow - ale ten czas :(. Idealnym rozwiazaniem byloby sprawdzenie stanu.
> Jesli mozesz to zrob obsluge wyjatku, a nie baw sie w pytanie bazy czy i > co istnieje. Z drugiej strony jak jest to zbyt duzym problemem, wysylaj po > prostu co pewnie czas; > select sysdate from dual@A ; > Z tego co pisales bedzie ono zawsze poprawne - bo jak link jest otwarty to > zostanie wykonane, jak zamkniety to otworzy i nastepnie wykona.
Zeby bylo smieszniej - to po powyzszym zapytaniu dostane systime bazy lokalnej, ale pomysl jest dobry, gdyz teraz mam tylko problem z zamknieciem. Wolam skrypt ktory ma cos wyslac, a on nie znalazl znacznika do wyslana i nie otworzyl polaczenia, i jak wolajacy probuje zmknac, dostaje wyjatek, ze nie ma co zamykac. Wiec przed zamknieciem doloze powyzsze, co na pewno nie moze obciazac bazy A, i zaraz po tym zamkne polaczenie. Dzieki za "wydajny" pomysł :)
Pozdrawiam, Marek Horodyski
zanotowane.pldoc.pisz.plpdf.pisz.pleffulla.pev.pl
|
Oracle, SQL, PL/SQL. Jak =?ISO-8859-2?Q?napisa=E6_zapytanie=2C?==?ISO-8859-2?Q?_kt=F3re_zwr=F3ci_nazw=EA_atrybutu=2C_kt=F3reg o?==?ISO-8859-2?Q?_warto=B6ci_spe=B3niaj=B1_zadany_warunek?=
Oracle 19g +Insert +Insert +Insert...
[oracle] zapytanie dynamiczne z =?ISO-8859-2?Q?=22dynamiczn=B1_?==?ISO-8859-2?Q?nazw=B1_tabeli=22?=
[Oracle] jak =?ISO-8859-2?Q?ograniczy=E6_pami=EA=E6_dla_se?==?ISO-8859-2?Q?rwera=3F?=
=?ISO-8859-2?Q?=5BOT=5D_Zdany_egzamin_Oracle_1Z0-007_a?==?ISO-8859-2?Q?_brak_informacji_na_stronie_Prometric_-_czy?==?ISO-8859-2?Q?_co=B6_nie_tak=3F?=
[oracle] czy da =?ISO-8859-2?Q?si=EA_z_poziomu_procedury_?==?ISO-8859-2?Q?zrobi=E6_kopi=EA_zapasow=B1=3F?=
[oracle 10g] czy =?ISO-8859-2?Q?mo=BFna_wy=B3=B1czy=E6_wszys?==?ISO-8859-2?Q?tkie_wi=EAzy_w_schemacie=3F?=
MSSQL Express czy Oracle Express
=?iso-8859-2?q?[oracle]_Jak_sprawdzi=E6_wielko=B6=E6_tabeli_=3F=3F?=
=?ISO-8859-2?Q?Poszukjue_ksi=B1=BFki_"Oracle_?= =?ISO-8859-2?Q?optymalizacja_wydajno=B6ci"..?=
zanotowane.pldoc.pisz.plpdf.pisz.plnawschodzie.xlx.pl
Cytat
Decede mihi sole - nie zasłaniaj mi słonca. Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści Hoc fac - tak czyń. A tergo - od tyłu; z tyłu. I czarne włosy posiwieją. Safona |
|