Skip to Main Content

Oracle Database Discussions

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

Oracle NUMBER stores unexpected byte 101 in mantissa

A P5 days ago — edited 5 days ago

Hello everyone,

I found a strange Oracle NUMBER internal representation issue and would like to understand whether this is expected, corruption, or a known bug.

Example:

Normal value:

select dump(396) from dual;

Typ=2 Len=3: 194,4,97

Problematic value stored in a NUMBER column:

select dump(col) from my_table;

Typ=2 Len=4: 194,4,96,101

Interestingly:

select dump(col), dump(col * 1)
from my_table;

returns:

dump(col)     = Typ=2 Len=4: 194,4,96,101
dump(col * 1) = Typ=2 Len=3: 194,4,97

So arithmetic normalization (* 1) converts the value into canonical form.

The numeric value itself is still interpreted as 396, but some operations (including TO_NUMBER in certain contexts) may fail with ORA-01722.

Questions:

  1. Is 194,4,96,101 a valid non-canonical Oracle NUMBER representation?
  2. Can Oracle legitimately store base-100 digit 100 internally?
  3. Is this usually caused by corruption, old client libraries, direct path load, OCI/JDBC bugs, or import/export issues?
  4. Are there known MOS notes / bugs related to this behavior?

Oracle version: Oracle Database 19c Standard Edition 2 Release 19.0.0.0.0 - Production
Version 19.30.0.0.0
Platform: Windows

Comments
Post Details
Added 5 days ago
4 comments
93 views