То, что вы описываете, не является ожидаемым поведением DISTINCT.Это:
SQL> select * from dual
2 /
D
-
X
1 row selected.
SQL> select distinct * from dual
2 /
D
-
X
1 row selected.
SQL>
Итак, если то, что вы говорите, действительно происходит, то происходит, то это ошибка.Тем не менее, вы также говорите, что это редкое явление, что означает, что есть большая вероятность того, что это некоторая особенность ваших данных и / или переходных процессов в вашей среде, а не ошибка.
Вам необходимо создать воспроизводимый тестслучай по двум причинам.Отчасти никто не сможет исследовать вашу проблему без таковой.Но главным образом потому, что создание тестового примера - это самостоятельное расследование: попытка выделить точную комбинацию данных и / или факторов окружающей среды часто дает понимание, которое приводит к решению.