如何在不同的服务器上使用 db2expc 或 db2dec 许可证进行 db2 备份和恢复并自动调整无限表空间以避免 SQL1139n
How to make db2 backup and restore using db2expc or db2dec license on different server and autosize unlimited tablespaces avoid SQL1139n
我必须将数据库从一台服务器 (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 The total size of the table space is too big
获取备份我使用:
db2 backup database <DBNAME> to /home/db2inst1/backup
为了恢复我使用:
db2 restore database <db_name> from <location> taken at <timestamp>
这也会在表空间路径上产生错误:在服务器 B 上,不存在服务器 A 表空间路径。
表空间是自动调整大小的,没有限制。
如何解决?
去服务器A
db2 => 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 上创建新数据库。
我必须将数据库从一台服务器 (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 The total size of the table space is too big
获取备份我使用:
db2 backup database <DBNAME> to /home/db2inst1/backup
为了恢复我使用:
db2 restore database <db_name> from <location> taken at <timestamp>
这也会在表空间路径上产生错误:在服务器 B 上,不存在服务器 A 表空间路径。
表空间是自动调整大小的,没有限制。
如何解决?
去服务器A
db2 => 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 上创建新数据库。