标签: direct-path

是否可以使用JDBC/Java直接路径插入?

我们有一个用C和Pro*C编写的应用程序,它使用主机阵列和批量插入将日志文件中的数据插入到Oracle 11.2数据库中.这使用APPENDNOLOGGING提示来利用直接路径插入并减少生成的重做量.NOLOGGING这是有道理的,因为它是一个临时的临时表,如果需要,可以从日志文件中恢复数据.

我们试图在Java中复制此功能,但无法使用大量记录的直接路径插入.这可能是Java/JDBC吗?

我尝试和调查过的事情是:

  • JDBC批处理(标准批处理和Oracle扩展).这种方法节省了往返时间,但这可以忽略不计,因为应用程序与数据库位于同一台机器上.它也不使用直接路径.
  • APPEND_VALUES提示.这听起来很有希望,但没有多大意义,因为JDBC批处理似乎并没有实际执行许多记录的"数组"插入.

据我所知,直接路径插入仅支持子查询语法,而不支持VALUES子句.这不能用作数据库中尚不存在的要插入的数据.

我一直无法找到任何Java能够使用Pro*C使用的主机数组样式加载的引用.

顺便说一句,我们正在调查外部表加载或SQL*加载器,并了解这些工具能够直接路径加载,但这个问题实际上是关于是否可以从Java直接路径插入获得明确的答案.了解Java API的局限性不仅对此项目有用,而且对将来的项目也很有用.

所以重申这个问题,有没有办法可以利用Java中的直接路径插入?

相关问题:

java bulkinsert jdbc oracle11g direct-path

7
推荐指数
1
解决办法
2588
查看次数

如何使用Oracle外部表并行直接路径加载?

几年前,Thomas Kyte说(这里):

我最喜欢使用外部表:

尽快加载这个非常大的文件.过去,将脚本设置为并行直接路径加载.协调所述脚本的触发.查看日志文件以确保它们全部完成.拆分输入文件或使用跳过并加载以对文件进行切片.总之,一个痛苦的屁股.

现在:

create table ET parallel;
create table new_table (...) parallel
as
select * from ET;
Run Code Online (Sandbox Code Playgroud)

并行直接路径负载变得微不足道.

除非这是无效的语法...

如何使用Oracle的外部表执行"并行直接路径加载"?

oracle load external-tables direct-path

4
推荐指数
1
解决办法
4722
查看次数