いいえを見つけるためのクエリは何ですか? Oracleインスタンス内の現在開いているカーソルの数どのようにOracleの現在開いているカーソルを見つける
また、このデータの精度/更新頻度は何ですか?
私はセッションで、
いいえを見つけるためのクエリは何ですか? Oracleインスタンス内の現在開いているカーソルの数どのようにOracleの現在開いているカーソルを見つける
また、このデータの精度/更新頻度は何ですか?
私はセッションで、
合計カーソルオープンのOracle 10gリリース2を使用しています:
ソースselect a.value, s.username, s.sid, s.serial#
from v$sesstat a, v$statname b, v$session s
where a.statistic# = b.statistic# and s.sid=a.sid
and b.name = 'opened cursors current';
:私の知る限りは、V $ビューでクエリを知っているようhttp://www.orafaq.com/node/758
は疑似テーブルに基づいていますSGAの関連する部分を直接指している(「x $」表)ので、それ以上の正確さは得られません。これは、それがポイントインタイム(すなわち、ダーティリード)であることも意味する。
はここで解析されているオープン・カーソルを見つける方法です。 v $ open_cursorとv $ sessionにアクセスできるユーザーとしてログインする必要があります。
COLUMN USER_NAME FORMAT A15
SELECT s.machine, oc.user_name, oc.sql_text, count(1)
FROM v$open_cursor oc, v$session s
WHERE oc.sid = s.sid
GROUP BY user_name, sql_text, machine
HAVING COUNT(1) > 2
ORDER BY count(1) DESC
;
Ifは、漏れやすいアプリケーションを識別するために役立つように、SQLテキストの一部を提供します。カーソルが解析されていない場合、ここには表示されません。 Oralceは時には物事をあなたよりも長く開いておくことに注意してください。
実際、これは複雑な状況です。 v $ open_cursorはキャッシュされた文を表示します。 開いているカーソル(カーソル/ ResultSetのリークがある場合にハンマーをかけることができるリソース)は、v $ sessstatの 'opened cursors current'という行にあります。 –
@Ollie:しかし、それは漏れているSQL文をどのように識別するのに役立ちますか? –
この選択により、カーソルを開いた実際のSQLコードが表示され、デバッグに最適です!私の+1 –
が私のために働くようです。
1)あなたのIDは、SYS DBAアクセス 2を持っている必要があります)
select sum(a.value) total_cur, avg(a.value) avg_cur, max(a.value) max_cur,
s.username, s.machine
from v$sesstat a, v$statname b, v$session s
where a.statistic# = b.statistic# and s.sid=a.sid
and b.name = 'opened cursors current'
group by s.username, s.machine
order by 1 desc;
OracleはSQLおよびトラブルシューティングの提案で、この問題のためのページがあります。
「トラブルシューティングオープンカーソルの問題」 http://docs.oracle.com/cd/E40329_01/admin.1112/e27149/cursor.htm#OMADM5352
私はこのようなものを使用します。
select
user_name,
count(*) as "OPEN CURSORS"
from
v$open_cursor
group by
user_name;
遅延したOracleテーブルサーバーによって享受されているこれらの「現在開いてカーソルを」;あなたのアプリケーションに見られる数字は、あなたが間違っていたことを意味することなく異常に高いかもしれません。 参照http://www.orafaq.com/node/758 –