0

Oracle データベースに書き込むサード パーティのアプリケーションがあります。アプリケーションの 1 つのコンポーネントは特定のパラメーターを指定してデータを返しませんが、アプリケーションの別のコンポーネントは同じパラメーターでデータを返します。このアプリケーションのソース コードはありませんが、データベースには適切な情報が含まれていることがわかります。

正常に動作しないコンポーネントがORA-01403oracle データベース サーバーから返されます。これは、データが見つからないことを意味しますが、インストールしたパケット スニファで見られるように、構文エラーに関連している可能性があります。

アプリケーションのさまざまなコンポーネントが実際に生成するクエリの違いを確認したいと考えています。

また、これらのクエリをコマンド ラインまたは他のデータベース ビューアで実行して、何が返されるかを確認したいと考えています。

実際に実行されているクエリを示すトレースを使用してデータベースを監視するにはどうすればよいですか? また、これらを IP アドレスまたはソースで分離したいと思います。

Oracle 10g エンタープライズの使用

4

4 に答える 4

3

これは、AWS Oracle RDS インスタンスでうまく機能することがわかりました。データベースに接続しているLinuxインスタンスからtcpdumpを実行しました...

tcpdump tcp port 1521 -s 0 -l -w -  | strings | perl -e '
while(<>) { chomp; next if /^[^ ]+[ ]*$/;
  if(/^(SELECT|UPDATE|DELETE|INSERT|SET|COMMIT|ROLLBACK|CREATE|DROP|ALTER)/i) {
    if (defined $q) { print "$q\n"; }
    $q=$_;
  } else {
    $_ =~ s/^[ \t]+//; $q.=" $_";
  }
}'

それが他の誰かを助けることを願っています。

于 2016-06-16T09:51:10.557 に答える
0

IIRC、TOADはあなたが望むことをします。

さらに、無料トライアルがあります-http://www.quest.com/toad-for-oracle/software-downloads.aspx

他にも興味深いダウンロードがありますが(オラクルの無料のヒキガエルを検索)、それらの正当性を確信することはできません。

于 2013-01-15T17:09:31.347 に答える
0

クライアントが中間層レイヤーなしでデータベースに直接接続する場合、2 つの非常に単純なオプションがあります。

まず、ビューを使用して必要なセッションの ID を把握し、そのハッシュ値v$sessionでクエリを検索するかv$sql(ドキュメントでそれぞれの説明を確認できます)、セッションレベルの SQL トレースを有効にします(1) (2)およびプレーン テキストのトレース ファイルでクエリを取得します。v$sql_text

中間層がある場合、状況は少し複雑になりますが、トレースする必要があるセッションを把握するという点でのみです。ただし、いつでもシステム全体のトレースを有効にすることができます。

于 2013-01-16T01:23:06.727 に答える
0

パーティーに少し遅れましたが、私はこの問題に遭遇し、1 回限りの使用のためにデータベース サーバーに何かをインストールしたくなかったので、wireshark を使用することになりました。クエリはプレーンテキストで送信され、完全に読み取り可能でした。

于 2014-06-24T15:23:40.813 に答える