Архивация БД Альта-ГТД
Основные сведения
Процедура архивации SQL базы данных "Альта-ГТД" предназначена для переноса старых данных в отдельную (архивную) БД, при этом рабочая база очищается и ее размер уменьшается. Это своего рода аналог чистки SQL БД, только при этом данные не удаляются безвозвратно, а сохраняются в отдельной БД и доступны для последующего использования.
При архивации создаются две новые базы данных: одна архивная, в которую помещаются старые данные, и одна новая рабочая база, в которую помещаются все остальные данные. Такой подход обусловлен тем, что при создании новой БД "с нуля" ее заполнение производится последовательно, т.е. и сам физический файл БД, и данные, хранящиеся в нем, практически лишены какой-либо дефрагментации, что дополнительно увеличивает производительность работы с БД в целом. Кроме того, сам процесс заполнения новой БД происходит намного быстрее, нежели копирование данных в новую базу с последующим удалением данных из старой базы, к тому же удаление данных порождает дефрагментацию, что в конечном счете отрицательно сказывается на производительности работы с БД.
После того, как процедура архивации завершена, старая БД не удаляется автоматически. Это сделано для того, чтобы иметь возможность оперативно возобновить работу в случае, если вдруг что то пошло не так.
Архивация выполняется в монопольном режиме. Это означает, что при архивации работа с базой невозможна. Сам процесс архивации занимает продолжительное время, поэтому рекомендуется запускать задачу ночью или в выходные дни.
Для того, чтобы пользователи могли начать работать с программой как можно быстрее, процедура архивации сначала заполняет данные в новой рабочей базе, после чего доступ к ней открывается, и пользователи могут начинать с ней работу. При этом процесс архивации продолжается - заполняется архивная база, однако это никак не сказывается на основном рабочем процессе.
Как это работает
1. Все подключения к старой БД "отрубаются", сама база переименовывается и получает вид [НазваниеБД_yyyymmdd_old].
2. Создается новая архивная БД с указанным именем.
3. Создается новая рабочая БД с именем [НазваниеБД_yyyymmdd_new].
4. Производится копирование данных из старой БД в новую рабочую БД. После того, как новая рабочая база заполнится данными, она становится доступной для пользователей.
5. Производится копирование данных из старой БД в архивную БД.
6. После завершения работы программа позволяет удалить старую БД (не рекомендуется).
Если в процессе архивации произошли какие то ошибки, администратор может запустить процесс архивации заново, при этом архивация продолжится с того места, где произошла ошибка. Если администратор принял решение не возобновлять архивацию, он должен вручную переименовать старую БД, задав ей старое (оригинальное) имя, после чего удалить новую рабочую БД и архивную БД.
Если процесс архивации затянулся дольше, чем планировалось, администратор может прервать процесс, после чего вручную переименовать старую БД и удалить новую БД и архивную БД.
После того, как администратор убедился, что все данные успешно перенесены, он может удалить старую рабочую базу вручную. При этом настоятельно рекомендуется сохранить ее резервную копию.
Если во время работы пользователь обнаружил, что какой то документ отсутствует в рабочей БД (был перенесен в архив), он может восстановить его вместе со взаимосвязанными документами и вместе с ЭД-сообщения (см. Работа с архивными базами данных)