2014年10月のSPUを開発データベースに適用した直後、ITスタッフのメンバーは、ArcCatalogおよびArcMapとの直接接続接続がクラッシュするという苦情を言い始めました。アプリはデータベースに接続することすらできませんでした。 Oracle Clientをデータベースのバージョン(11.2.0.1)に一致するように11.2.0.4にアップグレードしても、さまざまなことを試しましたが、何も機能しませんでした。 10046トレースとクライアント側のSQL*Netトレースの両方を有効にすることもできました。 10046トレースでは、SQLステートメントがデータベースに対して発行された場所を確認できました。リスナーログは、クライアントが接続を確立したことを確認し、10046は、ArcCatalogが直接接続接続を確立するたびにOracleデータベースに発行された標準SQLステートメントを示します。 10046トレースファイルの最後を除いて、この最後の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
そのため、SQLが発行されて解析されました。そして、実行前に、クライアントへのSQL*Netメッセージ 待機イベントが発生しました。これで終わりです。そこで、SQL*Netトレースに目を向けました。そのトレースは次のことを明らかにしました:
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 ] [] [] [] [] [] [] [] [] [] []
OCI-24550エラーはあまり有益ではありませんでした。同僚がこの正確な動作を説明するESRIドキュメントを見つけ、バグ#82555が発生したときに、もう少し掘り下げようとしていました。そのドキュメントは次のとおりです。
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はパッチを避けるように言っています。しかし、ESRIとOracleがお互いに指を向けるのをやめるのを待ちたくありません。 ESRIのバグが迅速に修正されていないことも私の経験です。 SELECT_CATALOG_ROLEロールを付与するための回避策は、私にとって非常にうまく機能しました。これが同じ問題を抱えている他の人に役立つことを願っています。