我有两个dbs,让我们称它们为写b和readdb。Readdb有一个用于写b的dblink,还有一个指向该dblink上的表的视图。
我对该表进行了更新,该表的视图指向dblink,然后从该表读取。即使我将隔离级别设置为SERIALIZABLE,在事务提交之后,我似乎也会看到几秒钟的旧值。
这说得通吗?
B.书面形式:
create table mk.dblink_test (
id varchar2(16),
status varchar2(16));
insert into mk.dblink_test
SELECT rownum, 'ACTIVE'
FROM dual
CONNECT BY LEVEL <= 1000000;在重新登记时:
CREATE DATABASE LINK DBL_TEST CONNECT TO mk IDENTIFIED BY password USING 'writedb:1521/qa'直接更新写b的SQL:
update mk.dblink_test
set status = 'DONE'
where id = '1';
commit;现在,使用SQL进行脏读取的情况是很奇怪的。以下更简单的查询
SELECT r.status
FROM mk.dblink_test@DBL_TEST r
WHERE r.id = '1';
commit;似乎没有表现出问题。但是有一个更复杂的版本:
SELECT r.status
FROM mk.dblink_test@DBL_TEST r
LEFT OUTER JOIN (SELECT '3' status from dual) optout ON optout.status = r.status
WHERE r.id = '1';
commit;90%可靠地复制。复制步骤:
发布于 2015-01-02 15:17:48
甲骨文说:
http://docs.oracle.com/cd/B19306_01/server.102/b 14231/ds_txnman.htm#i1008473
当基本表中不存在更改时,分布式查询在连续运行时返回不同的结果。(医生ID 561471.1)
...skip更多的写作..。
Bug.611416更新和提交后的SELECT没有显示更新的列
...skip更多的写作..。
“您可以使用以下技术确保在查询之前同步这两台机器的SCN:*因为SCN在远程查询结束时是同步的,所以在每个远程查询之前使用一个虚拟的远程查询在同一个站点上进行同步,例如,选择* FROM @ remote。*因为SCN在每个远程事务开始时都是同步的,所以在发出远程查询之前提交或回滚当前事务。”
https://dba.stackexchange.com/questions/86973
复制相似问题