開発中に、データベースには次のような多数の有効な接続があることがわかりました。
SELECT username, COUNT(*) FROM v$session GROUP BY username;
実際に接続している人を見つけるために、IPアドレスのリストを取得したいと思います。
一般的なウェブ検索と公式ドキュメントの閲覧中に、私はクエリを作成します。
SELECT username, seconds_in_wait, machine, port, terminal, program, module, service_name
FROM v$session
WHERE type = 'USER';
machine
の最も重要な部分はどこですかselect
。ただし、残念ながら、machine
フィールドにはクライアントOSが認識しているホスト名が表示されます。
私の場合には当てはまらないUTL_INADDR.GET_HOST_ADDRESSを使用することをお勧めするインターネット。第一に、ORA-24247が原因です。ネットワークアクセスがアクセス制御リスト(ACL)によって拒否され、第二に、クライアントOSのホスト名が通常/ etc / hostnameで定義され、イントラネットのDNSサーバーで使用できないためです。
Oracle DBへのオープンセッションのIPを取得するその他の方法(DBインスタンスはどのような場合でもそのソケットに関する情報を保持します...)。
アップデート
私は信頼できるイントラネットの下にありますが、ネットワーク階層は不明です。
そして、どのアプリケーションが自分のテーブルを使用しているかを見つけようとします(いくつかのアプリサーバー、すべてを知っているわけではありません)。それらのいくつかは接続を使いすぎており、修正する必要があります。しかし、最初にそれらを特定する必要があります...