При восстановлении копии DB2 с рабочего сервера, где оперативной памяти, как правило, много, на резервный (тестовый сервер), где оперативной памяти мало, для восстановления работоспособности базы данных требуется снизить размеры буферных пулов.
Переменная реестра DB2_OVERRIDE_BPF
Для этого можно использовать отдельный скрипт
#!/bin/bash
# Функция, которая роняет буферные пулы
setdbcfg()
{
db2 CONNECT TO База user Пользователь using Пароль
db2 force application all
db2 CONNECT TO База user Пользователь using Пароль
db2 ALTER BUFFERPOOL IBMDEFAULTBP IMMEDIATE SIZE 50000 AUTOMATIC
db2 ALTER BUFFERPOOL BF_POOL1 IMMEDIATE SIZE 16400
… другие буферные пулы
# заодно уменьшаем кучу утилит
db2 -v update db cfg using UTIL_HEAP_SZ 65536
db2 CONNECT RESET
# рестарт
db2stop force
db2start
# вывод информации о памяти
#db2mtrk -i -v -d
}
В принципе, если памяти для буферных пулов не хватит, то DB2 запустит их с минимальным размером, но случаются ситуации, когда подключиться к базе невозможно, в этом случае поможет переменная реестра DB2_OVERRIDE_BPF
# устанавливаем размер буферных пулов в 1000 страниц
db2set DB2_OVERRIDE_BPF=1000
# стопаем, стартуем
db2stop force
db2start
После рестарта сервера все буферные пулы будут по 1000 страниц и мы сможем подключиться и сконфигурировать наши буферные пулы
восстанавливаем
#Возвращаем назад значение переменной реестра
db2set DB2_OVERRIDE_BPF=
db2stop force
db2start
Меняем пул буферов
Переменная реестра DB2_OVERRIDE_BPF
Для этого можно использовать отдельный скрипт
#!/bin/bash
# Функция, которая роняет буферные пулы
setdbcfg()
{
db2 CONNECT TO База user Пользователь using Пароль
db2 force application all
db2 CONNECT TO База user Пользователь using Пароль
db2 ALTER BUFFERPOOL IBMDEFAULTBP IMMEDIATE SIZE 50000 AUTOMATIC
db2 ALTER BUFFERPOOL BF_POOL1 IMMEDIATE SIZE 16400
… другие буферные пулы
# заодно уменьшаем кучу утилит
db2 -v update db cfg using UTIL_HEAP_SZ 65536
db2 CONNECT RESET
# рестарт
db2stop force
db2start
# вывод информации о памяти
#db2mtrk -i -v -d
}
В принципе, если памяти для буферных пулов не хватит, то DB2 запустит их с минимальным размером, но случаются ситуации, когда подключиться к базе невозможно, в этом случае поможет переменная реестра DB2_OVERRIDE_BPF
# устанавливаем размер буферных пулов в 1000 страниц
db2set DB2_OVERRIDE_BPF=1000
# стопаем, стартуем
db2stop force
db2start
После рестарта сервера все буферные пулы будут по 1000 страниц и мы сможем подключиться и сконфигурировать наши буферные пулы
восстанавливаем
#Возвращаем назад значение переменной реестра
db2set DB2_OVERRIDE_BPF=
db2stop force
db2start
Использование OVERFLOW LOG PATH
При восстановлении базы данных с повтором транзакций в опции ROLLWORWARD
RESTORE DATABASE db FROM "Путь к backup"
TO "Путь к базе"
INTO Имя базы
WITH 2 BUFFERS BUFFER 1024 PARALLELISM 1
WITHOUT PROMPTING;
INTO Имя базы
WITH 2 BUFFERS BUFFER 1024 PARALLELISM 1
WITHOUT PROMPTING;
ROLLFORWARD DATABASE Имя базы
TO 2012-01-31-14.20.00.000000
(на дату в формате YYYY-MM-DD-HH-MM-SS.MS)
AND COMPLETE
OVERFLOW LOG PATH ("путь к логу");
OVERFLOW LOG PATH ("путь к логу");
Меняем пул буферов
CONNECT TO db_2;
ALTER BUFFERPOOL IBMDEFAULTBP IMMEDIATE SIZE 50000 AUTOMATIC;
CONNECT RESET;
ALTER BUFFERPOOL IBMDEFAULTBP IMMEDIATE SIZE 50000 AUTOMATIC;
CONNECT RESET;