|
Копирование и обновление баз данных
|
|||
---|---|---|---|
#18+
Добрый день ! Для копирования ,обновления и индексации баз данных (ночью) находящихся на сервере (20 баз)использую "Назначенные задания" из "панели управления". Для этого имеется головная программа(VFP6), которая поочередно вызывает соотв. программы копирования или обновления.В результате головная программа выдаёт протокол копирования, в котором на основании команды ON ERROR, видно успешно или нет произошло копирование соотв.базы данных.Для копирования используется GENDBC и COPY FILE. Но,иногда копирование на каком-то шаге останавливается так,что команда ON ERROR не может процесс продолжить дальше. Одной из причин было то ,что у GENDBC был свой ON ERROR,когда и это устранил,то некоторое время было нормально,но потом опять начались запоры как я понял индексация начала останавливать этот процесс. Всё это копирование построено в VFP6. Вопрос:Как это избежать или как иначе организовать копирование. Напрашивается идея: с помощью пакетного (bat)файла создать такой поток заданий,в котором запуск каждого следующего задания не зависел бы от результата предыдущего.Где найти пример такого bat-файла,возможно ли такое сделать ... |
|||
:
Нравится:
Не нравится:
|
|||
08.08.2008, 09:39 |
|
Копирование и обновление баз данных
|
|||
---|---|---|---|
#18+
LUCIAN создать такой поток заданий,в котором запуск каждого следующего задания не зависел бы от результата предыдущего. Такое я делал в фоксв, таймерами, они как раз и не "мешают друг-другу" ... |
|||
:
Нравится:
Не нравится:
|
|||
08.08.2008, 09:48 |
|
Копирование и обновление баз данных
|
|||
---|---|---|---|
#18+
LUCIANВопрос:Как это избежать или как иначе организовать копирование. Казимирыч, для того, чтобы определить "иначе" надо знать что есть сейчас. Напрашивается идея: с помощью пакетного (bat)файла создать такой поток заданий,в котором запуск каждого следующего задания не зависел бы от результата предыдущего.Где найти пример такого bat-файла,возможно ли такое сделать Какого такого? Который копирует во время переиндексации? И зачем тебе нужна полупроиндексированная копия? Может таки лучше займемся поисками причин остановки? Может таки начнем лечит причину, а не пытаться обойти околными путями? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.08.2008, 09:50 |
|
Копирование и обновление баз данных
|
|||
---|---|---|---|
#18+
Samvel LUCIAN создать такой поток заданий,в котором запуск каждого следующего задания не зависел бы от результата предыдущего. Такое я делал в фоксв, таймерами, они как раз и не "мешают друг-другу" Спасибо, какая схема этой идеи ? Sergey SizovКакого такого? Который копирует во время переиндексации? И зачем тебе нужна полупроиндексированная копия? Может таки лучше займемся поисками причин остановки? Может таки начнем лечит причину, а не пытаться обойти околными путями? Алексеич перед тобой я ставил эту проблему и до сих пор ты молчал, спасибо что наконец откликнулся. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.08.2008, 10:03 |
|
Копирование и обновление баз данных
|
|||
---|---|---|---|
#18+
Sergey SizovКакого такого? Который копирует во время переиндексации? И зачем тебе нужна полупроиндексированная копия? Схема этой работы которую я называю копированием: 1.Индексация 2.С помощью Gendbc создаётся программа-creator Dbc 3.С помощью программы-creator Dbc на другом компьютере создаётся пустая Dbc 4.С помощью COPY FILE идёт закачка данных с сервера в пустую базу ... |
|||
:
Нравится:
Не нравится:
|
|||
08.08.2008, 10:22 |
|
Копирование и обновление баз данных
|
|||
---|---|---|---|
#18+
Не совсем понятен смысл генерации пустой базы. Зачем вообще GENDBC? Если нужно копирование, то копировать все включая контейнер БД. Про живучесть базы и способы индексирования тут обсуждали Если вопрос только в том как сделать 20 запусков последовательно чтобы один не перекрыл другой, то в BAT-файле просто напиши последовательно вызовы и запускай его: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9.
Код: plaintext 1. 2.
... |
|||
:
Нравится:
Не нравится:
|
|||
08.08.2008, 10:23 |
|
Копирование и обновление баз данных
|
|||
---|---|---|---|
#18+
LUCIAN Samvel LUCIAN создать такой поток заданий,в котором запуск каждого следующего задания не зависел бы от результата предыдущего. Такое я делал в фоксв, таймерами, они как раз и не "мешают друг-другу" Спасибо, какая схема этой идеи ? Схема простая. Создаются несколько таймеров (столько, сколько нужно для независимых процессов) и в теле таймеров запускаются нужные команды. Естественно все команды будут выполнятся независимо друг от друга. Конечно надо учитывать замечания Sergey Sizov -а про незаконченность предыдущего процесса. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.08.2008, 10:24 |
|
Копирование и обновление баз данных
|
|||
---|---|---|---|
#18+
Dima T Не совсем понятен смысл генерации пустой базы. Зачем вообще GENDBC? Если нужно копирование, то копировать все включая контейнер БД. Если копировать все включая контейнер БД , то можно скопировать уже испорченный контейнер БД. GENDBC на испорченных контейнерах снимается. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.08.2008, 10:34 |
|
Копирование и обновление баз данных
|
|||
---|---|---|---|
#18+
Samvel Конечно надо учитывать замечания Sergey Sizov-а про незаконченность предыдущего процесса. Процесс именно так и организован , что каждое последующее не имеет смысла без предыдущего с помощью ON ERROR. Но бывают такие случаи,что ON ERROR не спасает и процесс копирования останавливается. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.08.2008, 10:45 |
|
Копирование и обновление баз данных
|
|||
---|---|---|---|
#18+
LUCIAN Dima T Не совсем понятен смысл генерации пустой базы. Зачем вообще GENDBC? Если нужно копирование, то копировать все включая контейнер БД. Если копировать все включая контейнер БД , то можно скопировать уже испорченный контейнер БД. GENDBC на испорченных контейнерах снимается. Все равно непонятно. Порядок такой: LUCIANСхема этой работы которую я называю копированием: 1.Индексация 2.С помощью Gendbc создаётся программа-creator Dbc 3.С помощью программы-creator Dbc на другом компьютере создаётся пустая Dbc 4.С помощью COPY FILE идёт закачка данных с сервера в пустую базу Если первым пунктом у тебя индексирование исходной базы, то оно не закончится корректно если контейнер битый, а если закончилось, то контейнер нормальный (и все остальное) и его можно копировать вместе с таблицами и индексами. Ссылку смотрел? Там я пример кода индексирования показывал, в т.ч. и лечение контейнера. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.08.2008, 10:46 |
|
Копирование и обновление баз данных
|
|||
---|---|---|---|
#18+
Dima T Если первым пунктом у тебя индексирование исходной базы, то оно не закончится корректно если контейнер битый, а если закончилось, то контейнер нормальный (и все остальное) и его можно копировать вместе с таблицами и индексами. База данных это не только таблицы с индексами , а это ещё и представления,.. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.08.2008, 10:53 |
|
Копирование и обновление баз данных
|
|||
---|---|---|---|
#18+
LUCIANАлексеич перед тобой я ставил эту проблему и до сих пор ты молчал, спасибо что наконец откликнулся. И думаешь в присланном мне коде понятно где и, главное, почему произошло торможение и не сработал on error? У меня нет твоих баз, таблиц, дисков, серверов и всего того что на них крутится и может помешать работе. Я ж не телепат. И будь мы хоть семя пядей во лбу, но нам все равно намного труднее понят что там у тебя происходит. Искать причину в любом случае должен ты, а можем только помогать тебе советами и рекомендациями. Правда если обеспечишь нас полной и технически грамотной информацией. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.08.2008, 11:07 |
|
Копирование и обновление баз данных
|
|||
---|---|---|---|
#18+
Sergey SizovИ думаешь в присланном мне коде понятно где и, главное, почему произошло торможение и не сработал on error? У меня нет твоих баз, таблиц, дисков, серверов и всего того что на них крутится и может помешать работе. Я ж не телепат. И будь мы хоть семя пядей во лбу, но нам все равно намного труднее понят что там у тебя происходит. Искать причину в любом случае должен ты, а можем только помогать тебе советами и рекомендациями. Правда если обеспечишь нас полной и технически грамотной информацией. "Копирование и обновление баз данных" -это у каждого каким то образом организовано .Вот Samvel поделился своим изобретением, поэтому попробую разобраться в его идее.Мне главное ,чтобы копирование следующей БД не зависело от копирования предыдущей БД. Да мне пусть все индексаци и и копирования поснимаются главно чтобы все задания отработали . Днём буду разбираться. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.08.2008, 11:36 |
|
Копирование и обновление баз данных
|
|||
---|---|---|---|
#18+
LUCIANБаза данных это не только таблицы с индексами , а это ещё и представления,.. Я в курсе. Еще коннекты, хранимые процедуры, в т.ч. триггеры и т.д. и т.п. И все это хранится в контейнере БД, т.е. в файлах MyBD.DBC, MyBD.DCT и MyBD.DCX ... |
|||
:
Нравится:
Не нравится:
|
|||
08.08.2008, 12:36 |
|
Копирование и обновление баз данных
|
|||
---|---|---|---|
#18+
Для организации копирования и обновления баз данных использовал одно назначенное задание в панели управления . Учитывая выше приведённые советы решил создать 4 одинаковые назначенные задания в панели управления и 5-ое задание для архивирования. Эти задания будут запускаться по расписанию:1-ое в 0-30 остальные через 2ч. т.е. в 2-30,4-30,.. Что копировать или не копировать программа решает на основании таблицы(PR_KOP-протокол копирования) следующей структуры: СТРУКТУРА PR_KOP D_KOP D(8,0) && дата копир. NZ N(2,0) && № копируемой БД WRNAC T(8,0) && время начала копир. WRKON T(8,0) && время оконч копир. SOST N(1,0) && результат копирования: 0-надо копировать,1-запущено копирование, 2-копирование успешное, 3-копирование закончилось крахом С помощью такой организации копирования предполагается ,что если 1-ое назн.задание зависло на 8-ой БД,то 2-ое задание начнёт копировать с 9-ой БД.Утром проверив протокол копирования сделаем соотв. выводы. Такая организация копирования является более полной чем предыдущая.Можно ли лучше организовать копирование БД. Код головной программы: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32.
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63.
... |
|||
:
Нравится:
Не нравится:
|
|||
11.08.2008, 13:14 |
|
Копирование и обновление баз данных
|
|||
---|---|---|---|
#18+
Не вдаваясь пока в логику. Вот это зачем? В смысле зачем это вычислять при каждом вызове? LUCIAN Код: plaintext
Код: plaintext
А вот это LUCIAN Код: plaintext 1. 2. 3. 4.
может заменить вот этим Код: plaintext
Экономия в четыре(!) :) строки. А вот это LUCIAN Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
может заменить вот этим Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9.
... |
|||
:
Нравится:
Не нравится:
|
|||
11.08.2008, 13:43 |
|
Копирование и обновление баз данных
|
|||
---|---|---|---|
#18+
В целом насколько это живуче не понятно сходу. Тут можно без макроподстановок обойтись Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
... |
|||
:
Нравится:
Не нравится:
|
|||
11.08.2008, 13:43 |
|
|
start [/forum/topic.php?fid=41&gotonew=1&tid=1587403]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
76ms |
get topic data: |
11ms |
get first new msg: |
41ms |
get forum data: |
3ms |
get page messages: |
56ms |
get tp. blocked users: |
2ms |
others: | 331ms |
total: | 552ms |
0 / 0 |