Zaraz po tym, jak zastosowałem SPU z października 2014 do naszej rozwojowej bazy danych, członkowie naszego personelu IT zaczęli narzekać, że połączenia bezpośredniego połączenia z ArcCatalog i ArcMap ulegną awarii. Aplikacja nie łączyłaby się nawet z bazą danych. Próbowałem różnych rzeczy… nawet aktualizowałem klienta Oracle do wersji 11.2.0.4, aby dopasować wersję bazy danych (była 11.2.0.1), ale nic nie działało. Posunąłem się nawet do włączenia zarówno śledzenia 10046, jak i śledzenia SQL*Net po stronie klienta. W śladzie 10046 mogłem zobaczyć, gdzie w bazie danych zostały wydane instrukcje SQL. Dziennik nasłuchiwania potwierdził, że klient nawiązał połączenie, a 10046 pokazuje standardowe instrukcje SQL, które zostały wysłane do bazy danych Oracle za każdym razem, gdy ArcCatalog nawiązuje połączenie bezpośrednie. Z wyjątkiem końca pliku śledzenia 10046, była ta ostatnia instrukcja SQL:
PARSING IN CURSOR #140250835575144 len=279 dep=0 uid=9459 oct=3 lid=9459 tim=1413920974829489 hv=3533534632 ad='7963a438' sqlid='5hq4svb99uxd8' SELECT r.owner, r.table_name, x.column_name, x.column_id, x.index_id, x.registration_id, x.minimum_id, x.config_keyword,x.xflags FROM SDE.table_registry r, SDE.sde_xml_columns x WHERE r.registration_id = x.registration_id AND (( r.table_name = 'GDB_ITEMS' AND r.owner = 'SDE')) END OF STMT PARSE #140250835575144:c=4999,e=5796,p=0,cr=147,cu=0,mis=1,r=0,dep=0,og=1,plh=1755489251,tim=1413920974829487 WAIT #140250835575144: nam='SQL*Net message to client' ela= 3 driver id=1413697536 #bytes=1 p3=0 obj#=297281 tim=1413920974829548
Więc SQL został wydany i przeanalizowany. A następnie, przed wykonaniem, wiadomość SQL*Net do klienta wystąpiło zdarzenie oczekiwania. I to koniec. Zwróciłem się więc do śledzenia SQL*Net. Ten ślad ujawnił następujące elementy:
DDE: Flood control is not active Incident 1 created, dump file: c:\oracle\product\11.2.0\client_2\log\oradiag_bpeasland\diag\clients\user_bpeasland\host_525531546_80\incident\incdir_1\ora_26000_24088_i1.trc oci-24550 [3221225477] [Unhandled exception: Code=c0000005 Flags=0 ] [] [] [] [] [] [] [] [] [] []
Cóż, błąd OCI-24550 nie był zbyt pouczający. Próbowałem dalej kopać, gdy kolega znalazł dokument ESRI, który dokładnie opisuje to zachowanie, a teraz mają błąd nr 82555. Oto ten dokument:
http://support.esri.com/en/knowledgebase/techarticles/detail/43293?utm_source=esri&utm_medium=email&utm_term=73110&utm_content=article&utm_campaign=oracle_patch_2014
ESRI mówi, aby unikać łaty. Ale wolałbym nie czekać, aż ESRI i Oracle przestaną wskazywać na siebie palcami. Z mojego doświadczenia wynika również, że błędy ESRI nie są naprawiane szybko. Obejście polegające na przyznaniu roli SELECT_CATALOG_ROLE zadziałało dla mnie całkiem dobrze. Mam nadzieję, że pomoże to innym, którzy mają ten sam problem.