|
11.01.2006, 10:42 | #1 |
Участник
|
Тормозит Экспорт/Импорт данных
Доброго времени суток.
У меня стоит задача перенести БД Axapta 3.0 SP3 с MS SQL Server 2000 на Oracle 9i. Собственно, сложность состоит в том, что при выполнении операции импорта данных система где-то начинает зацикливаться, т.е. резурсы процессора отъедает, а объем БД практически не изменяется. При переносе между двумя БД MS SQL я удалял скриптом все данные из всех пользовательских таблиц и выполнял операцию Экспорта/Импорта средствами самого SQL сервера. С Oracle такой фокус не проходит, поскольку длинные имена таблиц и полей отличаются в наименовании по физической структуре представления БД сервером. Параметры при создании представления: - Тип: Стандарт. - На закладке "Параметры" галочка установлена только на поле "Примечания", все остальные не выбраны. - На закладке "Включать группы таблиц" отмечены все поля. База данных не маленькая - 16Гб (без учета размера журнала транзакций, вместе с ним - 85Гб). Файл экспорта по компании - 1,4Гб. Параметры импорта данных: - На закладке "Расширено" отмечены поля "Удаление компании перед импортом", "Резервирование кодов записей". Значение поля "Индексация" - "Переиндексация после импорта". Импорт шел нормально первые 40 минут, т.е. размер загружаемой БД возрастал, после этого замедлился и за последние сутки вырос всего лишь на 1,2%. За первые 40 минут БД была заполнена на 31%. Такое вялое изменение динамики и наводит на мысль, что система зацикливается. При этом сама Аксапта не зависает - она продолжает реагировать на нажатия клавиш и загружает процессор. У кого есть какие соображения на эту тему, подскажите пожалуста. |
|
11.01.2006, 11:08 | #2 |
NavAx
|
Встречный вопрос: в оракле пишется журнал транзакций?
|
|
11.01.2006, 11:12 | #3 |
Участник
|
Во время испорта происходит:
1. перенумерация recid. И следовательно поиск записей, которые ссылаются на данную запись по RecId и изменение номеров в них 2. хитрая обработа виртуальных компаний (скорее всего, это не ваш случай) Что нужно сделать: 1. Почистить все логи http://axapta.mazzy.ru/lib/dbgrowthsolution/ чтобы при импорте данные логов не анализировались 2. Проанализировать связи по recID. Таблицы, связанные по RecID ОБЯЗАТЕЛЬНО надо испортировать в ОДНОМ пакете. Таблицы, не связанные по recID можно импортировать разными файлами. Например, LedgerTable, LedgerTableAlternative и LedgerTableInterval могут быть связаны по RecID. Это значит данные этих таблиц должны быть в одном файле. А вот LedgerTableAlternativeTrans по RecID ни с кем не связана (в стандартном функционале) и на нее никто по recID не ссылается. Это значит LedgerTableAlternativeTrans можно вынести в отдельный файл экспорта/импорта. И т.д. Отдельный файл можно сделать создав отдельную группу определения экспорта/импорта и указав в ней только нужные вам таблицы. Итак, главная ваша проблема - RecID при импорте изменяется и согласованно с ними изменяются ссылки на измененные RecID. При большом объеме импортируемых данных, согласованное изменение ссылок делается долго. Ваша задача - облегчить работу алгоритму импорта. |
|
11.01.2006, 11:36 | #4 |
Участник
|
Цитата:
Сообщение от mazzy
Во время испорта происходит...
...Таблицы, связанные по RecID ОБЯЗАТЕЛЬНО надо испортировать ... " - А вы уже базу происпортировали? - Ага, испортировали уже совсем"
__________________
Здесь могла быть Ваша реклама! |
|
11.01.2006, 11:23 | #5 |
Участник
|
Дело в том, что самые большие логовые таблицы:
PurchParmTable PurchParmSubTable PurchParmLine PurchParmUpdate SalesParmLine SalesParmSubTable SalesParmTable SalesParmUpdate InventSumLinkTTS InventSumLogTTS я не могу очищать. Они используются для получения довольно хитрых отчетов и они должны остаться в полученной БД. А что касается связанных записей, то я осуществляю Экспорт/Импорт по всем таблицам. Как я выше описал, туда не включены системные и с перекрестными ссылками. Т.е. из всего вышесказанного следует вывод, что эта грустная ситуация так вот сходу не может быть разрешена??? |
|
11.01.2006, 11:25 | #6 |
Участник
|
Цитата:
Сообщение от st_msav
А что касается связанных записей, то я осуществляю Экспорт/Импорт по всем таблицам. ...
Т.е. из всего вышесказанного следует вывод, что эта грустная ситуация так вот сходу не может быть разрешена??? А что мешает вам разбить ваш экспорт/импорт на несколько блоков? |
|
11.01.2006, 13:48 | #7 |
Участник
|
Цитата:
Сообщение от mazzy
Интересный вывод...
А что мешает вам разбить ваш экспорт/импорт на несколько блоков? |
|
11.01.2006, 14:38 | #8 |
Участник
|
Цитата:
Сообщение от st_msav
У вас есть опыт увеличения производительности таким способом?
Я же написал выше причину медленной работы - поиск связанных recID в импортируемых данных. |
|
11.01.2006, 11:52 | #9 |
----------------
|
Простите, можно уточнить что означает фраза?
"С Oracle такой фокус не проходит, поскольку длинные имена таблиц и полей отличаются в наименовании по физической структуре представления БД сервером" |
|
11.01.2006, 13:45 | #10 |
Участник
|
Цитата:
Сообщение от Wamr
Простите, можно уточнить что означает фраза?
"С Oracle такой фокус не проходит, поскольку длинные имена таблиц и полей отличаются в наименовании по физической структуре представления БД сервером" |
|
11.01.2006, 14:48 | #11 |
Роман Долгополов (RDOL)
|
Цитата:
Сообщение от st_msav
Скажем в Аксапте есть таблица LongNameTable в структуре БД SQL Servera ее имя уже выглядит LongNameT8012. В представлении БД Оракла эта таблица называется так, как в Аксапте. Та же песня с длинными полями.
соответствие аксаптовских и бд-шных имен живет в SQLDictionray Возьмите эту таблицу и из Оракла и из SQL, постройте на их основе таблицу для соответствий имен Axapata-Оракл-SQL и поместите, например в SQL-базу Прилинкуйте Оракловый сервер к SQL-ному С использованием таблицы соответсвий нагенерите скрипт из команд типа insert into oracle select from sql, не забыв при этом перекодировать все пустые sql строки в chr(2) Исполните скрипт - при нормальном железе база перельется часов за 6. Не забудьте перенести системную табличку SystemSequences |
|
|
За это сообщение автора поблагодарили: mazzy (18), Vadik (5). |
11.01.2006, 14:58 | #12 |
Участник
|
Цитата:
Сообщение от db
С использованием таблицы соответсвий нагенерите скрипт из команд типа insert into oracle select from sql, не забыв при этом
перекодировать все пустые sql строки в chr(2) Исполните скрипт - при нормальном железе база перельется часов за 6. Не забудьте перенести системную табличку SystemSequences Каковы результаты? Еще немножко побрюзжу: 1. Типичный программистский подход - вместо решения основной проблемы решать кучу маленьких вспомогательных технических проблем (с основной никак не связанных). Еще раз: основная проблема медленной работы - поиск связанных RecID. 2. Что самое показательное, не говорится, что перечислены все пункты, которые надо "не забыть" 3. И никто не гарантирует, что получится правильный результат 4. Когда я слышу подобные рассуждения от программистов, то отношусь обычно очень подозрительно. db, надеюсь, вы знаете, что советуете. |
|
11.01.2006, 15:10 | #13 |
Роман Долгополов (RDOL)
|
Выполнял, замечательные, 75 ГБ за 8 часов, база функционально один в один и никаких проблем
1. Да, типичный программерский подход - не брюзжать, а сделать дело - перевести клиента на другую СУБД за полночи, не забыв поспать самому 2. Перечислены 3. Как хотите, господа консультанты |
|
|
За это сообщение автора поблагодарили: Wamr (5). |
11.01.2006, 15:50 | #14 |
Участник
|
Сейчас пробую импортировать с разбивкой на части стандартным способом.
Я уже попробывал произвести экспорт/импорт стандартными средствами, встроенными в SQL Server и Oracle, но при импорте данных Оракл неправильно воспринимает значения полей с типом varchar. Полагаю, что единственным выходом остается предложенный способ. Возникает только закономерный вопрос: неужели никто не переводил стандартными средствами БД Аксапты с MS SQL в Oracle?! P.S. Думаю, что было бы просто прекрасно, если уважаемый DB поделился бы скриптами. Последний раз редактировалось st_msav; 11.01.2006 в 15:53. |
|
11.01.2006, 16:43 | #15 |
Участник
|
Цитата:
Сообщение от st_msav
Возникает только закономерный вопрос: неужели никто не переводил стандартными средствами БД Аксапты с MS SQL в Oracle?!
Я знаю всего нескольких клиентов, которые это делали. Мы и они знали, что это будет долго и готовились к переходу. Насколько я понимаю, никто сейчас не понимает чего именно вы хотите от процедуры экспорта/импорта. Неужели вы ни разу не импортировали свою базы в SQL? |
|
11.01.2006, 20:35 | #16 |
Участник
|
Цитата:
Сообщение от mazzy
Я бы не сказал, что такой перевод делается каждым
Я знаю всего нескольких клиентов, которые это делали. Мы и они знали, что это будет долго и готовились к переходу. Насколько я понимаю, никто сейчас не понимает чего именно вы хотите от процедуры экспорта/импорта. Неужели вы ни разу не импортировали свою базы в SQL? Средствами SQL Server можно выполнить примерно за 40 минут, если восстанавливать из Backup и за час, если выпонять прямой перенос данных между двумя серверами. Цитата:
Сообщение от mazzy
Насколько я понимаю, никто сейчас не понимает чего именно вы хотите от процедуры экспорта/импорта.
|
|
11.01.2006, 21:46 | #17 |
Участник
|
Цитата:
Сообщение от st_msav
И это есть цель, которая поставлена заказчиком.
Забавно... |
|
12.01.2006, 17:21 | #18 |
Участник
|
Цитата:
Сообщение от mazzy
Заказчиком?!
Забавно... |
|
12.01.2006, 09:28 | #19 |
Участник
|
Цитата:
Сообщение от st_msav
Хочу я, собственно, перевести БД на Оракл. И это есть цель, которая поставлена заказчиком. Единственное требование - вложиться в срок не более 2,5 суток, в самом крайнем случае - 3 суток.
|
|
12.01.2006, 10:10 | #20 |
Роман Долгополов (RDOL)
|
2 st_msav: идеями я делюсь; готовыми средствами, с помощью которых наша компания зарабатывает себе на жизнь - нет.
2 vadik: базы ФУНКЦИОНАЛЬНО один в один - никто все таблицы 1 в 1 не копирует. Процесс двухступенчатый - сначала развертывание другой БД с идентичной лицензией и конфигурационными ключами, потом перенос пользовательских данных. Но это не "подводные камни", а мой предыдущий пост не пошаговая инструкция по переносу. 2 komar: Использовать, не использовать, спорить, ругаться, доказывать - это личное дело каждого. Доказывать свою правоту или не правоту не собираюсь - наверное слишком старый стал Успехов. |
|
Теги |
тормоза, экспорт/импорт |
|
Похожие темы | ||||
Тема | Ответов | |||
Экспорт/импорт платежных поручений | 96 | |||
Стандартный импорт данных. Обновление | 0 | |||
Экспорт/импорт таблиц | 15 | |||
Импорт на данных из 2.5 в 3.0 | 14 | |||
Импорт данных | 2 |
|