如何在SQL * Loader加载期间跟踪重新启用触发器的内容?

时间:2009-09-08 20:50:53

标签: oracle triggers oracle10g sql-loader ora-00054

我似乎在日志中看到了很多这样的消息:

Trigger DEV."MBR_TRG" was disabled before the load.
Trigger DEV."MBR_TRG" was re-enabled by another process.
SQL*Loader-951: Error calling once/load initialization
ORA-00604: error occurred at recursive SQL level 1
ORA-00054: resource busy and acquire with NOWAIT specified

这是在我的本地开发机器上,因此不应该有任何其他尝试插入这些表。我该如何追查原因?有没有办法阻止重新启用触发器(至少看看我的脚本中是否有错误)?

3 个答案:

答案 0 :(得分:1)

看起来触发器的类型会对sqlloader deals with the trigger的方式产生影响。至于跟踪原因,我会尝试DDL trigger

答案 1 :(得分:1)

如果这是您的本地开发机器,您可以放下触发器并稍后重新创建它。 或者您可以将触发器代码更改为不会弄乱数据但只记录执行的内容,以便您可以看到它何时启用。

答案 2 :(得分:1)

我在直接路径加载中看到了这些错误。问题不是错误消息建议的“另一个进程”,而是缺少用户禁用触发器的适当权限。您必须拥有更改表和触发器的权限。这意味着您必须拥有该表,或者对表具有更改权限,或者更改任何表权限。此外,您必须拥有触发器,或者更改任何触发器权限。