|Представленная ниже информация об утилите db2inidb замещает информацию в |книге Что нового Версии 7.2.
|С DB2 поставляется инструмент db2inidb, позволяющий выполнить |восстановление после сбоев или перевести базу данных в состояние отложенного |повтора транзакций.
|Приостановленный ввод-вывод поддерживает постоянную доступность системы, |полностью реализуя оперативное отделение зеркальной копии, то есть отделение |зеркальной копии без закрытия базы данных. Если вы не можете получить |автономные или оперативные резервные копии большой базы данных, резервные |копии или копии системы можно получить из ее зеркальной копии, используя |приостановленный ввод-вывод и отделенную зеркальную копию.
|Приостановка ввода-вывода запрещает запись данных на диск при отделении |зеркальной копии базы данных. При этом будут нормально работать все |операции базы данных, кроме операций оперативного резервного копирования и |восстановления. Однако некоторые операции могут ждать возобновления |операций записи ввода-вывода, если страницы, ожидающие записи в журналы, |должны быть сброшены на диск из пула буферов или из буферов журналов. |Эти операции продолжат нормальную работу после возобновления ввода-вывода для |базы данных. Важно, чтобы ввод-вывод базы данных был возобновлен из |того же соединения, в котором он был ранее приостановлен. Иначе |последующие попытки соединения могут зависнуть, если они требуют сброса |ожидающих страниц из пула буферов на диск. Эти соединения будут |завершены, как только ввода-вывода базы данных возобновится. Если ваши |попытки соединения зависают и не удается возобновить ввод-вывод из соединения, |использованного для его приостановки, надо выполнить восстановление после |сбоев с помощью команды RESTART с опцией WRITE RESUME.
|В среде многораздельных баз данных не требуется приостанавливать операции |записи во всех разделах одновременно. Чтобы создать отделенную |зеркальную копию для автономного резервного копирования, можно приостановить |некоторый поднабор из одного или нескольких разделов. Если в поднабор |входит узел каталога, этот раздел нужно приостанавливать последним.
|При создании зеркальной копии базы данных прежде всего копируется все |содержимое каталога базы данных и каталога локальных баз данных. |Каталог локальных баз данных sqldbdir расположен на том же уровне |файловой структуры, что и каталог системных баз данных. Кроме того, |если каталог журналов и контейнеры табличного пространства находятся не в |каталоге базы данных, их также надо скопировать. Поскольку зеркальная |копия базы данных использует пути этих каталогов, пути, куда копируются эти |каталоги, должны быть идентичны путям исходной системы. Это означает, |что и экземпляр должен быть тем же самым. Из-за такой зависимости |невозможно создать зеркальную копию базы данных на той же системе, что и |исходная база данных, если не использовать новую опцию "relocate" |инструмента db2inidb.
|Назначение опции "relocate" - изменить положение базы данных на |определенной системе, используя указанный файл конфигурации. Это может |потребовать изменения каталога системных баз данных, каталога контейнеров, |каталога журналов, имени экземпляра и имен баз данных. Если для |каталога базы данных, каталогов контейнеров и каталога журналов были успешно |созданы зеркальные копии в других каталогах на той же системе, что и исходная |база данных, можно использовать утилиту db2inidb с опцией "relocate", |чтобы изменить внутренние пути зеркальной копии базы данных. Сценарий с |использованием этой опции можно найти ниже.
|Варианты использования db2inidb зависят от способа зеркального копирования |устройств хранения. В следующих вариантах использования предполагается, |что вся база данных копируется зеркально, согласованно с системой |хранения.
|В многоузловой среде, прежде чем можно будет использовать отделенную |зеркальную копию какого-либо из разделов, надо выполнить команду db2inidb для |всех разделов. Утилиту db2inidb можно выполнить для всех разделов |одновременно при помощи команды db2_all. |
|Создание клона базы данных
|Цель этой операции - получить клон исходной базы данных, используемый |другой системой. Далее описывается, как создать клон базы данных: |
| db2 set write suspend for database
| db2 set write resume for database
|После выполнения этой команды исходная база данных должна вернуться в |обычное состояние.
| db2start
|db2inidb имя_базы_данных AS SNAPSHOT
|Этот процесс можно также использовать для автономного резервного |копирования, но при восстановлении в исходную базу данных такую резервную |копию нельзя использовать для повтора транзакций, поскольку цепочки записей в |журналах не будут совпадать.
|Использование отделенной зеркальной копии в качестве резервной базы |данных
|Так как для зеркальной (резервной) базы данных непрерывно выполняется |повтор транзакций с использованием журналов, новые журналы, создаваемые в |исходной базе данных, постоянно считываются из исходной системы. Далее |описывается, как можно использовать отделенную зеркальную копию в качестве |резервной базы данных: |
| db2 set write suspend for database
| db2 set write resume for database
| db2inidb имя_базы_данных AS STANDBY
|
|Использование отделенной зеркальной копии в качестве резервной |копии
|Далее описывается, как использовать зеркальную копию базы данных в качестве |резервной копии для восстановления исходной базы данных: |
|db2inidb имя_базы_данных AS MIRROR
|Отделение зеркальной копии в той же системе, что и исходная база |данных
|Ниже описано, как использовать опцию "relocate" утилиты db2inidb для |создания зеркальной копии базы данных в той же системе, что и исходная база |данных. В этом примере предполагается, что такая база данных будет |использоваться под новым экземпляром. |
| db2 set write suspend for database
| db2 set write resume for database
|
| db2start
| db2inidb имя_базы_данных as STANDBY relocate using config_file