Oracle绑定变量类型为timestamp导致V$SQL_BIND_CAPTURE不显示值
Oracle绑定变量类型为timestamp导致V$SQL_BIND_CAPTURE不显示值
前言
版本:11.2.0.4.0
今天做优化发现一条问题SQL存在绑定变量,其中存在绑定变量类型为timestamp无法通过V$SQL_BIND_CAPTURE或者dba_hist_sqlbind查询到值,显示为空值。
(实际表的这个字段是date,不知道开发在想什么)。
原因
根据V$SQL_BIND_CAPTURE Does Not Show The Value For Binds Of Type TIMESTAMP (Doc ID 444551.1),
这是一个BUG:6156624 - BIND VALUE IS NOT CAPTURED FOR COLUMN WITH TIMESTAMP DATATYPE。
可以通过另外种方式查出绑定变量的值。
select name, position, datatype_string, was_captured, value_string, anydata.accesstimestamp(value_anydata) from gv$sql_bind_capture where sql_id = '1mf1ch9vsr06a';
其中,anydata.accesstimestamp(value_anydata)这个列就是绑定变量(类型为timgstamp)的值。
参考
V$SQL_BIND_CAPTURE Does Not Show The Value For Binds Of Type TIMESTAMP (Doc ID 444551.1)
Not Every Bind Values Captured in v$sql_bind_capture (Doc ID 1370816.1)