我在 Oracle 10g 中有一个 INSERT 查询,它卡在“来自 dblink 的 SQL*Net 消息”事件上。看起来像:
INSERT INTO my_table (A, B, C, ...)
SELECT A, B, C, ... FROM link_table@other_system;
my_table
除了我正在尝试执行的 INSERT 中的锁之外,我没有看到任何锁。单独运行时,SELECT 查询可以link_table@other_system
毫无问题地完成。我只有在尝试进行 INSERT 时才会遇到这个问题。
有谁知道这里会发生什么?
更新 SELECT 在单独运行时在约 1.5 分钟内返回 4857 行。在我决定杀死它之前,INSERT 运行了一个多小时,并带有这个等待消息。
更新 我在我的方法中发现了一个错误。我使用日期范围来限制结果。我仅在测试 SELECT 时使用的日期范围是在最后一次在 link_table 上运行 OraStats 之前,但我在测试 INSERT 时使用的日期范围是在最后一次在 link_table 上运行 OraStats 之后。所以,这误导我相信 INSERT 有问题。我这样做不是很科学;我的错。