|


Відновлення баз даних Interbase
Вступ
Сьогодні Interbase (і його клони FireBird, Yafill) – це один із найпопулярніших серверів. І це не дивно, адже він кросплатформовий, невеликих розмірів, легко встановлюється, не вимагає особливого навчання адміністраторів, швидко працює, стійкий і при цьому ще й безкоштовний.
Однак практика показує, що хоч би яким стійким InterBase був, але при вимиканні живлення або "зависанні" комп'ютера база іноді псується. Виникають помилки про неправильні контрольні суми або "досягнуто кінець файлу".
Ця стаття написана для того, щоб допомогти Вам вирішити подібну проблему.
Як відновити дані
Ви запитаєте: "Як відновити дані зіпсованої бази, адже Interbase Console та EMS QuickDesk нічого не хочуть робити в цьому випадку!".
Єдиний спосіб залишається скопіювати дані з однієї бази даних до іншої.
Використовувані інструменти
Ви можете використовувати різні інструменти для копіювання баз даних. Я використовую для цього спеціально розроблену програму копіювання баз даних, під назвою "Реплікатор". Її можна завантажити на адресу replicator.htm
Що ця програма вміє?
Вона вміє виконувати скрипти, копіювати таблиці у потрібній послідовності, відключати тригера, ключі, обмеження. А так само обходить помилки, виносячи їх текст у Лог і не обриваючи з'єднання. А це нам і потрібно для відновлення та перегенерації баз даних.
Опис програми "Реплікатор"
Для початку, скачаємо та встановимо програму "Реплікатор", благо вона поширюється вільно replicator.htm.
Увійдемо в програму під ім'ям та паролем адміністратора (SYSDBA).

Входимо до меню Реплікація -> Генерація бази даних.

У верхній таблиці перераховуються проекти та шляхи до баз даних. У нижній таблиці перераховується послідовність копійованих таблиць. Копіюються ті таблиці, у яких встановлена галочка у полі І (Використовується).
Поле ID має бути унікальним у всіх проектах.
Якщо вказано галочку Блокувати всі тригери, перед копіюванням інформації будуть відключені тригера, а після копіювання - знову включені. Те саме стосується індексів та обмежень.
Якщо стоїть галочка Виконувати скрипти, то при копіюванні будуть виконуватися скрипти, назви файлів яких перераховані в закладці Файли скриптів.
Якщо у Вас ім'я та пароль адміністратора не збігаються з SYSDBA, masterkey, то Вам знадобиться вказати імена та паролі в закладці Паролі.

Копіювання на практиці
Зробимо копіювання даних практично. Для цього створимо новий проект під назвою Test. Вносимо назву баз даних.

Примітка: Нова база даних (куди ми копіюємо) має бути абсолютно порожньою. У мене її розмір 230 Кб. Тобто. в ній немає нічого, крім системних таблиць InterBase і т.п.
Переходимо на таблицю назв копійованих таблиць і заповнюємо в тій послідовності, в якій хочемо копіювати. За послідовність відповідає стовпець Сорт.
Примітка: Послідовність важлива, якщо при копіюванні інформації не блокуємо тригера та обмеження за вторинними ключами.

Там де поле Назва заповнюємо назву таблиці. Можна вказати Російська назва - Поле чисто для інформації російською мовою.
Якщо Ви використовуєте генератори для ключового поля, необхідно заповнити поля Первинний, Назва генератора, Назва процедури генератора. Тоді програма автоматично створюватиме генератор, встановлюватиме його значення за максимальним значенням вказаного Вами поля, а також створюватиме збережену процедуру для вибірки значення генератора.
Оскільки ми копіюємо інформацію повністю порожню базу даних, необхідно вказати скрипти генерації бази даних. Для цього клацаємо на закладці Файли скриптів та вказуємо заповнюємо таблицю.

Якщо вказано галочку в полі П, це означає, що скрипт буде виконано перед копіюванням інформації у базі даних. Зазвичай, це скрипт, що генерується системами проектування баз даних (наприклад ErWin).
Якщо вказано галочку І, Це означає, що скрипт буде виконуватися.
Примітка: Як роздавлювач у скриптах використовується ^.
Ось і завершено попередню роботу перед копіюванням бази даних. Тепер можна перейти на закладку Проекти, відзначити галочки відключень (якщо потрібно і натиснути на Перекачати інформацію. (У моєму випадку навіть не потрібне відключення тригерів та обмежень).

З'явиться вікно з інформацією про процес копіювання інформації та виконання скриптів.

Це процес тривалий. Програма не забирає весь процесорний час і дозволяє Вам працювати над іншими завданнями. При копіюванні таблиць показується номер рядка, що копіюється.

Після завершення копіювання відображається загальна кількість помилок, попереджень, помилок у скрипті.
Ось ми і згенерували повністю працездатну базу даних. І обійшлося майже без втрат інформації.
Автор: Рудюк С.О.
Internet: www.rudjuk.kiev.ua

|