|将节点添加至一个分区数据库(该数据库具有一个或多个系统临时表空间,其页大小不同于缺省页大小(4 KB))时,您可能会遇到错误消息“SQL6073N“添加节点”操作失败”和一个 SQLCODE。发生这种情况的原因是创建该节点时仅存在页大小为 |4 KB 的 IBMDEFAULTBP 缓冲池。
|例如,可使用 db2start 命令,将节点添加至当前分区数据库:
| DB2START NODENUM 2 ADDNODE HOSTNAME newhost PORT 2
|如果分区数据库具有页大小为缺省页大小的系统临时表空间,会返回以下消息:
| SQL6075W“启动数据库管理器”操作成功地添加了该节点。 | 该节点在停止并再次启动所有节点之前将处于不活动状态。 |
|但是,如果分区数据库的系统临时表空间的页大小不是缺省值页大小,会返回以下消息:
| SQL6073N“添加节点”操作失败。SQLCODE = "<-902>"
|在类似的示例中,可在用新节点描述手工更新 db2nodes.cfg |文件后使用 ADD NODE 命令。在对具有系统临时表空间(其页大小为缺省页大小)的分区数据库编辑该文件和运行 ADD NODE 命令之后,将返回以下消息:
| DB20000I ADD NODE 命令成功完成。
|但是,如果分区数据库的系统临时表空间的页大小不是缺省值页大小,会返回以下消息:
| SQL6073N“添加节点”操作失败。SQLCODE = "<-902>"
|防止上述问题的一种方法是在发出 db2start |或 ADD NODE 命令之前运行:
|DB2SET DB2_HIDDENBP=16
|此注册表变量使 DB2 能够分配每个池为 16 页(所使用的页大小与缺省页大小不同)的隐藏缓冲池。因此 ADD NODE |操作能够成功完成。
|避免这些问题的另一方法是在 ADD NODE 或 db2start 命令上指定 WITHOUT TABLESPACES 子句。在进行此操作之后,必须使用 CREATE BUFFERPOOL 语句来创建缓冲池,并使用 ALTER TABLESPACE 语句来将系统临时表空间与缓冲池相关联。
|在将节点添加至这样的节点组时,该节点组的一个或多个表空间的页大小不同于缺省页大小(4 KB),可能会遇到以下错误消息:“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)
|防止该问题出现的第二种方法是在发出 db2start 命令、CONNECT 和 ALTER NODEGROUP 语句之前运行:
|DB2SET DB2_HIDDENBP=16
|。
|在 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)
|防止该问题的另一种方法是在发出 db2start 命令、 |CONNECT、ALTER NODEGROUP 和 ALTER TABLESPACE 语句之前运行:
| DB2SET DB2_HIDDENBP=16