暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle SQL加载器

askTom 2017-04-10
536

问题描述

嗨,
我尝试使用SQL Loader将数据加载到表中
在控制文件中我使用了TRUNCATE语句。并在加载之前使用Delete语句删除了该表中的数据 (我没有提交)。
当我运行SQL加载程序得到低于错误。
SQL * Loader-926: 执行delete/truncate时OCI错误 (由于替换/TRUNCA
TE关键字) 用于表T1
ORA-00054: 资源繁忙并在指定NOWAIT的情况下获取或超时已过期。

当我执行成功加载的提交数据时
为什么它没有加载时,我没有执行提交。

专家解答

“truncate” 是DDL,因此它需要在表上获得独占锁才能运行。您的未提交删除阻止了这一点。这不是SQL加载程序问题。

例如

--
-会议1
--
SQL> create table t ( x int );

创建的表。

SQL> 插入到t值 (1);

创建1行。

SQL> 提交;

提交完成。

SQL> 删除t;

删除1行。

--
-第2场
--
SQL> 截断表t;
截断表t
*
第1行的错误:
ORA-00054: 资源繁忙和获取指定NOWAIT或超时过期



您可以考虑将 “ddl_lock_timeout” 设置为一些合适的值来缓解这种情况
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论