这种情况出现在现实生活中,其中无效数据位于(并继续进入)Oracle 数据库中,该数据库被提取到 Focus 中的数据处理系统中。在某些具有无效时间部分的行上,焦点会窒息而死。然后,Oracle DBA 会将日期时间从一个好的列复制到受影响的列中,以允许该过程继续进行(是的,我知道)。
我协助解决了这个问题,发现在 Oracle 中受影响的行:
DUMP(START_TIME)
给出:
'Typ=12 Len=7: 100,99,255,255,0,0,0'
尽管:
TO_CHAR(START_TIME, 'YYYY/MM/DD HH24:MI:SS')
给出:
ORA-01801: date format is too long for internal buffer
查看DUMP()
结果'Typ=12 Len=7: 100,99,255,255,0,0,0'
和存储约定,它们似乎能够绕过列的语义限制并插入 0、-1、-1、-1、-1、-1、-1 或0x00 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF
这很“有意义”,因为0xFF = 255 = -1
可能会导致0000/255/255 255:255:255
取决于您如何解释字节、符号和溢出。
Oracle 在什么条件下(连接机制等)允许无效数据进入日期时间列?