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 есть особенность: он берёт пользователей из операционной системы. После того, как мы заходим под своей учеткой на компьютер, база будет доступна и она не требует отдельного подключения к базе данных. Но не будут доступны псевдонимы, которые настроены на таблицы из федеративных баз данных.
При попытке обратиться к псевдониму выйдет следующая ошибка.
com.ibm.db.DataException: Ошибка менеджера баз данных. : [IBM][CLI Driver][DB2/NT] SQL1101N Не удалось получить доступ к удаленной базе данныхНужно настроить пользователя и пароль для доступа к федеративной базе, не смотря на то, что базы находятся на одном компьютере и в одном инстансе. Если быть точнее, то нужно настроить отображение пользователя на удаленного пользователя с пароле (user mapping). Для начала просмотрим существующие отображения пользователей:на узле "" при указанном ID авторизации и пароле. SQLSTATE=08004
select * from syscat.useroptions
Столбец 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. Даже, если на новом компьютере у вас будут аналогичные удаленные пользователь с таким же паролями, советую обновить кэши паролей для всех пользователей в таблице отображений.