我必须将数据库从一台服务器(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表空间路径。
表空间是自动调整大小的,没有限制。
如何解决?
转到服务器Adb2 => connect to <DBNAME> user db2inst1
sb2 => LIST TABLESPACES SHOW DETAIL
将显示一些细节。您必须在所有表空间上查看Page size
和tot 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上创建新数据库。