问题标签 [ora-00054]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
oracle - 如何在我的 SQL*Loader 加载过程中跟踪什么是重新启用触发器?
我似乎在我的日志中看到了很多这样的消息:
这是在我的本地开发机器上,所以不应该有任何其他东西试图插入这些表。我怎样才能找到造成这种情况的原因?有什么方法可以防止触发器被重新启用(至少看看我的脚本中是否有错误)?
sql - 你如何检查一行是否被锁定以进行更新?
有没有一种方法可以测试一行是否已在 Oracle 中被锁定以进行更新?
例如,假设由一位用户执行以下查询:
对于另一个用户,我想检查该行THE_ID = 1000
是否被锁定。如果我尝试更新或其他操作,第二个用户会被阻止并继续等待(不希望这样)。
我还尝试使用第二个用户运行以下查询:
由于我不能在同一行放置两个锁,这将失败。它确实如此。我收到“ORA-00054:资源繁忙,并以 NOWAIT 指定错误获取”。我是否可以始终依靠此错误来检查锁的存在,或者是否有一种更简单、更简洁的方法来确定一行是否被锁定?
谢谢!
oracle - 自治事务中的 Oracle DDL
我需要在 Oracle 数据库上执行一堆(最多约 1000000 条)sql 语句。这些语句最终应该导致引用一致的状态,如果发生错误,所有语句都应该回滚。这些陈述没有参考顺序。因此,如果启用了外键约束,则其中一个语句可能会导致外键违规,即使此违规将通过稍后执行的语句来修复。
我尝试先禁用外键并在执行所有语句后启用它们。我认为当发生实际的外键违规时我可以回滚。不过我错了,我发现 Oracle 中的每个 DDL 语句都以提交开头,因此无法以这种方式回滚语句。这是我禁用外键的脚本:
经过一番研究,我发现建议在自治事务中执行 DDL 语句,就像在这种情况下一样。所以我尝试在自治事务中运行 DDL 语句。这导致了以下错误:
ORA-00054: 资源繁忙并使用指定的 NOWAIT 获取
我猜这是因为主事务仍然在表上具有 DDL 锁。
我在这里做错了什么,还是有其他方法可以使这种情况起作用?
sql - ORA-00054: 资源繁忙并使用指定的 NOWAIT 获取
我杀死了一个正在更新表格的脚本。现在,当我重新运行我得到的脚本时,
ORA-00054: 资源繁忙并使用指定的 NOWAIT 获取
我想桌子被锁定了?如何解锁表?提前致谢。
php - 一个 PHP/应用程序会话是否对应一个 Oracle/数据库会话?
我遇到了一些我没想到的行为。我有一个通过 PHP/OCI8 启动的同步过程。在该过程的开始有一个SELECT...FOR UPDATE NOWAIT
我这样做NOWAIT
是因为我希望用户立即通过错误消息通知该进程已经在运行,而不是让他们的浏览器等待锁定。
当我从具有两个单独 PHP 会话的两台单独的计算机上运行该过程时,我得到了预期的行为:一台运行,而另一台运行ORA-00054: resource busy and acquire with NOWAIT specified
.
但是,当我在同一个浏览器上打开两个选项卡并运行该过程时,第二个选项卡会等待 30 多秒以使第一个选项卡完成,然后运行第二个选项卡——就好像我没有指定NOWAIT
.
我没有使用任何类型的持久连接或连接池。我认为一个单独的 HTTP 请求,执行单独的 PHP=>Oracle 连接,会给我单独的数据库会话。不是这样吗?
更新:我在 #6 下找到了这个:http ://wiki.oracle.com/page/PHP+Oracle+FAQ,如何使用 OCI8 扩展连接到 Oracle?它说:
如果在脚本或 httpd 服务器会话中多次使用相同的用户凭据,PHP 将共享/重用连接。您可以使用 oci_new_connect() 函数来确保使用新会话。调用 oci_pconnect() 函数以建立在脚本结束时未关闭的持久连接(使下一个脚本中的重新连接更快)。
但是,当我更改oci_new_connect
它并不能解决问题。不同计算机上的不同会话抛出ORA-00054
,但同一浏览器上的两个选项卡同步访问但不尊重NOWAIT
。
oracle - ORA-00054 加载大型数据文件时
我在加载大型数据文件(~ 10 gb)时得到 ORA-00054 当在前一个文件之后加载这个新文件时会发生错误。有什么想法可以解决这个问题吗?
oracle - ORA-00054: 资源繁忙并使用指定的 NOWAIT 获取或超时已过期
为什么我在更新表时收到此数据库错误?
第 1 行出现错误:ORA-00054:资源繁忙并使用指定的 NOWAIT 获取或超时过期
oracle - 向 Oracle OLTP 表添加列
我正在尝试在应用程序运行且繁忙时向 Oracle 10 OLTP 数据库中的常用表添加一个可为空的列。添加可为空的列只是数据字典的更改,因此任何表锁都只保留很短的时间(可以由系统处理)。
问题是我ALTER TABLE
经常失败:
我目前的方法是通过运行它来阻止更改,直到表上碰巧没有锁为止。这意味着我不能在 SQL*Plus 中完整地运行这样的脚本,而是需要复制和粘贴每个语句并确保它有效。
有没有更好的办法?
sql - ORA-00054 删除表时资源繁忙
有人可以解释这个错误吗?
ORA-00054: 资源繁忙并使用指定的 NOWAIT 获取
此错误出现在DROP TABLE
. 正因为如此,程序和包没有被编译。
sql - alter table 启用表锁;和 ORA-00054
我使用alter table disable table lock 子句错误地禁用了对表的锁定。现在我想启用它的锁定,因为我想使用以下语句更改表名:
SQL> alter table account.acctbk_payment_seq 启用表锁;alter table account.acctbk_payment_seq enable table lock * ERROR at line 1: ORA-00054: resource busy and acquire with NOWAIT specified or timeout expired
有什么理想吗?
谢谢您的回复。ora 1120 例如:
ORA-00054: 资源繁忙并使用指定的 NOWAIT 获取或超时已过期