Маленькие грабли при пересадке 1С с MS SQL на Oracle


При переносе базы на СУБД Oracle столкнулся с одной проблемой и как я это решал...

Выдалась  как-то свободная минутка, (и свободный сервачек) и решил я попробовать поставить 1с 8.2 на Oracle. Не то чтобы необходимость в этом была - просто интересно, ну и для повышения общего уровня...

MS Windows Server 2003 SP2 (32-bit) +  1C v8.2.15.301 + Oracle Database 11g Release (11.2.0.1.0)

Из 8.2+MS SQL выгрузил *.dt
На 8.2+Oracle создал пустую базу
На 8.2+Oracle загрузил dt
Пока вроде все хорошо. Запустил через толстый клиент – запускается.
Первым делом после таких манипуляций – тестирование базы.
Запускаю проверку – получаю ошибку ORA-02289: sequence does not exist без какой либо дополнительной информации.
Создаем на 8.2+Oracle такую же (конфигурация, версия, имя, параметры) демо- базу из шаблона, запускаю проверку – та же ошибка.
Пробовал запускать проверки по частям и в разных режимах (создавать, очищать, не изменять). Некоторые проверки проходят без ошибок, например «реиндексация таблиц», а вот «проверка целостности» - ни в какую.

C помощью PL/SQL Developer подключаюсь к 1С-ной сессии конфигуратора и включаю трассировку. Снова запускаю тестирование, получаю ошибку и смотрю в *.trc. Таки да обращается 1С к сиквенсу несуществующему.

INSERT INTO TT_1 (FC_1RRef, FC_2, FC_3, FC_4, FC_5, FC_6, FC_7RRef, FC_8, FC_9, FC_10RRef, FTTC_1, SDBL_IDENTITY) SELECT SDBL_TOP_1, SDBL_TOP_2, SDBL_TOP_3, SDBL_TOP_4, SDBL_TOP_5, SDBL_TOP_6, SDBL_TOP_7, SDBL_TOP_8, SDBL_TOP_9, SDBL_TOP_10, SDBL_TOP_11, SEQ_IDENTITY.NEXTVAL FROM (SELECT T1.FIDRRef AS SDBL_TOP_1, BINROWVER(T1.FVersion) AS SDBL_TOP_2, T1.FMarked AS SDBL_TOP_3, T1.FIsMetadata AS SDBL_TOP_4, T1.FCode AS SDBL_TOP_5, T1.FDescription AS SDBL_TOP_6, T1.FFld753RRef AS SDBL_TOP_7, T1.FFld754 AS SDBL_TOP_8, T1.FFld755 AS SDBL_TOP_9, T1.FFld756RRef AS SDBL_TOP_10, T1.FIDRRef AS SDBL_TOP_11
FROM Reference25 T1) WHERE ROWNUM

Только после создания в схеме нужного «sequence» все проверки прошли нормально.

create sequence SEQ_IDENTITY increment by 1 start with 1;

Пробовал создать пустую базу и запустить проверку на ней – все нормально, ошибки не возникают.

Успел тогда только месячный расчет ЗП запустить на 4,5 тыс. сотр.(dt был от живой базы) - выполнился на 12% быстрее на Oracle, по сравнению с MS SQL

Так что, если у кого будет что-то подобно, улыбаемся, подключаемся, трассим, смотрим, создаем и пробуем еще раз...

Файлы обработки:

-