REORG TABLE似乎隐式提交事务

时间:2017-07-14 06:58:06

标签: transactions db2 db2-luw

我正在测试数据库迁移,它会移动大量数据并修改模式(对表的更改)。

在DB2中,每当您更改表时,都需要调用

CALL SYSPROC.ADMIN_CMD('REORG TABLE tablename');

否则,你不能对表格做任何事情。

对于测试,我在一个SQL事务中运行迁移,以便我可以在最后执行ROLLBACK。

但似乎REORG TABLE命令似乎暗示为该特定表提交事务。在我回滚之后,我称之为REORG TABLE的表的模式已被保留。

我是否遗漏了某些东西,或者是在DB2事务中测试迁移,这在DB2上是不可能的?

1 个答案:

答案 0 :(得分:0)

DB2 reorg是一个命令(无论用于触发它的方法如何),它在内部都有自己的事务控制。所以你不能使用ROLLBACK撤消reorg的活动。只有SQL语句和DDL受事务控制。 如果您打算撤销重组活动或整个迁移,则可以使用时间点还原,或者对恢复到非生产环境的生产数据库的一次性副本执行测试。