Oracle Обновление FOR ALL не работает для случайных разделов (в SAS 4gl) - PullRequest
0 голосов
/ 19 февраля 2020

Вот процесс, который я выполняю: (все это выполняется в коде SAS 4gl)

  1. Столбец чтения ID и столбец 16-di git varchar2 (128) длиной ( Номер кредитной карты) из одного раздела из многораздельной таблицы (новый раздел создается каждый день, поэтому проблем с производительностью нет)

  2. Использование pro c groovy и некоторых простые преобразования 4gl я создаю временную таблицу в oracle DB с колонкой ID и длиной 128 символов ha sh, представляющей номер кредитной карты.

  3. Использование курсора и ЗА ВСЕМ я обновляю исходную таблицу новыми значениями номеров карт (хэшированными).

Я провел эту ночь на 900 разделах. Сегодня я проверил результат, и оказалось, что 60 разделов не были обновлены. Эти разделы не являются последовательными, на самом деле кажутся случайными. В SAS не было ошибок, в Oracle ошибок нет, перезапуски БД отсутствуют.

Я попытался запустить один и тот же код для этих 60 разделов, но ничего не изменилось. (опять без ошибок)

Затем я попытался обновить один раздел из этих 60 с тем же кодом. Я даже запросил временную таблицу, которую я создаю, и количество записей, совпадающее с количеством записей, которые требуют обновления, и все номера карт были длиной в хеши 128 символов в TEMP, что означает, что код работает до этой точки, поэтому я предполагаю, что проблема в обновлении исходной таблицы.

Я не эксперт по oracle, поэтому, возможно, здесь есть кое-что, чего мне не хватает, но тот факт, что код работал более 800 разделов в этой таблице и более 3000 разделов в других таблицах говорят мне, что это правильно.

Я уже обратился к нашим администраторам БД за помощью, но это может занять некоторое время и мне интересно :)

Есть ли возможность поврежденных oracle разделов / блоков, которые не вызывают ошибку при доступе к ним / их изменении?

Если так, то как узнать, поврежден ли раздел / блок?

@ EDIT ...

Я решил проблему. Таблица содержит несколько дубликатов в этих разделах и, следовательно, почему строки не обновляются.

...