2011-09-23 99 views
0

嗨,我试图通过maven插件使用jdbc插入clob。但插入需要大约10分钟。这是非常缓慢,我想知道是否有另一种方式来做到这一点。 clob需要有换行符。我的插入是从一个SQL文件调用,它看起来像这样:用JDBC在Oracle中插入Clobs非常慢

INSERT INTO SCHEMANAME.ATABLENAME VALUES (1,1,'ASTRING','ANOTHERSTRING','STRING WITH LINEBREAKS 

BLAH BLAH 

BLAH BLAH 
BLAH BLAH 
BLAH','FINALSTRING',sysdate); 
+0

是否存在为该表定义的INSERT触发器? –

回答

-1

CLOB肯定不是这里的问题。 10分钟的很长时间表明涉及某种暂停。其中两个想到:

  • 网络连接是不可靠的,它需要很长的时间来传输几个字节。
  • 两个数据库会话正尝试在Oracle中插入或更新同一行。如果第一个能够执行插入或更新但不提交连接,则第二个将被阻塞,直到第一个提交,回滚或结束会话。

第二个更可能。

+0

我已经缩小到特定的clob插入...一切运行快速顺利的表创作/改变/更新..等插入之前的一切是快速快速。 – Matt

+0

如果两个插入插入唯一索引(即PK)的相同值,则这两个插入只会彼此阻塞。但是如果是这样的话,两个过程中的一个就会出错。 –

0

拉AWR和ADDM报告,看看插入正在等待什么。如果需要手动快照以获取多个数据点进行检查。

10分钟插入一行表明您的数据库中存在锁定/阻塞/等待。

+0

有没有一个指南,你可以指点我,我可以学习如何拉这些报告? – Matt

+0

您可以通过OEM进行设置,否则在$ ORACLE_HOME/rdbms/admin中有SQL脚本。如果您不是SYS或SYSTEM,您可能需要扩展priv才能运行它们。检查这些链接:https://forums.oracle.com/forums/thread.jspa?threadID=1075428 http://www.oracle-base.com/articles/10g/AutomaticWorkloadRepository10g.php –

0

如果您想知道是否有其他方法可以做到这一点,您是否可以尝试首先向CLOB列插入空值,并在第一次插入后使用CLOB列进行更新?

+0

关注是问题链接“插入CLOB到Oracle数据库“,可能会给你一些提示。 http://stackoverflow.com/questions/10727521/insert-clob-into-oracle-database?rq=1 – user1094698