бд. Системауправлениябазами
Скачать 0.74 Mb.
|
© Архивирование и восстановление базы данных. ЗАО НПП «РЕЛЭКС», 1990-2021 61 Особенности архивирования при параллельной работе с пользователями БД Утилита lhb позволяет выполнять процесс архивирования (восстановления) данных параллельно с работой пользователей БД. Однако при этом следует учитывать следующие важные моменты, которые влияют на степень полноты получаемого архива и, следовательно, на целесообразность использования этого способа архивирования. В каждом конкретном случае вопрос должен рассматриваться администратором БД индивидуально. В процессе выборочного архивирования утилита не возвращается к повторному архивированию уже сохраненного и впоследствии измененного до завершения процесса архивирования объекта (т. е. режим «догона» не выполняется). Поэтому, если после архивирования некоторого объекта и до окончания выполнения утилиты этот объект был изменен другими пользователями БД в процессе параллельной работы, новые данные в архив не попадут и, следовательно, при последующем восстановлении будут потеряны. При полном архивировании БД в параллельном режиме данные будут сохранены полностью. Если после окончания выборочного или полного архивирования в БД остались некоторые незавершенные транзакции, то при восстановлении из такого архива данные незавершенных транзакций будут потеряны. Если в процессе выборочного архивирования операция COMMIT для некоторой транзакции была выполнена при активной утилите lhb после архивирования объектов этой транзакции и после архивирования системного журнала, то при восстановлении из такого архива изменения, выполненные этой транзакцией, не попадут в файл архива. 62 © Архивирование и восстановление базы данных. ЗАО НПП «РЕЛЭКС», 1990-2021 Сообщения утилиты lhb Структура протокола выполнения Структура диагностического сообщения утилиты: LINTER HOT BACKUP PROGRAM – v.4.1.0 build 893 -- Relex,Inc. 1990-2013 1 <строка протокола выполнения> … <строка протокола выполнения> 2 ------------------------------------------ lhb return code (<код завершения lhb>) <текст сообщения lhb> 3 Linter return code (<код завершения СУБД ЛИНТЕР>) <текст сообщения СУБД ЛИНТЕР> 4 System return code (код завершения ОС) <текст сообщения ОС> 5 Коды завершения и соответствующие тексты сообщений утилиты lhb приведены в приложении 1 данного документа. Коды завершения и соответствующие тексты сообщений СУБД ЛИНТЕР приведены в документе «СУБД ЛИНТЕР. Справочник кодов завершения» Коды завершения и соответствующие тексты сообщений операционной системы приведены в эксплуатационной документации на операционную систему. Если операционная система русифицирована, текст сообщения будет на русском языке, в противном случае – на языке операционной системы. Примеры 1) LINTER HOT BACKUP PROGRAM-v.4.1.0 build 893 -Relex,Inc. 1990-2013 Ошибка соединения. (1001) --------------------------------------------- lhb return code (30111) - Ошибка соединения с БД Linter return code ( 1001) 2) LINTER HOT BACKUP PROGRAM-v.4.1.0 build 893 -Relex,Inc. 1990-2013 Файл qqq.lhb Не могу открыть файл 'qqq' ------------------------------------------------ 1 Строка 1 содержит идентификационные сведения об утилите lhb 2 Строки 2 содержат протокольные сообщения утилиты lhb 3 Строка 3 содержит код завершения и соответствующий диагностический текст последней операции, которая выполнялась lhb и закончилась неудачно. Описание самой операции находится в последней строке протокола. 4 Строка 4 содержит код завершения, сформированный СУБД ЛИНТЕР. 5 Строка 5 содержит код завершения, сформированный операционной системой. © Архивирование и восстановление базы данных. ЗАО НПП «РЕЛЭКС», 1990-2021 63 Сообщения утилиты lhb lhb return code (30105) - Ошибка открытия файла System return code ( 1) - No such file or directory Протокольные сообщения Утилита lhb выдает следующие протокольные сообщения: 1) сообщение «Ошибка соединения» Причина. Утилита архивирования не смогла установить доступ к БД. Возможны следующие причины: • БД (локальная или удаленная), которая должна архивироваться (или частично восстанавливаться), не активна; • было задано неправильное имя удаленного ЛИНТЕР-сервера; • ошибка сетевого доступа к удаленной БД (например, не загружен один из сетевых драйверов). Устранение: • активизировать необходимую БД и повторить выполнение утилиты; • проверить (уточнить у администратора локальной сети) правильность заданного имени ЛИНТЕР-сервера; • обратиться к администратору БД или локальной сети для устранения причины отказа сетевого доступа. 2) сообщение «Проверка пароля: строки не идентичны!» Причина. В командах восстановления, тестирования или получения информации об архивном файле была задана спецификация закодированного архивного файла, при этом введенный пароль и его подтверждение не совпали. Устранение: • указать правильно пароль и его подтверждение (учитывая различие больших и малых букв). 3) сообщение «Не могу открыть файл <имя файла>» Причина. В командах восстановления, тестирования или получения информации об архивном файле была задана спецификация несуществующего файла, или пользователь утилиты не обладает необходимыми полномочиями для доступа к архивному файлу. Устранение: • задать правильную спецификацию (путь и имя) архивного файла, установить необходимые полномочия пользователю утилиты или изменить атрибуты доступа (в операционной системе) к архивному файлу. 4) сообщение «Неверный архив <имя файла>» 64 © Архивирование и восстановление базы данных. ЗАО НПП «РЕЛЭКС», 1990-2021 Сообщения утилиты lhb Причина. В командах восстановления, тестирования или получения информации об архивном файле была задана спецификация архивного файла, который в действительности не является архивом БД. Устранение: • указать правильную спецификацию архивного файла. 5) сообщение «Слишком старая версия файла <имя файла>» Причина. В командах восстановления, тестирования или получения информации об архивном файле была задана спецификация архивного файла, который создан более ранней версией утилиты lhb. Устранение: • для работы с этим архивным файлом использовать соответствующую ему версию утилиты. 6) сообщение «Слишком старая версия lhb» Причина. В командах восстановления, тестирования или получения информации об архивном файле была задана спецификация архивного файла, который создан более поздней версией утилиты lhb. Устранение: • для работы с этим архивным файлом использовать соответствующую ему версию утилиты. 7) сообщение «Неверный пароль» Причина. В командах восстановления, тестирования или получения информации об архивном файле была задана спецификация закодированного архивного файла, и при запросе пароля был введен неверный пароль. Устранение: • попытаться вспомнить (восстановить) пароль. Если восстановить пароль невозможно, архив потерян навсегда. 8) сообщение «Начать следующий том?» Причина. Для команды сохранения был задан ключ «Запрашивать разрешение на создание тома» (ключ -qq, значение ключа «Новый том» (NV)). Устранение: • ответить ДА, если очередной том многотомного архива нужно создать. При ответе НЕТ процесс архивирования закончится. © Архивирование и восстановление базы данных. ЗАО НПП «РЕЛЭКС», 1990-2021 65 Сообщения утилиты lhb 9) сообщение «Недопустимый формат даты <введенная дата>, должен быть 'DD.MM.[YY]YY.HH:MI'» Причина. В файле сценария строка, задающая дату и время очередного сохранения БД, имеет неправильный формат. Устранение: • откорректировать файл сценария сохранения БД. 10) сообщение «Ошибка сравнения контрольной суммы!» Причина. В командах восстановления, тестирования или получения информации об архивном файле была задана спецификация архивного файла, целостность которого нарушена. Устранение: • ситуация критическая – восстановление из испорченного архива невозможно. Если имеется дубликат архива, использовать его. 11) сообщение «Файл уже существует. Удалить его?» Причины: • в команде сохранения БД была задана спецификация существующего архивного файла; • в команде восстановления БД была задана спецификация существующей БД. Устранение: • при ответе ДА существующий файл будет заменен новым, при ответе НЕТ выполнение утилиты прекратится. 66 © Архивирование и восстановление базы данных. ЗАО НПП «РЕЛЭКС», 1990-2021 Оперативное архивирование Полное или нарастающее архивирование БД можно выполнять в оперативном режиме, параллельно с обслуживанием ядром СУБД запросов пользователей. Управление оперативным архивированием осуществляется с помощью соответствующих SQL- запросов. Такое архивирование очень эффективно с точки зрения удаленного администрирования СУБД ЛИНТЕР или при отсутствии возможности (или желания) использовать утилиту lhb. Оперативное восстановление БД ядром СУБД невозможно – для этого необходимо использовать утилиту lhb. Файлы архива, создаваемые утилитой lhb и ядром СУБД при оперативном архивировании, полностью совместимы между собой. SQL-запросы оперативного архивирования Начать оперативное архивирование Функция Определение оператора запуска процесса архивирования БД в оперативном режиме. Спецификация <начать архивирование>::= BACKUP DATABASE [[START | STOP] INCREMENT] [DEVICE <имя устройства>] [FILE <спецификация файла> [REWRITE]] [COMMENT <комментарий>] [PASSWORD <пароль>] [VOLUMES <размер тома> [K|M]] [ASYNC]; <имя устройства>::= 4-х символьный литерал <спецификация файла>::= символьный литерал <размер тома>::= целочисленный литерал Синтаксические правила 1) Опция DATABASE задает полное сохранение БД без возможности нарастающего архивирования; 2) <спецификация файла> задает полную спецификацию (устройство, путь к каталогу и имя) архивного файла. Если тип файла не указан, по умолчанию используется .lhb. Пример для UNIX-платформ: BACKUP DATABASE FILE 'SY00/ARCHIVES/database.lhb'; BACKUP DATABASE FILE '/../db.lhb'; 3) Фраза REWRITE разрешает удалять существующий архивный файл и создавать новый с тем же именем; 4) Конструкция DATABASE START INCREMENT задает полное сохранение БД с возможностью нарастающего архивирования; © Архивирование и восстановление базы данных. ЗАО НПП «РЕЛЭКС», 1990-2021 67 Оперативное архивирование 5) Конструкция DATABASE INCREMENT – сохранение всех изменений в БД со времени последнего нарастающего сохранения (от последней контрольной точки, созданной, например, с помощью DATABASE START INCREMENT); 6) Конструкция DATABASE STOP INCREMENT прекращает ведение нарастающего архивирования: последняя контрольная точка удаляется, а архивный файл закрывается. Т.к. по этому SQL-запросу сохранение в архивном файле последней порции накопленных в БД изменений (т. е. начиная с последней контрольной точки) не осуществляется, то перед его выполнением необходимо подать SQL-запрос BACKUP DATABASE INCREMENT для исключения потери архивных данных; 7) Опция DEVICE задает логическое имя устройства, на котором должен создаваться файл архива. Устройство должно быть описано в системной таблице $$$DEVICE. Если имя устройства не задано, по умолчанию используется переменная окружения SY00. Если SY00 не определена, архив создается в каталоге запуска ядра СУБД ЛИНТЕР. Пример: BACKUP DATABASE DEVICE 'SY02' FILE 'h:\linter\arhiv\sale2804.lhb'; 8) <комментарий> задает текст комментария к архивному файлу; 9) <пароль> задает пароль архивного файла; 10) Конструкция VOLUMES <размер тома> [K|M] разрешает разбивать архивный файл на отдельные тома указанного <размера тома>: К – в Кбайтах, M – Мбайтах; 11) Опция ASYNC задает асинхронное выполнение процесса архивирования. Общие правила Если задана опция ASYNC, пользователю сразу будет возвращен код завершения, указывающий на результат выполнения SQL-запроса (успешный или неуспешный запуск процесса архивирования). В дальнейшем информацию о текущем состоянии процесса архивирования можно будет получать из системной таблицы $$$INKERNBACK (пункт «Мониторинг процессов асинхронного архивирования» ). Примеры запуска оперативного архивирования Пример 1 BACKUP DATABASE ASYNC FILE 'DB_Sale.lhb' REWRITE COMMENT 'Оперативный архив от 22.12.2005'; Пояснение Будет запущен процесс оперативного архивирования всей БД в архивный файл « DB_Sale.lhb» (если такой файл уже имеется на диске – он будет предварительно удален без предупреждения), архивный файл будет иметь комментарий «Оперативный архив от 22.12.2005». Процесс будет проходить в асинхронном режиме, т.е. пользователь сразу получит код завершения (0 – если процесс запустился). В дальнейшем процесс архивирования будет протекать независимо от того, работает ли пользователь, запустивший процесс, с БД или нет. Рекомендуется также получить и запомнить идентификатор запущенного процесса для последующего контроля за его состоянием. Пример 2 BACKUP DATABASE FILE 'DB_Sale.lhb' PASSWORD '221205'; 68 © Архивирование и восстановление базы данных. ЗАО НПП «РЕЛЭКС», 1990-2021 Оперативное архивирование Пояснение Будет запущен процесс синхронного архивирования в архивный файл « DB_Sale.lhb». Если заданный архивный файл уже существует, пользователю будет возвращен соответствующий код завершения, и процесс архивирования завершится; в противном случае процесс архивирования начнется, и пользователь (или клиентское приложение) перейдет в состояние ожидания завершения этого процесса. После окончания процесса архивирования (удачного или неудачного) пользователь получит соответствующий код завершения. Архивный файл будет защищен паролем '221205'. Пример 3 BACKUP DATABASE START INCREMENT FILE 'inc.lhb' VOLUMES 100k; Пояснение Будет выполнено полное сохранение БД для последующего нарастающего архивирования и в системном журнале установлена контрольная точка, начиная с которой необходимо наращивать инкрементный архив. Файл архива « inc.lhb» будет разделяться на тома размером по 100 Кбайт. Примечание Если необходимо указать размер в мегабайтах, то следует задавать постфикс «м», например, 1м; если просто в байтах, то постфикс не задается, например, 2000. Пример 4 BACKUP DATABASE INCREMENT FILE 'inc.lhb' VOLUMES 100k; Пояснение Будет проведена проверка существования в БД контрольной точки нарастающего архивирования, соответствующей файлу архива inc.lhb, с последующим внесением в файл архива накопленных от этой точки изменений. Файлы архива по-прежнему будут разбиваться на тома указанного объема. Пример 5 BACKUP DATABASE STOP INCREMENT FILE 'inc.lhb'; Пояснение Из системного журнала БД будет удалена последняя контрольная точка, соответствующая файлу архива inc.lhb; никакие данные в файл архива не помещаются, процесс архивирования заканчивается с выдачей соответствующего кода завершения. Остановить оперативное архивирование Функция Определение оператора прерывания асинхронного архивирования БД в оперативном режиме. Спецификация <остановить архивирование>::= © Архивирование и восстановление базы данных. ЗАО НПП «РЕЛЭКС», 1990-2021 69 Оперативное архивирование BACKUP STOP { ALL | SINCE <дата>} [UNTIL <дата>] | <номер процесса>; <дата>::= дата-время литерал <номер процесса>::= целочисленный литерал Синтаксические правила 1) Опция ALL задает останов всех процессов архивирования (как тех, которые запущены пользователем, подавшим эту команду, так и тех, которые инициированы другими пользователями БД); 2) Конструкция SINCE <дата> задает останов процессов архивирования, активизированных после указанной <даты>; 3) Конструкция UNTIL <дата> задает останов процессов архивирования, активизированных до указанной <даты>; 4) <Номер процесса> – системный идентификатор процесса архивирования. <Номер процесса> возвращается в поле ROWID блока управления запросом CBL при использовании интерфейса нижнего уровня (см. документ «СУБД ЛИНТЕР. Интерфейс нижнего уровня» ) или в переменной ROWIDPCI_ при использовании встроенного SQL (см. документ «СУБД ЛИНТЕР. Встроенный SQL» ) в случае успешного запуска процесса архивирования. Общие правила 1) Прервать можно только асинхронное архивирование; 2) Прервать процесс архивирования может либо пользователь, который его инициировал, либо пользователь с правами DBA (права DBA позволяют прерывать любые активные процессы архивирования, в том числе и других пользователей). Примеры останова оперативного архивирования Пример 1 BACKUP STOP 4; Пояснение Будет произведена попытка останова процесса оперативного архивирования, имеющего идентификатор 4. Сначала ядро СУБД ЛИНТЕР проверит активность указанного процесса (если он уже завершился – будет выдан соответствующий код завершения). Если же процесс оперативного архивирования активен, то выполняются следующие действия: • закрытие файла архива; • запись в системную таблицу $$$INKERNBACK информации о причине и стадии (в процентах) завершения процесса; • останов процесса архивирования. Пример 2 BACKUP STOP ALL; 70 © Архивирование и восстановление базы данных. ЗАО НПП «РЕЛЭКС», 1990-2021 Оперативное архивирование Пояснение Будет произведена попытка останова всех запущенных в асинхронном режиме процессов оперативного архивирования, в том числе и процессов, запущенных другими пользователями СУБД с правами DBA. В случае успешного выполнения запроса пользователю, подавшему запрос, будет возвращено количество остановленных процессов в поле ROWID блока управления запросом CBL при использовании интерфейса нижнего уровня (см. документ «СУБД ЛИНТЕР. Интерфейс нижнего уровня» ) или в переменной ROWIDPCI_ при использовании встроенного SQL (см. документ «СУБД ЛИНТЕР. Встроенный SQL» ). Все остановленные процессы завершат свою работу, как описано выше в примере 1 этого раздела. |