Sql 使用JDBC在Oracle中插入CLOB非常慢

Sql 使用JDBC在Oracle中插入CLOB非常慢,sql,oracle,jdbc,clob,Sql,Oracle,Jdbc,Clob,嗨,我正试图通过maven插件使用jdbc插入clob。但插入大约需要10分钟。这是非常缓慢的,我想知道是否有另一种方法可以做到这一点。clob需要换行。正在从sql文件调用My insert,其外观如下: INSERT INTO SCHEMANAME.ATABLENAME VALUES (1,1,'ASTRING','ANOTHERSTRING','STRING WITH LINEBREAKS BLAH BLAH BLAH BLAH BLAH BLAH BLAH','FINALSTRING

嗨,我正试图通过maven插件使用jdbc插入clob。但插入大约需要10分钟。这是非常缓慢的,我想知道是否有另一种方法可以做到这一点。clob需要换行。正在从sql文件调用My insert,其外观如下:

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

BLAH BLAH

BLAH BLAH
BLAH BLAH
BLAH','FINALSTRING',sysdate);

CLOB当然不是这里的问题。非常长的10分钟表明有某种超时。我想到了其中两个:

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

第二个更可能。

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


10分钟内插入一行表示数据库中正在进行锁定/阻塞/等待。

如果您想知道是否有其他方法可以执行此操作,是否可以尝试先在CLOB列中插入空值,并在第一次插入后对CLOB列进行更新?

我已将其缩小到特定的CLOB插入…其他所有操作都可以快速、顺利地运行表创建/更改/更新…等等。插入之前的所有操作都是快速的。只有在为唯一索引插入相同的值时,这两个插入才会相互阻止(即PK)。但如果是这样,两个进程中的一个进程将抛出错误。是否为表定义了插入触发器?是否有指南可以告诉我如何提取这些报告?如果有设置,您可以通过OEM进行操作,否则$ORACLE_HOME/rdbms/admin中会有SQL脚本。您可能需要扩展pr如果您不是SYS或SYSTEM,请使用ivs运行它们。检查以下链接:下面是问题“将CLOB插入Oracle数据库”的链接,可能会给您一些提示。