Днес стана репликационен конфликт в базата и аз тръгвам да го оправям. Всичко добре конфликти оправям и със затворени очи обаче днес се закучи. Оказа се, че колонката е VARCHAR2, а ние я използваме да запишем някакъв двоичен джънк. Та селектвам си аз старата стойност ъпдейтвам я и мисля че съм готов. Обаче оракъла ръмжи...
Оказва се че PL/SQL Developer не визуализира добре стрингове, в които се тъпчат двоични данни. И съответно взимайки велюто аз копирам омазаната стойност ъпдейтвам я и нищо. Взех да мисля как да взема коректна стойност и стигнах до следното.
Ето грешната стойност:
SELECT UTL_RAW.CAST_TO_RAW(SZFIELD) FROM TABLE AS OF TIMESTAMP(SYSTIMESTAMP - INTERVAL '10' MINUTE) WHERE SZUID = '1234567890';
8D977E7ECA249640D73C24DF370ABFFD
В същото време селектвайки от другата машина получавам:
SELECT UTL_RAW.CAST_TO_RAW(SZFIELD) FROM TABLE WHERE SZUID = ' 1234567890 ';
8D977E7ECA249640D73C24DF370DBFFD
В крайна сметка за да го ъпдейтна правилно направих следното:
UPDATE TABLE SET FIELD = UTL_RAW.CAST_TO_VARCHAR2('8D977E7ECA249640D73C24DF370DBFFD') WHERE SZUID = ' 1234567890 '
Реших проблема но се борих сума си време. То и ние сме за бой че пазим двоично в такива полета ама... :D



