1

我在加载大型数据文件(~ 10 gb)时得到 ORA-00054 当在前一个文件之后加载这个新文件时会发生错误。有什么想法可以解决这个问题吗?

4

4 回答 4

1

一种可能的情况。

这是直接路径负载吗?如果是这样,请检查 v$locked_object 视图,看看是否在加载过程中被某人锁定。

select dbao.object_name
  from v$locked_object vlo,
       dba_objects dbao
  where vlo.object_id = dbao.object_id
    and dbao.object_name = 'Table that you are trying to load...'

来自http://download.oracle.com/docs/cd/B10500_01/server.920/a96524/c21dlins.htm上的 Oracle 文档

使用 Direct-Path INSERT 的锁定注意事项

在直接路径插入期间,Oracle 获得表(或分区表的所有分区)上的排他锁。因此,用户无法对表执行任何并发插入、更新或删除操作,并且不允许并发索引创建和构建操作。但是,支持并发查询,但查询将仅返回插入操作之前的信息。

于 2010-09-29T14:44:34.027 回答
0

也许这与表空间数据文件大小、表大小有关,因为 ORA-00054 通常在运行 ALTER 语句时出现。

我不假装就在这里。

于 2010-09-29T06:50:29.653 回答
0

检查这些视图。

  • DBA_BLOCKERS – 显示持有锁的非等待会话正在等待

  • DBA_DDL_LOCKS – 显示所有持有或正在请求的 DDL 锁

  • DBA_DML_LOCKS - 显示所有持有或正在请求的 DML 锁

  • DBA_LOCK_INTERNAL – 为每个持有的锁或闩锁显示 1 行,或使用持有锁的用户名请求

  • DBA_LOCKS - 显示所有持有或被请求的锁或闩锁

  • DBA_WAITERS - 显示所有正在等待,但不持有等待锁的会话

http://www.dba-oracle.com/t_ora_00054_locks.htm

于 2010-09-29T06:56:33.673 回答
0

您的表似乎被锁定:ORA-00054 这可能是因为 Oracle 驱动程序处理 BLOB 类型的方式(驱动程序锁定记录,打开流以写入二进制数据,并且需要“一些帮助”来释放记录)。我会尝试下一个序列:

  1. 加载第一个文件
  2. 犯罪;
  3. 加载第二个文件
于 2010-09-29T06:58:59.457 回答