9
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Oracleのセッションにおいてオープンしているカーソル数を調べる

Last updated at Posted at 2015-12-30

概要

アプリケーションからOracle(というかDB全般)に接続する際に、使用後にきちんとクローズしてあげないと開いたままのカーソル数が蓄積されていってしまいます。
その後、設定上限に達すると、「ORA-01000: maximum open cursors exceeded」エラーが発生します。
対処方法は「きちんとクローズする」ことですが、「オープンしたカーソル数が増減しているかどうかを調べたい」という機会があったので、調べ方をメモしておきます。

使用環境

Oracle : 12.1c Standard One Edition
OS : CentOS 6.6

SQL

SID毎のオープンカーソル数の設定上限と、現在オープンしているカーソル数は、
以下のSQLによって取得できます。


-- 設定上限
select value from v$parameter where name ='open_cursors';

-- SIDごとの現在オープンしているカーソル数
select 
  sid, 
  statistic#, 
  value
from v$sesstat
where statistic# = 5 
  and sid in (select sid from v$session where username ='hoge')
;

SID

調査対象のアプリケーションのsid(Session ID)は、v$session表からusernameなどを使用して特定してください。

STATISTIC#, VALUE

V$SESSTAT表は、ユーザー・セッションについての統計情報を示し、
V$STATNAME表は、V$SESSTAT表およびV$SYSSTAT表で表示される統計情報のデコードされた統計名を示す、
のだそうです。(Oracleリファレンスより)

オープンしているカーソル数の定義は、V$STATNAME表にて以下のように定義されています。

  • statistic# = 5
  • name = 'opened cursors current'

どなたかのお役に立てば幸いです。ではでは。

参考ページ

9
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?