sql - 任何非 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 服务器存在一些限制是有意为一般程序设置的(临时空间问题,以及类似的事情)。其次,我不知道该过程的更新将为查询中提取的每条记录(数千条记录)运行子查询。那已被删除,现在它按预期运行。
解决方案
以我的经验,这种情况最常发生,因为桌子上有另一个未提交的操作。例如:用户 1 成功发布更新但没有提交或回滚。用户 2(甚至用户 1 的另一个会话)发出另一个更新,该更新只是挂起,直到另一个挂起的更新被提交或回滚。你说“其他用户”没有同样的问题,这让我想知道他们是否正在提交他们的更改。如果是这样,如果他们正在更新同一张表或不同的表。
推荐阅读
- javascript - 执行智能合约功能
- javascript - 如何在全日历中将光标自动滚动到当前月份的当前日期
- node.js - 为什么使用 mongoose.connect 连接数据库时没有导入模型?
- cassandra - Cassandra 本机传输请求调优
- docker-container - 将 docker 外部的目录复制到 docker 内部的容器中
- php - 在此 AJAX/PHP MySQL 搜索字段上添加速率限制
- hyperledger-sawtooth - 客户端是否以超级账本锯齿形式向网络中的每个验证者发送交易请求?
- php - 从 Json url 结果 php 中提取数据
- sql-server - 布尔列的内连接
- asp.net-core - 安装 vue NuGet 包后找不到任何要链接的 vue.js 文件