catch-img

V$SQL BIND CAPTURE - 日本エクセム株式会社 Oracle 技術情報


目次[非表示]

  1. 1.基本情報
    1. 1.1.概要
    2. 1.2.サポート
    3. 1.3.カラム
  2. 2.参考情報
    1. 2.1.バインドキャプチャ
    2. 2.2.バインド・アトリビュート
    3. 2.3.バインド値
  3. 3.
  4. 4.関連情報
  5. 5.外部参照


基本情報

概要

 V$ SQL_BIND_CAPTUREビューはSQLのBind変数を使用しています。使用されているBind変数の名前と型、値などを表示します。


サポート

10g以降

カラム

名前
タイプ
説明

ADDRESS

 -

Parent CursorのAddress

HASH_VALUE

NUMBER

Parent CursorのHash値

SQL_ID

VARCHAR2(13)

Unique SQL ID:V$ SQLのSQL_ID列と結合可能

CHILD_ADDRESS

 -

Child CursorのAddress

CHILD_NUMBER

NUMBER

Child Cursorの番号

NAME 

VARCHAR2(30)

Bind 変数の名前

POSITION​​​​

NUMBER

SQL文でBind 変数の位置。 1スタート 

DUP_POSITION​​​​​​​

NUMBER 

Bind 変数の名前が重複している場合、最初Bind Variableの位置を指します。

DATATYPE ​​​​​​​

NUMBER

Bind 変数のデータ型。Oracleの内部的に使用されている数値。

DATATYPE_STRING​​​​​​​

VARCHAR2(15)

Bind 変数のデータ型の認識可能な名前。例:NUMBER、VARCHAR2

CHARACTER_SID​​​​​​​

NUMBER

National character set identifier

PRECISION

NUMBER

Precision (for numeric binds)

SCALE​​​​​​​

NUMBER

Scale (for numeric binds)

MAX_LENGTH​​​​​​​

NUMBER

最大Bind長

WAS_CAPTURED​​​​​​​

VARCHAR2(3)

Bind値のCaptureが行われたかどうか(YES)または(NO)

LAST_CAPTURED

DATE

Bind値のCaptureが行われた最新の時間

VALUE_STRING

VARCHAR2(4000)

Bind値のString表現

VALUE_ANYDATA

ANYDATA

Bind値のSys.AnyDataによる表現


参考情報

バインドキャプチャ

 Oracleは、次のような視点にBind Captureを実行する。

・SQLステートメントがHard Parseされた時点でBind Variableが使用されてBind値が付与された場合。
・Bind Captureが行われた後に、Bind値が変更された場合。
 ただし、Oracleのパフォーマンス上のオーバーヘッドを最小限に抑えるために、
 15分以上の間隔を置いてCaptureを実行します。つまり、Bind Captureされた値が、
 常に最新の値を示すものではないことに注意しなければなりません。


バインド・アトリビュート

 Oracle10g以前は、特定のSQL文で使用されているBind値を引き出そうとするときは、Processstate Dumpを実行したり、SQL Trace、あるいはAuditを実行しました。しかし、V$ SQL_BIND_CAPTUREビューを使用すると、簡単な照会だけでBind値を把握することができるようになったのです。各ツールが提供される値の種類は、次のように整理することができます。

・Processstate Dump:特定のSession(Process)が「現在」実行中のSQL文で使用されるBind値のリスト
・SQL Trace:特定のSessionやSystem全体で実行されたすべてのSQL文で使用されたBind値
・V$ SQL_BIND_CAPTURE:SQLステートメントごとに、最近使用されたBind値
・Audit:特定のテーブルまたはオブジェクト全体のSelect/ Insert/ Update/ DeleteのSQL文とBind値


バインド値

 V$ SQL_BIND_CAPTUREビューのHistoryバージョンであるDBA_HIST_SQLBINDビューを使用して、過去の特定の時点で特定のSQL文で使用されたBind値を確認することができます。


SQL> CREATE TABLE bind_test(id INT);
SQL> var x number;
SQL> EXEC : x : = 1;
SQL> select * from bind_test where id = :x';

SQL> SELECT name, position, was_captured, 
	to_char(last_captured,'yyyy/mm/dd hh24:mi:ss'), value_string
   FROM v$sql_bind_capture
   WHERE sql_id = (SELECT sql_id FROM v$sql WHERE sql_text =
   ('select * from bind_test where id = :x')
   
NAME	POSITION	WAS_CAPTURED	LAST_CAPTURED		VALUE_STRING
----	--------	----------	--------------		------------
:X	1		YES		2007/10/13 00:16:19	1


関連情報

1. _OPTIM_PEEK_USER_BINDSパラメータ
2. V$ SQL_BIND_DATAビュー
3. V$ SQL_BIND_METADATAビュー
4. DBA_HIST_SQLBIND


外部参照

http://download.oracle.com/docs/cd/B19306_01/server.102/b14237/dynviews_2114.htm


CONTACT

他社に頼らず自社でデータベースを監視・運用をしませんか?
MaxGaugeがサポートします

お役立ち資料は
こちらから

不明点がある方は、
こちらからお問い合わせください

お電話でのお問い合わせはこちら

平日 10時~18時

人気記事ランキング

タグ一覧