Oracle中的数据加载

2 oracle

我在加载数据时遇到问题.我必须在Oracle数据库中将800,000行从一个表复制到另一个表.

我首先尝试了10,000行但是花费的时间并不令人满意.我尝试使用"BULK COLLECT"和"INSERT INTO SELECT"子句,但对于这两种情况,响应时间大约为35分钟.这不是我想要的反应.

有没有人有什么建议?

Rob*_*ijk 5

Anirban,

使用"INSERT INTO SELECT"是填充表格的最快方法.您可能希望使用以下一个或两个提示来扩展它:

  • APPEND:使用直接路径加载,绕过缓冲区缓存
  • PARALLEL:如果您的系统有多个cpu,则使用并行处理,这是一次性操作或在一个"自私"进程消耗更多资源无关紧要时进行的操作.

只需在笔记本电脑上使用附加提示,即可在5秒内复制800,000个非常小的行:

SQL> create table one_table (id,name)
  2  as
  3   select level, 'name' || to_char(level)
  4     from dual
  5  connect by level <= 800000
  6  /

Tabel is aangemaakt.

SQL> create table another_table as select * from one_table where 1=0
  2  /

Tabel is aangemaakt.

SQL> select count(*) from another_table
  2  /

  COUNT(*)
----------
         0

1 rij is geselecteerd.

SQL> set timing on
SQL> insert /*+ append */ into another_table select * from one_table
  2  /

800000 rijen zijn aangemaakt.

Verstreken: 00:00:04.76
Run Code Online (Sandbox Code Playgroud)

你提到这个操作需要35分钟.你可以发布一些更多的细节,所以我们可以看到究竟花了35分钟?

问候,Rob.