我有一個bpel進程,它通過java調用db2存儲過程以獲取唯一序列號,然後將該數字插入到db2表之一中。此進程在羣集環境中運行,因此有時會發生進程的兩個實例獲取相同唯一序列號,然後嘗試將重複值插入表中導致出錯。謝謝。集羣環境中的bpel服務的重複問題
0
A
回答
0
正如@mustaccio所說,如果您使用的是序列,無論同時有多少客戶端從序列中請求值,都無法獲得相同的值兩次。
也就是說,沒有什麼能夠阻止你將一行插入到一個表中,該表的序列還沒有生成;然後,當程序返回有問題的價值,並嘗試插入它,它就會失敗:
create table test (id int not null primary key);
create sequence s1 start with 10;
-- This will insert the value 10, which is OK.
insert into test values (nextval for s1);
-- This will insert the value 11, which is OK.
insert into test values (nextval for s1);
-- Insert a row without using sequence (BAD!)
insert into test values (13);
-- This will insert the value 12, which is OK.
insert into test values (nextval for s1);
-- This will attempt to the value 13, which will fail because it is a "duplicate",
-- but not because the sequence generated a duplicate.
insert into test values (nextval for s1);
這個問題的解決方案是:
- 保證進程不插入值而不使用序列
- 如果#1不可行,請確保使用
alter sequence
重新啓動序列,使其不會產生衝突。 (在上面的例子中,alter sequence s1 restart with 14
後執行調皮插入語句。
0
正如你所說,在BPEL是在羣集environmnent運行..
如果你正在使用BPEL輪詢,請確保您標記「分佈式查詢」標誌。
分佈式查詢是指當讀取記錄,它是由閱讀實例鎖定。這要皮卡記錄跳過鎖定的記錄的另一個實例。
相關問題
- 1. ASP.NET:集羣環境通信問題
- 2. 來自主服務器的訪問員工環境(Node.js集羣)
- 3. 的集羣環境
- 4. 集羣環境中的Log4j
- 5. 羣集環境中Cassandra ByteOrderedPartitioner中的問題
- 6. WAS集羣環境中的oracle驅動程序問題env
- 7. 集羣環境中的序列化問題
- 8. Elasticsearch集羣中的OOM問題1.1.1環境
- 9. 在集羣環境中
- 10. Websphere MQ在集羣環境中創建重複隊列
- 11. Apache流量服務器羣集問題
- 12. 集羣環境中的同步
- 13. 在集羣環境中的subclipse
- 14. 集羣環境中的資產管理
- 15. 多集羣環境中的JCR鎖定
- 16. 羣集環境中的Toplink異常
- 17. 集羣環境中的Jboss AS 7 Infinispan
- 18. 羣集環境中的休眠ORM
- 19. 羣集環境中的關鍵部分
- 20. 從單個服務器到集羣的重複集合
- 21. 帶有zookeper服務器的羣集環境中的FTP入站適配器
- 22. 重交通生產環境中的節點JS羣集
- 23. Slony,pgAdmin和羣集複製的問題
- 24. 羣集環境中JMS主題的HTTP使用者
- 25. 訪問Wildfly集羣環境中的日誌
- 26. 使用SQL Server 2008的集羣環境
- 27. 在Azure服務Fabric羣集上部署的服務的複製
- 28. 在集羣環境中緩存
- 29. 在Weblogic羣集環境中登錄-LINUX
- 30. 在集羣環境中配置log4j
顯然,存儲過程是應該產生獨特的順序ce號碼,不。您需要重寫該過程,或者如果不可能,可能會在Java程序中同步對它的調用,以使兩個進程無法同時調用該過程。 – mustaccio
另一種選擇是使用內置的['sequence'](http://publib.boulder.ibm.com/infocenter/db2luw/v9r7/topic/com.ibm.db2.luw.admin.dbobj.doc/ doc/c0023175.html)鍵入DB2,這是保證不重複。 – bhamby
感謝您的信息。存儲過程在DB2中使用序列類型。同樣由於集羣環境使得通過Java進行同步調用將無法解決,因爲我們有兩個服務器,代碼是這樣的,並且Java調用db2序列時將同時從兩個服務器產生重複數據。 – Sonali