解码DBA_HIST_SQLBIND中DATE类型value_string:是否不受NLS设置影响?
关于DBA_HIST_SQLBIND中DATE类型value_string格式的问题解答
可以明确认定:DBA_HIST_SQLBIND中DATE类型的value_string字段格式始终是MM/DD/YYYY HH24:MI:SS,完全不受数据库或会话级的NLS_DATE_FORMAT设置影响。
原因在于AWR(自动工作负载仓库)的底层存储逻辑:为了保证历史性能数据的一致性和可移植性,Oracle在记录绑定变量的字符串表示时,采用了内部固定的格式,不会随NLS参数的变化而改变。哪怕你把系统或会话的NLS_DATE_FORMAT改成DD-MM-YYYY或者其他格式,查询DBA_HIST_SQLBIND得到的DATE类型value_string依然会保持MM/DD/YYYY HH24:MI:SS的格式。
你可以自己做个简单验证:
- 执行
ALTER SESSION SET NLS_DATE_FORMAT = 'DD-MM-YYYY HH24:MI';修改会话的日期格式 - 再次查询DBA_HIST_SQLBIND中DATE类型的绑定变量记录
- 会发现
value_string的格式还是MM/DD/YYYY HH24:MI:SS,没有变化
内容的提问来源于stack exchange,提问作者mpapec
相关产品推荐
相关产品推荐

