在system用户下,创建了200G的表空间,建立一个单表(一共4个字段)。现在需要导入数据约16亿条。数据用KETTLE导入成功,大约占用表空间120G左右。在创建索引的时候出现,ora-01555错误,现在无法解决。。没有索引,数据根本无法查询。求解决办法。现在有一想法:新建一用户aaa,创建200G表空间,新建一张新表(字段相同),在需要建立索引的2个字段上面建立索引,然后再导入数据,这样行不行?求OR高手帮忙解决一下,小弟刚接触OR,还有很多不会。。希望能得到大家的帮助,有没有说清楚的地方,大家请指出。谢谢。

解决方案 »

  1.   

    --你先按照你说的建立个新表,建好索引再导入数据,最后用直接装载的方式插入到新表中
    insert /*+append*/ into 新表
    select * from 导入表;
      

  2.   

    太郁闷了。。回滚出错? 我又给UNDO增加了50G的表空间还是一样错误。
      

  3.   

    恩,你给新表建立的索引就会有的。
    insert /*+append*/ into 新表
    select * from 导入表; 这个就是给你表里插入数据,不会影响你表的索引的
      

  4.   

    一个表的数据就是120G 我晕这么大 你建索引的时候肯定把回滚段透支了 ,其中还有其他的操作也需要回滚段 
    只有加大undo的表空间 使其满足你建索引所需的回滚空间
      

  5.   

    谢谢您的回复,一个表大约16亿的数据,我已经增加UNDO表的空间为50G了。重新建立索引还是出错。请指点
      

  6.   

    提醒一个事情,千万不要在system用户下做这些的事情。这个用户是个特殊用户,常用的命令在这里会产生不同寻常的结果。
      

  7.   

    这么大的数据确实很麻烦 一个表的数据就有120G  试试改下alter database UNDOTBS01 retention guarantee
      

  8.   

    不要一味的增加表空间大小来解决事情,有些根本不关表空间的原因,而是自己写的有问题
    至于你这个ora-01555问题,看看这里有没有你能解决的方法:
    http://wenku.baidu.com/view/96c2388da0116c175f0e481d.html