DB2: не удалось восстановить из резервной копии - PullRequest
3 голосов
/ 01 ноября 2011

Я использую команду

db2 restore db S18 from /users/intadm/s18backup/ taken at 20110913113341 on /users/db2inst1/ dbpath on /users/db2inst1/ redirect without rolling forward
to restore database from backup file located in /users/intadm/s18backup/ .

Выполнение команды дает такой вывод:

SQL1277W  A redirected restore operation is being performed.  Table space
configuration can now be viewed and table spaces that do not use automatic
storage can have their containers reconfigured.
DB20000I  The RESTORE DATABASE command completed successfully.

Когда я пытаюсь подключиться к восстановленной БД (выполняя 'db2 connect to S18'), я получаю это сообщение:

SQL0752N  Connecting to a database is not permitted within a logical unit of
work when the CONNECT type 1 setting is in use.  SQLSTATE=0A001

Когда я пытаюсь подключиться к БД с помощью программы просмотра БД, такой как SQuireL, возникает ошибка:

DB2 SQL Error: SQLCODE=-1119, SQLSTATE=57019, SQLERRMC=S18, DRIVER=3.57.82

, что означает, что «произошла ошибка во время функции восстановления или восстановление все еще выполняется» (из руководств IBM DB2)

Как я могу решить эту проблему и подключиться к восстановленной базе данных? UPD: я выполнил db2ckbkp для файла резервной копии, и он не выявил никаких проблем с самим файлом резервной копии.

Ответы [ 3 ]

0 голосов
/ 02 ноября 2011

Когда вы выполняете перенаправленное восстановление, вы сообщаете DB2, что хотите изменить расположение файлов данных в восстанавливаемой базе данных.

Первый шаг, который вы показываете выше, будет выполнен очень быстро.

Обычно после выполнения этого оператора у вас будет один или несколько SET TABLESPACE CONTAINERS для установки новых местоположений каждого файла данных.Необязательно выдавать эти операторы, но нет смысла указывать опцию redirect в вашей команде RESTORE DATABASE, если вы ничего не меняете.

Затем вы должны выполнить команду RESTORE DATABASE S18 COMPLETE,который фактически прочитал бы данные из образа резервной копии, записав их в файлы данных.

Если вы не выполнили RESTORE DATABASE S18 COMPLETE, процесс восстановления будет неполным, и имеет смысл, что вы не можете подключитьсяв базу данных.

0 голосов
/ 02 ноября 2011

Что я сделал и что сработало:

Выполненная:

db2 restore db S18 from /users/intadm/s18backup/ taken at 20110913113341 on /<path with sufficient disk space> dbpath on /<path with sufficient disk space>

Ранее я получил несколько предупреждений о том, что некоторые табличные пространства не перемещены. Когда я указал dbpath для раздела с достаточным пространством на диске - предупреждение исчезло.

После этого, поскольку у меня есть резервная копия онлайн, я выпустил:

db2 rollforward db S18 to end of logs and complete

Вот и все! Теперь я могу подключиться.

0 голосов
/ 02 ноября 2011

without rolling forward можно использовать только при восстановлении из автономной резервной копии. Ваша резервная копия была отключена? Если нет, вам нужно будет использовать перемотку вперед.

...