gifts2017

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

Опубликовал Ловыгин Антон (wunderland) в раздел Администрирование - Системное

При переносе базы на СУБД 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

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

Скачать файлы

Наименование Файл Версия Размер Кол. Скачив.
1.JPG
.JPG 80,47Kb
03.03.12
11
.JPG 80,47Kb 11 Скачать

См. также

PowerTools от 1 000
Подписаться Добавить вознаграждение

Комментарии

1. zavedeev (zavedeev) 04.03.12 23:43
А лучше сидеть на MS SQL и не создавать тебе вынос мозга:)
2. B2B (B2B) 05.03.12 02:43
И как там на Оракле? На много быстрее стало работать?
3. Ловыгин Антон (wunderland) 06.03.12 20:10
Прирост, вроде есть, я в конце статьи писал... Но это не очень точно, просто я в обработке которая много чего долго делает поставил выводиться время в начале и в конце - на Оракле времени меньше.
4. Ловыгин Антон (wunderland) 06.03.12 20:14
(1) zavedeev, можно много привести доводов
1) Победа инженерной мысли над здравым смыслом;
.
.
.
101) Есть могучий Оракловый кластер, на который можно просто подселить 1С и не покупать железо + ОС + MS SQL
5. zavedeev (zavedeev) 06.03.12 20:26
wunderland, нравиться оракл да ради бога, во 1-х у скл все в одном дистрибутиве и не надо искать манагер как у оракла, возможно что-то и изменилось. 2-х если оракл упадет - что делать? а под скл есть много софта для востановления mdf файлов. 3-х скл на мой взгляд (моя - точка зрения) удобней и дружелюбней.
6. Ruslan (rus128) 07.03.12 11:59
(5) zavedeev, если СКЛ падает - нужно не МДФ файлы лечить, а бэкапы восстанавливать :-)
а кому нужно быстродействие (даже если 12% критично) - те скажут автору "спасибо" за прощупывание дорожки.
7. Ловыгин Антон (wunderland) 09.03.12 12:36
Вот что еще интересно - я в первый раз делал этот опыт в конце 2010 года. Все как-то не было времени отписать. А тут модератор статью не пропустил, пришлось полностью смоделировать ситуацию на виртуалке. Естественно за 1.5 года воды не мало утекло, версии поменялись и все такое, а ошибка как была, так и осталась. Отсюда вывод - маловато 1С + Oracle используется. А жаль, большие возможности во всех отношениях.
8. Igor Melnikov (IgorM11203) 12.03.12 13:49
Странно коннечно ...
1С сертифицировала v8.2.15 (то есть вела разработку и тестирование) только под Oracle 11.2.0.2
вы же использовали неподдерживаемый релиз - 11.2.0.1
Плюс на 11.2.0.2 нужно накатывать последний кумулятивный оракловый бандл-патч.
9. Ловыгин Антон (wunderland) 12.03.12 18:46
(8) IgorM11203,
Согласен, что с релизом Oracle я не прав, но как мне кажется, дело здесь не в Oracle. Ведь созданием объектов, таблиц и т.п. в схеме БД, управляет 1С сервер приложений. Возможно эта ошибка связана именно с конфигурацией ЗиУП, где используется регистр расчетов...
10. юра Белецкий (ybeleckii) 13.03.12 12:19
Да действительно если базы занимают более 30гб быстродействие сильно хромает на SQL. если найду время попробуй оракл и секционирование в SQL 2008 что будет эффективнее
11. Сергей Петухин (nilabs) 14.06.12 14:42
По вашим оценкам, что эффективнее c точки зрения производительности для 1с: Oracle или MS Sql?
12. Ловыгин Антон (wunderland) 14.06.12 19:29
(11) nilabs, я пока не готов дать такую оценку...
я просто сделал эксперимент, и в итоге получил какую-то цифру чтобы сравнение не было совсем уже на пальцах.
но это сравнение было далеко от объективного. только повседневная практика все расставит на свои места... а на практике у меня нет ни одного примера работы боевой базы 1С на Oracle. SQL сервер проще, много раз проверен - вот его и берут как стандартное решение. Ведь не будем кривить душой - далеко не всегда это ПО лицензионное.
О том что возможностей у оракла намного больше спорить никто не будет, но и сложнотей с его настройкой и обслуживанием тоже больше. Так что ответ мой будет таков. Если нужно быстро и ничего сверхестественного(да еще и за M$ SQL не платим (ай-яй-яй ;) как нехорошо) ) - однозначно выбираем его. Если стоит вопрос денег - стоит рассмотреть вариант с PostgreSQL я видел народ экспериментирует и тоже получается. А вот если у вас уже все есть - хотябы одиночный сервер с Oracle, где все лицензировано и настроено и админ БД Вам поможет(поднять и запустить его можно, а вот до ума довести - нужны знания и опыт)... я бы в этом случае рискнул. Всегда было интересно попробовать собрать кластер из 1С и на RAC подсадить... незнаю правда зачем, просто прикольно... Но имейте ввиду - 1С всех возможностей оракла не использует, об этом тоже много говорили... Вот сколько написал, эх, пиво, пиво ...
13. Алексей Выхрыстюк (avhrst) 25.05.14 09:07
Тестировали Oracle +1С по полной программе - анализировали планы запросов, проверяли на 100GB базе и т.д.
Результат:
1. Размер базы данных для oracle абсолютно не важен, от этого скорость работы не изменяется (речь не идет о запросах за "весь период").
2. 1С абсолютно не оптимизирована под Oracle SQL и как следствие запросы получаются очень не оптимальными и грузят сервер. Например - написанный руками запрос (с пониманием логики) имеет cost = 10 000 (cost - это общий показатель "стоимости" запроса по ресурсам для базы данных), запрос сформированный 1С имеет cost=120 000 (в 10 раз больше), тоесть если ресурсов на сервере достаточно -oracle такой запрос проглотит, иначе получим тормоза.
3. Oracle отлично масштабируется, можно разнести базу (1С автоматически создает 3 дата файла) на 3 диска, что значительно добавит прироста, выделить максимально возможоную память (SGA) и с болью наблюдать как "запросы" 1С насилуют сервер.
14. Ловыгин Антон (wunderland) 26.05.14 12:02
(13) avhrst, что поделать - Oracle это электронный микроскоп для тех, кому нужен электронный микроскоп...
А некоторые люди(1С, и я, частенько) берут его, чтобы забивать гвозди, при том, изначально кривые. Вот и получается иногда грустно :(
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа