Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Interbase: убили негра  (Прочитано 26147 раз)
0 Пользователей и 6 Гостей смотрят эту тему.
x77
Модератор

ro
Offline Offline
Пол: Мужской
меняю стакан шмали на обратный билет с Марса.


« : 20-04-2004 10:37 » 

база на филиале. дорваться до неё не могу, объём порядка 2,5 гигов, всё приходится разруливать по телефону. симптоматика следующая: медленно работает, виснет на резервировании (каждый раз в разных местах: то при записи таблиц, то индексов). проверка со включенными Check Database, Validate, ValidateFull показывает нарушений на уровне записей - 2, страниц - 11, индексов - 55.  Субд - жарптица 1.3., ОС - 2000 сервак на NTFS.

требуется её всё-таки зарезервировать. последующее восстановление, по идее, ошибки почистит само. только вот как?
Записан

Oldy
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #1 : 20-04-2004 10:46 » 

gfix - пробовали?
Приведите ключи у gbak
Записан

С уважением, Oldy.
x77
Модератор

ro
Offline Offline
Пол: Мужской
меняю стакан шмали на обратный билет с Марса.


« Ответ #2 : 20-04-2004 10:58 » 

Oldy, шутите, какой там gbak. матрёна, которая там админом, с экспертом едва справляется. а в эксперте ключи были, как я указал.

Oldy, она мне звонит как-то, и грит: я вот пароль набираю, а у меня вместо букв - звёздочки. что мне делать? с тех пор звёздочки она уже одолела, но сажать её за досовские тулзы...  хотя придётся, видимо.

gfix не пробовал. спасибо за идею, завтра проверим. что посоветуешь? -mend?
Записан

Oldy
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #3 : 20-04-2004 11:24 » 

x77,
Цитата

матрёна, которая там админом

Они везде  Отлично.
Цитата

что посоветуешь? -mend?

Как вариант на копии базы.
Записан

С уважением, Oldy.
x77
Модератор

ro
Offline Offline
Пол: Мужской
меняю стакан шмали на обратный билет с Марса.


« Ответ #4 : 20-04-2004 11:35 » 

видимо, да...

1. делаем копию.
2. gfix ... -two_phase
3. делаем вторую копию
3. пробуем резервирование на второй копии, если обламываемся -
4. gfix ... -mend на первой копии

план Маршалла, мля...

альтернативы могут быть?
Записан

Oldy
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #5 : 20-04-2004 11:58 » 

1. Делаем копию
2. gfix -v -full копии (полный список проблем)
3. gfix -mend копии
4. gfix -v -full копии
5. gbak -b -v -ig копии (подробно о backup)
и 6.gbak -b -v -ig -g если ошибки в пункте пять

Как альтернатива? :?
Записан

С уважением, Oldy.
x77
Модератор

ro
Offline Offline
Пол: Мужской
меняю стакан шмали на обратный билет с Марса.


« Ответ #6 : 20-04-2004 12:12 » 

смысла в валидации я не вижу, покажет то же, что и IBExpert. единственное, что - это запускаться будет с коммандной строки. ibexpert сам по себе отнюдь не безгрешен, и при выводе отчёта о быкапе 2-х с половиной гиговой базы виснуть может именно он. этого я тоже не учитывал, хотя должен был бы.

чем тебе двухфазное восстановление не нравится? менд, насколько я понимаю, не столько исправляет ошибки, сколько готовит базу с ошибками к архивации. что он даст сам по себе?
Записан

Oldy
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #7 : 20-04-2004 13:18 » 

x77,
Цитата

смысла в валидации я не вижу,

Ну в общем-то да.
Цитата

чем тебе двухфазное восстановление не нравится?

Почему не нравится, при наличии лимбо транзакций самое то.
Я привел как альтернативу рекомендованное здесь http://www.ibase.ru/devinfo/db_repair.htm#gfix
Записан

С уважением, Oldy.
x77
Модератор

ro
Offline Offline
Пол: Мужской
меняю стакан шмали на обратный билет с Марса.


« Ответ #8 : 20-04-2004 13:32 » 

Oldy, во. объясни мне толком, что такое лимбо-транзакции? не завершённые? если базу принялись архивировать, она зависла, задачу сняли, итогом будут лимбо-транзакции?
Записан

Oldy
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #9 : 20-04-2004 13:34 » 

x77, да, незавершенные транзакции. Могли возникнуть при "зависании" базы. (при наличии многопользовательского доступа)
Записан

С уважением, Oldy.
x77
Модератор

ro
Offline Offline
Пол: Мужской
меняю стакан шмали на обратный билет с Марса.


« Ответ #10 : 20-04-2004 13:38 » 

x77,  а там такое повторяется уже не первый день.

ладно, бум лечить. потом расскажу, чем дело кончилось.

спасибо Улыбаюсь
Записан

x77
Модератор

ro
Offline Offline
Пол: Мужской
меняю стакан шмали на обратный билет с Марса.


« Ответ #11 : 20-04-2004 13:42 » 

о, сам с собой заговорил.
Записан

Oldy
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #12 : 20-04-2004 13:45 » 

Эт я все пытался мысли яснее выразить. Вот и помешал.
Записан

С уважением, Oldy.
Oldy
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #13 : 21-04-2004 07:42 » 

x77,
Цитата

x77, да, незавершенные транзакции. Могли возникнуть при "зависании" базы. (при наличии многопользовательского доступа)

Прошу прощение за неверное определение limbo

Вот верное
Цитата

Limbo: Транзакция, стартовавшая в режиме 2PC (two phase commit) вызовом процедуры Prepare. Эта транзакция может быть живой или нет. В любой момент такая транзакция может возобновиться и запросить подтверждение или отмену. Изменения, произведенные транзакцией, оставшейся в состоянии in limbo не могут быть приняты или игнорированы, соответственно они не могут быть удалены из БД.
Записан

С уважением, Oldy.
x77
Модератор

ro
Offline Offline
Пол: Мужской
меняю стакан шмали на обратный билет с Марса.


« Ответ #14 : 21-04-2004 08:23 » 

угу. я тож уже разобрался вчера к вечеру. все эти лимбы можно просто игнорировать при бэкапе, да и всё.
Записан

x77
Модератор

ro
Offline Offline
Пол: Мужской
меняю стакан шмали на обратный билет с Марса.


« Ответ #15 : 21-04-2004 11:03 » 

написал этой дуре:

gfix forsec.gdb -v -full -user sysdba -password masterkey > 1.txt
gfix forsec.gdb -mend -user sysdba -password masterkey > 2.txt
gfix forsec.gdb -v -full -user sysdba -password masterkey > 3.txt

у неё все три файла оказались пустыми, а на экран выдались те же сообщения об ошибках. то ли она дура, то ли для gbak'а перенаправление вывода не работает. в чём я сильно сомневаюсь. уродство Жаль
Записан

Oldy
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #16 : 21-04-2004 11:35 » 

x77, Не ругайтесь. GBAK действительно не перенаправляет вывод по >.
Есть опция -y [file | supress_output].
Записан

С уважением, Oldy.
x77
Модератор

ro
Offline Offline
Пол: Мужской
меняю стакан шмали на обратный билет с Марса.


« Ответ #17 : 21-04-2004 11:52 » 

о , чёрт. Спасибо, Oldy. ну а gfix? там таких опций нет Жаль

завтра буду опять бороться. на данный момент факт в том, что gfix -mend практически ничего не дал. кажется, остаётся попробовать gbak с игнорированием check-sum'ов, лимбо и пр.
Записан

Oldy
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #18 : 21-04-2004 12:13 » 

Вроде-бы опций нет. Удачи.
Записан

С уважением, Oldy.
x77
Модератор

ro
Offline Offline
Пол: Мужской
меняю стакан шмали на обратный билет с Марса.


« Ответ #19 : 21-04-2004 12:20 » 

ото ж.

ладно, прорвёмся. на крайняк - буду писать прогу для копирования данных в другую базу. идиотизм, конечно, но не вижу вариантов. отказать от базы - нереально, объяснить ей, как вылить данные в external tables и потом залить заново - нереально в принципе.
Записан

Never
Команда клуба

ua
Offline Offline
Пол: Женский

« Ответ #20 : 24-04-2004 12:11 » 

Алле, народ! А что такое
Цитата

Транзакция, стартовавшая в режиме 2PC (two phase commit)
этот самый режим?
Записан

не умеете летать- не мучайте метлу!
Oldy
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #21 : 24-04-2004 13:31 » new

Never,  
Цитата
Еще одна особенность транзакций IB кроме разных комбинаций параметров, это двухфазный коммит (2PC). Двухфазная транзакция IB, в отличие от других серверов, не требует дополнительного программирования, и может быть выполнена над любым количеством серверов (или баз данных), причем независимо от их платформы. Смысл двухфазного коммита состоит в том, что в отличие от обычного старта и завершения транзакции в нее вводится фаза проверки, когда ядро IB должно убедиться в том, что все сервера, участвующие в транзакции, могут ее завершить. Таким образом, если в какой-то из моментов между серверами, участвующими в двухфазной транзакции, оборвали провода, то всегда есть возможность выяснить, на каком этапе это произошло. И соответственно, произвести либо commit либо rollback после восстановления соединения.
(С) www.ibase.ru

Это и другое о 2PC транзакции, а так-же вообще о транзакциях в IB посмотрите здесь:
http://www.ibase.ru/devinfo/ibtrans.htm
Записан

С уважением, Oldy.
Oldy
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #22 : 24-04-2004 14:21 » 

x77, Простите мне мой склероз (доканал он меня Жаль ). gfix свои сообщения выводит в firebird.log
(interbase.log).
Записан

С уважением, Oldy.
Never
Команда клуба

ua
Offline Offline
Пол: Женский

« Ответ #23 : 24-04-2004 15:25 » 

Oldy, cпасибо, это интересно.
Записан

не умеете летать- не мучайте метлу!
x77
Модератор

ro
Offline Offline
Пол: Мужской
меняю стакан шмали на обратный билет с Марса.


« Ответ #24 : 26-04-2004 08:21 » 

gbak в досовской сессии также виснет. идиотизм. пришлось за два часа наваять прогу, которая копирует данные. делаем резервирование с опцией metadata only, потом запускаем прогу, указываем исходную и пустую базы, она даст список таблиц, отмечаем нужные, при необходимости меняем их порядок (для соблюдения внешних ключей), и нажимаем кнопочку. дешёво и сердито.

Oldy, если надо, могу скинуть. отличие от тулзов типа datapump, котороми, в принципе, тоже можно обойтись, в том, что на экран выводяться все копируемые записи. так что если что-то гнётся, видно, на какой конкретно записи это произошло.
Записан

x77
Модератор

ro
Offline Offline
Пол: Мужской
меняю стакан шмали на обратный билет с Марса.


« Ответ #25 : 26-04-2004 08:32 » 

кстати, никакого упоминания о работе gfix в логах я не нашёл. только запуски гварда и облмавшиеся попытки коннекта.
Записан

Oldy
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #26 : 26-04-2004 11:18 » 

Цитата

никакого упоминания о работе gfix в логах я не нашёл

Чудеса да и только.  Я шокирован!
Специально перепроверил на заведомо убитой базе - все ошибки в firebird.log
есть.  FireBird 1.5 W1-V6.3.0.4290 на WinNT4WS, NTFS.

Цитата

пришлось за два часа наваять прогу, ... если надо, могу скинуть.


Если только вас это не обременит. Спасибо.
Записан

С уважением, Oldy.
x77
Модератор

ro
Offline Offline
Пол: Мужской
меняю стакан шмали на обратный билет с Марса.


« Ответ #27 : 26-04-2004 11:49 » 

у меня fb1.03, логи его живут в interbase.log. и там пусто. странно, действительно.
Записан

x77
Модератор

ro
Offline Offline
Пол: Мужской
меняю стакан шмали на обратный билет с Марса.


« Ответ #28 : 26-04-2004 12:56 » 

Цитата
Если только вас это не обременит. Спасибо.


Oldy, я почту за честь Улыбаюсь только отправлю чуть позже, возможно, - завтра, я там переделал кое-что, хочу причесать код и проверить всё сегодня вечером.

сдуру сделал сначала на стандартных компонентах. они кладут записи в буфер для отображения на экране, скроллинга и т.д. на тестовой пол-гиговой базе с таблицами по полтора миллиона записей тормоза получились дикие - расчётное время копирования по 15-20 часов. переделал чтение на однонаправленный режим доступа - те же таблицы стали копироваться меньше, чем за час. всё-таки насколько тормозит эта дельфя со своей буферизацией, это вилы просто. стандартный BDE-шный подход для работы с базами - это просто клиника в некоторых ситуациях: когда таблицу достаточно просто читать, без всяких db-aware контролов, на порядки быстрее делать всё руками через родное апи.
Записан

Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines