TL; DR: вам необходимо перестроить первичный ключ в третьей среде.
Сообщение об ошибке вводит в заблуждение (как это часто бывает с Oracle), оно должно быть 'DISTINCT действительно не работает с BLOB'ами '.
Ваш намек Магнусу Йоханссону был правильным, это статус первичного ключа. Вот минимальный пример:
CREATE TABLE t (id NUMBER CONSTRAINT pk PRIMARY KEY, b BLOB);
INSERT INTO t VALUES (1, EMPTY_BLOB());
SELECT DISTINCT
работает, пока также выбран первичный ключ. Возможно, с logi c, что, если задействован первичный ключ, остальные столбцы, включая BLOB, тоже будут отличаться:
SELECT DISTINCT id, b FROM t;
1 (BLOB)
SELECT DISTINCT b FROM t;
ORA-00932: inconsistent datatypes: expected - got BLOB
Это работает только до тех пор, пока поддерживается index здоровый. Если вы переместите (или реструктурируете) таблицу так, что индекс станет непригодным для использования, вы получите сообщение об общей ошибке:
ALTER TABLE t MOVE;
SELECT status from USER_INDEXES WHERE index_name='PK';
UNUSABLE
SELECT DISTINCT id, b FROM t;
ORA-00932: inconsistent datatypes: expected - got BLOB
После восстановления индекса он снова работает:
ALTER INDEX pk REBUILD;
SELECT status from USER_INDEXES WHERE index_name='PK';
VALID
SELECT DISTINCT id, b FROM t;
1 (BLOB)
Странно!