首页 > 解决方案 > 任何非 SELECT 查询都不会在 Oracle 中运行

问题描述

因此,我可以成功运行任何SELECT语句,但执行任何UPDATE语句都会挂起,直到它们最终超时。尝试执行任何存储过程也会发生这种情况。连接到数据库的其他用户可以运行任何东西而不会遇到此问题。

是否有每个用户可以转储的缓存或类似的东西?我通常厌倦了等待并取消操作,所以我不知道这是否导致了问题。

仅供参考,事情就这么简单:

UPDATE SOME_TABLE
SET SOME_COLUMN = 'TEST';

EXECUTE SOME_PROCEDURE(1234);

但这有效:

SELECT * FROM SOME_TABLE; -- various WHERE clauses don't cause any problems.

更新:

对于来这里寻找类似问题答案的任何人来说,这可能有点令人失望,但问题最终是双重的:DBA 认为给我很多细节并不重要,但 Oracle 服务器存在一些限制是有意为一般程序设置的(​​临时空间问题,以及类似的事情)。其次,我不知道该过程的更新将为查询中提取的每条记录(数千条记录)运行子查询。那已被删除,现在它按预期运行。

标签: sqloracleoracle11g

解决方案


以我的经验,这种情况最常发生,因为桌子上有另一个未提交的操作。例如:用户 1 成功发布更新但没有提交或回滚。用户 2(甚至用户 1 的另一个会话)发出另一个更新,该更新只是挂起,直到另一个挂起的更新被提交或回滚。你说“其他用户”没有同样的问题,这让我想知道他们是否正在提交他们的更改。如果是这样,如果他们正在更新同一张表或不同的表。


推荐阅读