我遇到此错误-“ORA-01013:user requested cancel of current operation at OracleInternal.ServiceObjects.OracleConnectionImpl.”每次我尝试运行此查询时。我知道这个问题是因为查询的一部分需要太长时间才能响应。我尝试使用并行提示,但不起作用。我也没有修改数据库的超时限制的权限。有人能在查询级别解决这个问题吗?
SELECT A.CR_ACCOUNT, B.CR_ACCOUNT FROM
FCUBS.FTTB_CONTRACT_MASTER A
Inner JOIN FCUBS.FTTB_CONTRACT_MASTER B
ON A.CR_ACCOUNT = B.DR_ACCOUNT
AND A.DR_ACCOUNT = B.CR_ACCOUNT
AND A.PAYMENT_DETAILS2 = B.CONTRACT_REF_NO;
1条答案
按热度按时间nfg76nw01#
“
ORA-01013: user requested cancel of current operation
“意味着您的客户端告诉Oracle中止当前调用。很可能您在客户端软件中配置了超时设置。这是在 * 您的客户端 * 上,而不是数据库上。也有可能DBA在过度运行后在会话上执行“ALTER SYSTEM CANCEL SQL
“,但这种情况不太常见,因为它必须手动编写;这不是大多数Oracle数据库会做的事情。请查看您的客户端超时设置。至于你的查询运行时,首先确保你没有一个多对多的连接来创建一个部分笛卡尔积。用这种方式测试你的连接 predicate :
如果你从这两个查询中都得到了行,你就有了一个多对多的连接。通过添加更多的连接列来解决这个问题,这样至少有一方使用了一组唯一的连接键。
最后,如果你没有多对多,它可能在不应该使用索引的时候使用了索引。你可以尝试以下提示: