在DB2版本10以后,如何将一个表从一个表空间(16K页大小)移动到另一个表空间(32K页大小)?我想避免像重命名、创建另一个表、复制数据、删除重命名的表等选项。
在Oracle的世界里,同样可以通过一个简单的ALTER语句来实现。我的问题是,DB2有什么类似的功能吗?
如果在DB2 10 for zOS上,手册建议如下
要将表移动到不同页面大小的表空间。
- 使用UNLOAD FROM TABLE或REORG UNLOAD EXTERNAL FROM TABLE卸载表。
- 在表上使用CREATE TABLE LIKE在新页大小的表空间中重新创建表。
- 使用 DB2® Control Center、DB2 Administration Tool for zOS® 或目录查询来确定依赖对象:视图、授权、计划、包、同义词、触发器、引用完整性和索引。
- 丢弃原表。
- 使用 RENAME TABLE 将新表重命名为旧表的名称。
- 重新创建所有依赖对象。
- 重新绑定计划和包。
- 使用SYSRECnn数据集的数据和SYSPUNCH数据集的控制语句重新加载表,SYSPUNCH数据集是在表被卸载时创建的。
对于Db2(对于LUW),使用 ADMIN_MOVE_TABLE
https:/www.ibm.comsupportknowledgecenterenSSEPGG_11.5.0com.ibm.db2.luw.sql.rtn.docdocr0055069.html
该
ADMIN_MOVE_TABLE
存储过程将活动表中的数据移动到一个新的同名表对象中,而数据仍然在线并可被访问。