При добавлении узлов в многораздельную базу данных, содержащую одно или несколько системных временных табличных пространств, размер страниц которых отличается от размера страниц по умолчанию (4 Кбайта), вы можете получить сообщение об ошибке "SQL6073N Операция Add Node прервана" и SQLCODE. Это вызвано тем, что при создании узла существует только пул буферов IBMDEFAULTBP с размером страниц 4 Кбайта.
Например, для добавления узла в текущую многораздельную базу данных может использоваться команда db2start:
DB2START NODENUM 2 ADDNODE HOSTNAME newhost PORT 2
Если эта многораздельная база данных содержит системные временные табличные пространства, размер страниц которых равен размеру страниц по умолчанию, будет возвращено следующее сообщение:
SQL6075W Операция Start Database Manager успешно добавила узел. Узел не будет активен, пока все узлы не будут остановлены и запущены еще раз.
Однако если системные временные табличные пространства этой многораздельной базы данных имеют размер страниц, отличный от размера страниц по умолчанию, будет возвращено сообщение:
SQL6073N Операция Add Node прервана. SQLCODE = "<-902>"
Для добавления узла можно также использовать команду ADD NODE, предварительно вручную добавив описание нового узла в файл db2nodes.cfg. После изменения этого файла и выполнения команды ADD NODE для многораздельной базы данных, содержащей системные временные табличные пространства, размер страниц которых равен размеру страниц по умолчанию, будет возвращено следующее сообщение:
DB20000I Команда ADD NODE выполнена успешно.
Однако если системные временные табличные пространства этой многораздельной базы данных имеют размер страниц, отличный от размера страниц по умолчанию, будет возвращено сообщение:
SQL6073N Операция Add Node прервана. SQLCODE = "<-902>"
Один из способов предотвратить описанную выше ошибку - выполнить команду:
DB2SET DB2_HIDDENBP=16
перед выполнением команды db2start или ADD NODE. Эта переменная реестра разрешает DB2 выделять скрытые пулы буферов по 16 страниц каждый, используя размер страницы, отличный от размера страницы по умолчанию. Это обеспечивает успешное выполнение операции ADD NODE.
Другой способ предотвращения этой ошибки - задать условие WITHOUT TABLESPACES в команде ADD NODE или db2start. После этого нужно будет создать пулы буферов, используя оператор CREATE BUFFERPOOL, и связать системные временные табличные пространства с пулом буферов, используя оператор ALTER TABLESPACE.
При добавлении узлов в существующую группу узлов, содержащую одно или несколько табличных пространств, размер страниц которых отличается от размера страниц по умолчанию (4 Кбайта), вы можете получить сообщение об ошибке "SQL0647N Пул буферов "" в настоящее время неактивен.". Это происходит потому, что созданные на новом узле пулы буферов с размером страниц, отличным от размера страниц по умолчанию, не активируются для этих табличных пространств.
Например, для добавления узла в группу узлов можно использовать оператор ALTER NODEGROUP:
DB2START CONNECT TO mpp1 ALTER NODEGROUP ng1 ADD NODE (2)
Если эта группа узлов содержит табличные пространства, размер страниц которых равен размеру страниц по умолчанию, будет возвращено следующее сообщение:
SQL1759W Для изменения распределения данных для объектов в группе узлов "<ng1>" требуется перераспределение группы узлов со включением добавленных узлов или исключением отброшенных.
Однако если табличные пространства этой группы узлов имеют размер страниц, отличный от размера страниц по умолчанию, будет возвращено сообщение:
SQL0647N Пул буферов "" в настоящее время неактивен.
Один из способов предотвратить описанную выше ошибку - создать пулы буферов для каждого размера страниц и затем заново соединиться с базой данных перед выполнением оператора ALTER NODEGROUP:
DB2START CONNECT TO mpp1 CREATE BUFFERPOOL bp1 SIZE 1000 PAGESIZE 8192 CONNECT RESET CONNECT TO mpp1 ALTER NODEGROUP ng1 ADD NODE (2)
Другой способ предотвращения этой ошибки - выполнить команду:
DB2SET DB2_HIDDENBP=16
перед выполнением команды db2start и операторов CONNECT и ALTER NODEGROUP.
Другая ошибка может возникнуть, когда оператор ALTER TABLESPACE используется для добавления табличного пространства к узлу. Например:
DB2START CONNECT TO mpp1 ALTER NODEGROUP ng1 ADD NODE (2) WITHOUT TABLESPACES ALTER TABLESPACE ts1 ADD ('ts1') ON NODE (2)
Эта последовательность команд и операторов генерирует сообщение об ошибке SQL0647N (а не ожидаемое сообщение SQL1759W).
Чтобы правильно выполнить это изменение, необходимо заново соединиться с базой данных после выполнения оператора ALTER NODEGROUP... WITHOUT TABLESPACES.
DB2START CONNECT TO mpp1 ALTER NODEGROUP ng1 ADD NODE (2) WITHOUT TABLESPACES CONNECT RESET CONNECT TO mpp1 ALTER TABLESPACE ts1 ADD ('ts1') ON NODE (2)
Другой способ предотвращения этой ошибки - выполнить команду:
DB2SET DB2_HIDDENBP=16
перед выполнением команды db2start и операторов CONNECT, ALTER NODEGROUP и ALTER TABLESPACE.