Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Аварии и их последствия / 7 сообщений из 7, страница 1 из 1
22.12.2009, 10:14
    #36379060
Kurzenev
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Аварии и их последствия
Уважаемые коллеги!
Занимаюсь эксплуатацией чужой разработки СУБД. На днях случился такой очень неприятный момент. Вышел из строя файл-сервер, на котором крутилась СУБД. Сервер подняли (причина пока не понятна- не мой участок), перезапустили и- оказалось совсем неприятное явление.
Повредились записи БД за определенное число и те записи, в которые вносились изменения тоже за это же число (к примеру, за 16.12). Суть повреждений - в MEMO-поля записан мусор или они пустые. Строковые, даты и т.п. поля остались без изменений.
Базу восстановили из копии+ потребовалась ручная работа, но это уже детали. Все фунционирует, но остались вопросы.
Первое - отчего так повредилась база?
Второе- кто виноват и как этого избежать?
Разработчиков уже нет, но в коде программы (вскрыта REFOX'ом) отсутствуют механизмы BEGIN TRANSACTION-END-ROLLBACK.
Влияние темных сил, мировой закулисы и инопланетян на информационные технологии исключаю ;)

Кто сталкивался с чем-либо подомным и как этого можно избежать- прошу поделиться соображениями.
С уважением, Kurzenev.
...
Рейтинг: 0 / 0
22.12.2009, 11:55
    #36379409
igorbik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Аварии и их последствия
Kurzenevостались вопросы.
Первое - отчего так повредилась база?Потому, что все базы и таблицы, родственные к dBase, имеют такой недостаток.
Второе- кто виноват и как этого избежать?Не виноват никто, кроме сисадминов, которые не смотрят за сервером в смысле профилактики
Избежать можно путем перевода данных в другой формат, но это не даст 100% гарантии сохранности при сбое
Разработчиков уже нет, но в коде программы (вскрыта REFOX'ом) отсутствуют механизмы BEGIN TRANSACTION-END-ROLLBACK.
Вот и хорошо, что нет, а то были бы проблемы при корпоративном доступе к базе

По опыту могу сказать, что ни одно резервирование не помогает так, как если написать программулину, которая один раз в несколько часов делает копии данных и архивирует их, не затирая предыдущие архивы, и эти копии списываются на сторонний носитель (и даже не один), который в промежутке между сессиями хранится в сейфе, дабы не запортиться при сбоях сервера.
...
Рейтинг: 0 / 0
22.12.2009, 12:04
    #36379428
Аварии и их последствия
Kurzenev,
Перетирали это много раз. Повторю еще...

Kurzenev
Повредились записи БД за определенное число и те записи, в которые вносились изменения тоже за это же число (к примеру, за 16.12). Суть повреждений - в MEMO-поля записан мусор или они пустые. Строковые, даты и т.п. поля остались без изменений.

Первое - отчего так повредилась база?

База данных, основанная на файлах DBF, "крутится" на обычном файловом сервере. Это значит, что за запись данных отвечает сервер, а за их обработку - "толстый" клиент. Естественно, что в момент, когда запись уже началась, а свет вдруг "вырубился", в файл будет записан всякий мусор. Ибо ресурсов у сервера недостаточно для корректного завершения запущенных сеансов.... Мемо-поля по размеру больше, чем другие (кроме General) и редактируются чаще. Поэтому на них эффект "виднее"... А "выстрелить" (запортить данные) могло в любом месте... На моей памяти был такой случай, когда программа выдала текстовые данные в файл DBF вместо принтера, чем этот файл "убила"... Благо это был справочник и его восстановили с резервной копии...

Kurzenev
Второе- кто виноват и как этого избежать?

Виноват тот, кто "уронил" файл-сервер (вполне может быть и внешним по отношению к организации человеком: экскаваторщик, порвавший кабель; энергетик, выключивший рубильник на подстанции и т.д.)
Избежать этого можно только установкой источника бесперебойного питания и своевременным отключением сервера с уведомлением всех работающих пользователей о чрезвычайной ситуации и необходимости завершить работу с приложением.

Kurzenev
Разработчиков уже нет, но в коде программы (вскрыта REFOX'ом) отсутствуют механизмы BEGIN TRANSACTION-END-ROLLBACK.

Вы немного не понимаете специфику FoxPro и пытаетесь на него "натянуть" стандарты специализированных серверов SQL. Все таки программа, написанная на FoxPro, это не сервер, а "толстый" клиент (пусть и со своим движком SQL). Минимальные транзакционные механизмы у нее есть (например, различные типы буферизации), но они бесполезны, когда сбой происходит на файл-сервере. Кроме того, встроенных автоматизированных механизмов "поднятия" актуального состояния базы данных (как, например, протоколирование изменений, проводимых пользователями) у Фокса нет, а, будучи запрограммированы на языке FoxPro, они сильно замедлят работу программы... Подумайте сами, не зря ведь продавцы берут хорошие деньги за дистрибутивы MS SQL SERVER или Oracle... :-)

Резюмируя вышесказанное:
1. если Вам критично Ваше приложение (например, программа - уникальный продукт), то вложите деньги в повышение надежности: грамотный админ на файл-сервере, хороший компьютер (на роль сервера) / специализированный сервер за несколько десятков тысяч "зеленых", обеспечение бесперебойного питания файл-сервера и т.д. надолго избавят Вас от подобных проблем.
2. если Вам критичны работы по поднятию БД, то вложите деньги и переведите имеющуюся базу на SQL-сервера (MS SQL SERVER или Oracle), доработав соответствующим образом клиента или написав нового...

Хотя я лично не уверен, что поднятие БД SQL-серверов при подобных ЧП будет быстрее и пройдет безболезненно для данных (т.е. ничего не потеряется из того, что пользователи вводили в момент непосредственно предшествовавший ЧП)...
...
Рейтинг: 0 / 0
23.12.2009, 17:01
    #36382746
Telum
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Аварии и их последствия
Ежедневный архив тебя спасет. Удаляешь архивы старше месяца и все. У меня 2 управления по 200 компов так работает, рубят свет эксковаторщики по -черному. Восстанавливаю из архива когда надо ).

!arj32 a имя_архива.arj data\*.*
...
Рейтинг: 0 / 0
24.12.2009, 07:36
    #36383596
puls
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Аварии и их последствия
Acronis самый лучший спосител.
...
Рейтинг: 0 / 0
13.01.2010, 10:17
    #36406834
Kurzenev
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Аварии и их последствия
Уважаемые коллеги,
большое спасибо за ответы и ценные советы, но-

данные пропали строго за определенный день.
Казалось бы - поломался бы fpt-файл, ну было бы понятно. Сломалось бы все.
Если человек утром чего-то навводил, то в базе это "чего-то" осталось бы. Смотрю- а в memo-полях за этот день сплошной мусор из-за склеивания всего, что попало из тех же memo-полей.
Понимаю, что ситуация довольно экзотическая.
Может, кто-то встречался с такой экзотикой?
...
Рейтинг: 0 / 0
13.01.2010, 15:45
    #36407811
Melnik_A
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Аварии и их последствия
2Kurzenev
Приветствую !

Регулярно приходится наблюдать(восстанавливать при возможности) битые fpt-ки .
Чаще вылетают данные именно за рабочий промежуток времени (день, недели и т.д.)

Как уже правильно выше написали -
уж такая судьба у файловой СУБД , очень большая зависимость от правильной работы сервера(системы) .
Здесь уж ничего не поделаешь , нужно смириться, и требовать чтобы системщики лучше следили за работой железа и ОС !
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Аварии и их последствия / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]