当我们需要对分片表进行attach/ detach分片管理维护时,执行该DDL语句操作分片表时,若有其他session正在访问该表,则会出现锁等待超时错误。
在很多情况下,我们需要经常对分片表进行attach/detach操作,但是我们的数据库应用系统必须保证7*24小时运行,我们经常会遇到对分片表进行attach/detach操作,而表正在被其他session访问,而我们优先执行attach/detach操作。
IDS 11.5XC6版本提供的新特性可以满足我们的要求。
session 1
> BEGIN;
Started transaction.
> select * from batch_post_id where 1=1;
#transaction not commit;
seesion 2
> ALTER FRAGMENT ON TABLE batch_post_id INIT
> FRAGMENT BY ROUND ROBIN IN dbs1, dbs2;
242: Could not open database table (cosmo.batch_post_id).
113: ISAM error: the file is locked.
Error in line 1
Near character position 78
解决方案:
> SET ENVIRONMENT FORCE_DDL_EXEC '10';
Environment set.
> ALTER FRAGMENT ON TABLE batch_post_id INIT
> FRAGMENT BY ROUND ROBIN IN dbs1, dbs2;
Alter fragment completed.
session 1
> COMMIT;
458: Long transaction aborted.
12204: RSAM error: Long transaction detected.
session1 将会提示long transaction 错误,本属于IDS目前的实现情况。

本文介绍在IDS11.5XC6中对分片表进行attach/detach操作时如何解决锁等待超时的问题。通过设置FORCE_DDL_EXEC参数,可以在其他会话访问表时强制执行DDL操作,并给出具体的操作步骤及可能产生的副作用。
1941

被折叠的 条评论
为什么被折叠?



