如何在不同服务器上使用db2expc或db2dec许可证进行db2备份和还原,并自动调整无限表空间的大小,避免使用SQL1139n

问题描述 投票:0回答:1

我必须将数据库从一台服务器(A)移至另一台(B)。服务器A具有此许可证的版本:db2licm -l

Nome prodotto:                     "DB2 Express-C"
Tipo di licenza:                   "Senza garanzia"
Data scadenza:                     "Permanente"
Identificativo prodotto:           "db2expc"
Informazioni sulla versione:       "10.5"
Numero massimo di CPU:             "2"
Quantità massima di memoria (GB):  "16"
Politica di restrizione:           "Interruzione parziale"

服务器B拥有此许可证的版本:db2licm -l

Product name:                     "IBM DB2 Developer-C Edition"
License type:                     "Community"
Expiry date:                      "Permanent"
Product identifier:               "db2dec"
Version information:              "11.5"
Max amount of memory (GB):        "16"
Max number of cores:              "4"
Max amount of table space (GB):   "100"

这是两个免费许可证,并且在执行备份和还原时会出错:

SQL1139n表空间的总大小太大

获得备份,我使用:

db2 backup database <DBNAME> to /home/db2inst1/backup

并且要还原,我使用:db2 restore database <db_name> from <location> taken at <timestamp>

这也会在表空间路径上产生错误:在服务器B上,不存在服务器A表空间路径。

表空间是自动调整大小的,没有限制。

如何解决?

db2 backup restore
1个回答
0
投票

转到服务器Adb2 => connect to <DBNAME> user db2inst1sb2 => LIST TABLESPACES SHOW DETAIL

将显示一些细节。您必须在所有表空间上查看Page sizetot pages使用MB = Page size x tot pages计算MB表空间的大小。不要看临时表空间:没有必要。

举个例子:

tablespace name page size       tot pages       MB
SYSCATSPACE     4096            32768           128
USERSPACE1      4096            8192            32
SYSTOOLSPACE    4096            8192            32
TBS_N0          32768           19456           608

为确保避免问题,请增大此尺寸:

ALTER TABLESPACE SYSCATSPACE  MAXSIZE 512 M
ALTER TABLESPACE USERSPACE1   MAXSIZE 128 M
ALTER TABLESPACE SYSTOOLSPACE MAXSIZE 128 M
ALTER TABLESPACE TBS_N0       MAXSIZE 1   G

现在表空间具有最大大小,并且在还原时不会引发SQL1139n。

现在执行备份:db2 backup database <DBNAME> to /home/db2inst1/backup现在我们可以返回上一个设置:

ALTER TABLESPACE SYSCATSPACE  MAXSIZE NONE
ALTER TABLESPACE USERSPACE1   MAXSIZE NONE
ALTER TABLESPACE SYSTOOLSPACE MAXSIZE NONE
ALTER TABLESPACE TBS_N0       MAXSIZE NONE

复制服务器B上的备份并执行以下操作:db2 restore database <DBNAME> from "/database" taken at <timestamp> redirect generate script restore.clp

编辑restore.clp以修改服务器A上的所有路径指向位置以匹配服务器B上的现有路径。

删除行注释:ON 'path'并确保路径将在服务器B:上创建数据库。

删除行注释:

SET STOGROUP PATHS FOR <IBMSTOGROUPNAME>
ON 'path'
;

并确保路径在服务器B上存在:数据库将在其中创建新表空间。

现在通过以下方式进行还原:db2 -tvf restore.clp

如果发生某些错误,并且还原出错,请执行以下操作:db2 restore database <DBNAMW> abort如果此命令不起作用(给出错误),请执行以下操作:db2 drop db <DBNAME>

如果一切顺利:

ALTER TABLESPACE SYSCATSPACE MAXSIZE  NONE
ALTER TABLESPACE USERSPACE1 MAXSIZE   NONE
ALTER TABLESPACE SYSTOOLSPACE MAXSIZE NONE
ALTER TABLESPACE TBS_N0 MAXSIZE       NONE

将从服务器A中数据库的备份副本在服务器B上创建新数据库。

© www.soinside.com 2019 - 2024. All rights reserved.