V$SQL_BIND_CAPTURE
目录
V$SQL_BIND_CAPTURE视图提供SQL Cursor中使用Bind Variable时相应Bind Variable的名称、类型及值等信息。
10g以上
名称 | 类型 | 说明 |
ADDRESS | 8) | Parent Cursor的Address |
HASH_VALUE | NUMBER | Parent Cursor的哈希值. |
SQL_ID | VARCHAR2(13) | 与Unique SQL ID. V$SQL的SQL_ID列连接。 |
CHILD_ADDRESS | 8) | Child Cursor的地址 |
CHILD_NUMBER | NUMBER | Child Cursor的编号 |
NAME | VARCHAR2(30) | Bind Variable的名称. 例: :name |
POSITION | NUMBER | SQL语句中Bind Variable的位置。从1开始。 |
DUP_POSITION | NUMBER | 指Bind Variable的名字有重复时,最初Bind Variable的位置。 |
DATATYPE | NUMBER | Bind Variable的数据类型。与oracle内部使用的数字。 |
DATATYPE_STRING | VARCHAR2(15) | 对于Bind Variable的数据类型的可识别的名称。例:NUMBER, VARCHAR2 |
CHARACTER_SID | NUMBER | National character set identifier |
PRECISION | NUMBER | Precision (for numeric binds) |
SCALE | NUMBER | Scale (for numeric binds) |
MAX_LENGTH | NUMBER | 最大绑定长度 |
WAS_CAPTURED | VARCHAR2(3) | 对绑定值进行捕捉时,记录捕捉成功与否 |
LAST_CAPTURED | DATE | 对绑定值可以捕捉时的最近时间 |
VALUE_STRING | VARCHAR2(4000) | 对绑定值的字符串 |
VALUE_ANYDATA | ANYDATA | 对绑定值的Sys.AnyData描述 |
Oracle在以下的点执行Bind Capture.
Oracle 10g之前想知道具体SQL语句中使用中的Bind值的时候执行Processstate Dump, 或Audit。但是, 使用V$SQL_BIND_CAPTURE能从简单查询中看出绑定变量。各个工具提供的值可以总结如下.
通过V$SQL_BIND_CAPTURE视图的历史版本DBA_HIST_SQLBIND视图,可以确认特定SQL语句中使用的绑定值。
SQL> CREATE TABLE bind_test(id INT);
SQL> var x number; SQL> EXEC 😡 := 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 |
Leave a Reply
Be the First to Comment!