2011-12-05 7 views
1

v$sessionに提供できるスクリプトはありますか。私は、自分のoracleのアクティブなセッションが満ちている問題に遭遇しているようです。これは私が行うときです長いアクティブ・セッションを取得するためのOracleスクリプト

SELECT * FROM V$SESSION WHERE STATUS = 'ACTIVE' 

私の問題は、接続が保持されていた人とそれを保持していた人を判断するスクリプトが必要です。私はどこでそれを得ているのだろうか。可能であれば、これらのセッションをオートダイヤルすることができれば本当にうれしいでしょう。私は、最後の命令が行われてから彼らがどれくらい長く開催されたかを知りたいと思います。注意すべきもう一つは、私が見ているSQLセッションに関連する現在のステートメントはありません。

+0

[すべてのデータベースセッションに関する情報を表示](http://www.oracle-base.com/dba/Script.php?category=monitoring&file=sessions.sql)。その他の[oracle scripts](http://www.oracle-base.com/dba/Scripts.php) – danihp

答えて

0

私はあなたが探しているものを正確に理解しているかどうかはわかりません。

"接続がどのくらい保持されたか"という意味は、正確ですか? LAST_CALL_ETの列V$SESSIONは、アクティブなセッションのセッションでは、最後の呼び出しが行われてからの秒数を示します。 LOGON_TIME列にV$SESSIONが表示され、データベースセッションが最初に作成されたときに表示されます。別の指標をお探しですか?もしそうなら、もう少し詳細にメトリックを記述できますか?

「誰がそれを保持していた」とは、正確にはどういう意味ですか? USERNAME列のV$SESSIONはOracleユーザー名を示し、OSUSERはセッションを開いたクライアントマシンのオペレーティングシステムユーザーを示します。別の指標をお探しですか?もしそうなら、そのメトリックをより詳細に記述できますか?たとえば、3層アプリケーションで究極のユーザーの名前を探していますか?

「オートダイアル」とは、この文脈でどのような意味があるのか​​分かりません。

「最後のコマンドが実行されてからどれくらい保持されたか」というのは、「接続の長さ」とは異なりますか?その場合は、LAST_CALL_ETLOGON_TIMEの違いを説明しているようです。

0

私はあなたが犯人に元のスクリプトを変更識別するために、正しく接続をクローズされていないアプリを持っていることを推測する:

SELECT username, 
    program, 
    terminal, 
    COUNT (*) 
FROM v$session 
WHERE status = 'ACTIVE' 
GROUP BY username, 
    program, 
    terminal 
ORDER BY COUNT (*) DESC 

これがうまくいけば、接続が使用されている場所を特定するに役立つはずです。

関連する問題