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)

原文地址:https://www.cnblogs.com/PiscesCanon/p/14431422.html