ArcGIS Server(ArcSDE)からOracleデータベースに送信されたすべてのSQLクエリを含むログファイルを生成したいと思います。そうする方法はありますか?WindowsでOracle 11gとArcGIS Server 10.0を使用しています。ArcSDEは直接接続で使用されます。
ArcGIS Server(ArcSDE)からOracleデータベースに送信されたすべてのSQLクエリを含むログファイルを生成したいと思います。そうする方法はありますか?WindowsでOracle 11gとArcGIS Server 10.0を使用しています。ArcSDEは直接接続で使用されます。
回答:
実際には、ArcSDE接続をトレースする方法がいくつかあります。クライアントアプリケーションとArcSDEクライアント間の呼び出しはSDEトレースファイルに記録され、ArcSDEクライアントとサーバー間のSDE Interceptファイルに記録され、ArcSDEサーバーは特定のイベントをサービスまたは直接接続ログに記録し、データベース呼び出しがログインしますDBMSログファイル。
-------------------------------------------------------------
| |
| Client (ArcObject, ArcCatalog, ArcGIS Server, ArcIMS...) |
| |
-------------------------------------------------------------
|
|
\|/
------------------ --------> SDE Trace
| |
| ArcSDE Client |
| |
------------------ --------> SDE Intercept
|
|
\|/
------------------- --------> SDE Intercept
| |
| ArcSDE Server | --------> ArcSDE Service Logfile, or direct connect log
| |
-------------------
|
|
\|/
------------------
| |
| DBMS | -----------> DBMS logfiles or trace
| |
------------------
ArcSDEトレースファイルは、ArcSDEクライアントに対して行われたすべての呼び出しを記録します。通常、これらのファイルは大きく、ノイズが多くなります。dbinitヘルプのSDETraceLocとSDETraceModeを見てください。これらの値は、アプリケーションを起動する前に環境変数として設定することもできます。これは、アプリケーションおよび直接接続で機能します。
通常、ArcSDE Interceptファイルの方が役立ちます。それらは、どの通話にどの時間が費やされているかを示します。ただし、SDEはストリームの概念に基づいて機能します。特定のコマンド(挿入、更新、削除など)は、ストリームに情報を設定してから、コマンドを実行します。通常、ストリーム番号は、インターセプトファイル内のコマンドの後の最初の整数です。多くのストリームがある場合、これは混乱を招く可能性があります(最大26個のストリームを見てきました)。詳細については、dbinitヘルプの SDEInterceptおよびSDEInterceptLoc またはSDE Interceptファイルに関するこのKB記事を参照してください。
%SDE_HOME%\ etcフォルダー内のArcSDEサービスログファイル、または%SDE_HOME%\ etcまたは%TEMP%フォルダー内の直接接続ログファイルには、サービスまたは接続で行われていることに関する一般情報が含まれています。ログに記録される情報の量は、SDEVerbose変数を使用して増やすことができます(dbinit help)。
DBMSのログファイルとトレースは非常に便利です。しかし、彼らはあなたに絵の一部を与えるだけです。また、一部のデータベース(Oracleなど)では、実際にはDBMSトレースにすべてのタイプのエラーが含まれていません。SQLトレースを有効にするには多くの方法があります。上記のDevdattaのコメントは詳細情報へのリンクです。