Oracle データベースで進行中の他のプロセスを表示することはできますか? サイベースのようなものsp_who
329377 次
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 に答える