Перенос файлов базы данных DB2 v8.1

Перед нами встала задача перенести базу данных DB2 v8.1 со старого компьютера на новый. Сразу оговорюсь, существуют более простые и надежные способы переноса база данных DB2, чем описанный ниже способ. Но кому-то он может пригодиться. Например, в том случае, если от базы данных остались лишь файлы. Данный способ описывает перенос базы путем копирования файлов базы данных. 1) Нужно установить на новом компьютере DB2 той же версии, что и на старом компьютере 2) Следующий шаг - копирование папок, в которых содержаться файлы базы данных DB2. Для начала просмотрим какие есть табличные пространства, выполним следующий запрос:
list tablespaces
Будет выведена информация о существующих табличных пространств: ID табличного пространства, название табличного пространства и другая информация.
ID табличного пространства = 0
Имя                        = SYSCATSPACE

ID табличного пространства = 1
Имя                        = TEMPSPACE1

ID табличного пространства = 2
Имя                        = USERSPACE1

ID табличного пространства = 3
Имя                        = USERSPACE2

ID табличного пространства = 4
Имя                        = SYSTOOLSPACE

т.е. в данном случае у нас 5 табличных пространств. Остается определить расположение этих табличных пространств на жестком диске. Для каждого табличного пространства нужно выполнить запрос, указав в качестве параметра ID табличного пространства.
list tablespace containers FOR 0;
list tablespace containers FOR 1;
list tablespace containers FOR 2;
list tablespace containers FOR 3;
list tablespace containers FOR 4;
Будет выведен список контейнеров табличных пространств:
Контейнеры табличных пространств для табличного пространства 0
 Имя = C:\DB2\NODE0000\SQL00008\SQLT0000.0

Контейнеры табличных пространств для табличного пространства 1
 Имя  = C:\DB2\NODE0000\SQL00008\SQLT0001.0

Контейнеры табличных пространств для табличного пространства 2
Имя = C:\DB2\NODE0000\SQL00008\SQLT0002.0

Контейнеры табличных пространств для табличного пространства 3
Имя = C:\project\USER_DB_CONTAINER

Контейнеры табличных пространств для табличного пространства 4
Имя = C:\DB2\NODE0000\SQL00008\SYSTOOLSPACE

Обратите внимание, что кроме стандартного размещения файлов в папке C:\DB2, также используется контейнер C:\project\USER_DB_CONTAINER. Из этого делается вывод: нужно перенести на новый компьютер папку C:\DB2 и папку C:\project. 3) Скопировав все необходимые папки на новый компьютер, открываем Центр управления DB2. Находим элемент "Базы данных": развернуть список В контекстном меню этого пункта выберите "Добавить..." добавить Откроется окно добавления базы данных: выбрать бд Для начала выберите диск, автоматически будут считаны доступные базы данных на этом диске. Выберите свою базу и нажмите "OK". Если у вас несколько баз, то проделайте операцию для каждой базы данных. Добавленные базы появятся в списке: список баз данных 4) В случае, если у вас имеются распределенные (федеративные, federated) базы данных, то нужно включить поддержку федеративных баз и настроить user mapping. Поддержка федеративных баз включается командой:
UPDATE DBM CFG USING FEDERATED YES DEFERRED;
После этого нужно перегрузить DB2. Это можно сделать через значок в трее: db2 in tray У DB2 есть особенность: он берёт пользователей из операционной системы. После того, как мы заходим под своей учеткой на компьютер, база будет доступна и она не требует отдельного подключения к базе данных. Но не будут доступны псевдонимы, которые настроены на таблицы из федеративных баз данных. При попытке обратиться к псевдониму выйдет следующая ошибка.
com.ibm.db.DataException: Ошибка менеджера баз данных. : [IBM][CLI Driver][DB2/NT] 
SQL1101N Не удалось получить доступ к удаленной базе данных  на узле "" 
при указанном ID авторизации и пароле. SQLSTATE=08004
Нужно настроить пользователя и пароль для доступа к федеративной базе, не смотря на то, что базы находятся на одном компьютере и в одном инстансе. Если быть точнее, то нужно настроить отображение пользователя на удаленного пользователя с пароле (user mapping). Для начала просмотрим существующие отображения пользователей:
SELECT * FROM syscat.useroptions
user_mapping_table Столбец AUTHID - имя пользователя из операционной системы. Столбец SERVERNAME - имя федеративной базы Столбец OPTION храним одну из опций: REMOTE_AUTHID или REMOTE_PASSWORD Столбец SETTING - значение настройки: для REMOTE_AUTHID - удаленный пользователь, для REMOTE_PASSWORD - кэш от пароля удаленного пользователя. В нашем случае данные пользователя операционной системы совпадают с данными удаленного пользователя. Здесь возможно три случая: a) Просто обновить пароль
ALTER USER MAPPING FOR DB2ADMIN SERVER COMMON OPTIONS 
(SET REMOTE_PASSWORD  'your_password');
б) Обновить учетку удаленного пользователя и пароля
ALTER USER MAPPING FOR DB2ADMIN SERVER COMMON OPTIONS 
(SET REMOTE_AUTHID 'new_remote_user_login', SET REMOTE_PASSWORD 'your_password');
в) Добавление нового(дополнительного) пользователя в таблицу отображений
CREATE USER MAPPING FOR YOUR_USER SERVER COMMON OPTIONS 
(REMOTE_AUTHID 'remote_user', REMOTE_PASSWORD  'remote_password');
На этом перенос баз данных завершен! p.s. Даже, если на новом компьютере у вас будут аналогичные удаленные пользователь с таким же паролями, советую обновить кэши паролей для всех пользователей в таблице отображений.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.