【发布时间】:2011-07-02 17:34:39
【问题描述】:
我正在使用分布式事务将本地数据库中的表与地球另一端数据库中的表中的数据同步。 网络通过互联网上的 vpn 连接。 大多数情况下它工作正常,但是当连接在活动事务期间中断时,锁会阻止作业再次运行。 我无法终止锁定会话。尝试这样做只会返回“ORA-00031:会话标记为杀死”,并且在我循环本地数据库之前它实际上并没有被杀死。
同步作业基本上是
CURSOR TRANS_CURSOR IS
SELECT COL_A, COL_B, COL_C
FROM REMOTE_MASTERTABLE@MY_LINK
WHERE UPDATED IS NULL;
BEGIN
FOR TRANS IN TRANS_CURSOR LOOP
INSERT INTO LOCAL_MASTERTABLE
(COL_A, COL_B, COL_C)
VALUES
(TRANS.COL_A, TRANS.COL_B, TRANS.COL_C);
INSERT INTO LOCAL_DETAILSTABLE (COL_A, COL_D, COL_E)
SELECT COL_A, COL_D, COL_E
FROM REMOTE_DETAILSTABLE@MY_LINK
WHERE COL_A = TRANS.COL_A;
UPDATE REMOTE_MASTERTABLE@MY_LINK SET UPDATED = 1 WHERE COL_A = TRANS.COL_A;
END LOOP;
END;
任何使此同步操作更能容忍网络丢失的想法将不胜感激。 我使用的是 Oracle 标准版一,因此没有可用的企业功能。
TIA 索伦
【问题讨论】:
标签: oracle transactions locking distributed dblink