66

Oracle データベースで進行中の他のプロセスを表示することはできますか? サイベースのようなものsp_who

4

4 に答える 4

90

V$SESSION からいくつかの列を取得し、V$SQL から SQL 文を取得したいだけだと思います。Oracle 自体が実行しているバックグラウンド プロセスを除外するとします。

SELECT sess.process, sess.status, sess.username, sess.schemaname, sql.sql_text
  FROM v$session sess,
       v$sql     sql
 WHERE sql.sql_id(+) = sess.sql_id
   AND sess.type     = 'USER'

外部結合は、現在アクティブでないセッションを処理するためのものです。また、最初の 1000 文字ではなく完全な SQL ステートメントを持つ V$SQL から sql_fulltext 列を取得することもできますが、これは CLOB であるため、処理が少し複雑になる可能性があります。

現実的には、SP_WHO が提供するよりも多くの情報を取得できる可能性が高いため、おそらく V$SESSION で利用可能なすべてのものを確認することをお勧めします。

于 2008-10-14T00:28:27.473 に答える
5

sp_whoを見た後、Oracleにはその機能自体はありません。Oracleには、dbを実行する少なくとも8つのプロセスが実行されています。RMONなどのように。

単なるテーブルクエリとして実行されているクエリをDBに問い合わせることができます。V$テーブルを見てください。

簡単な例:

SELECT sid,
       opname,
       sofar,
       totalwork,
       units,
       elapsed_seconds,
       time_remaining
FROM v$session_longops
WHERE sofar != totalwork;
于 2008-10-14T00:11:40.253 に答える