用sql导出某张大表的数据(select * from table_name)load到一定时候总是出现snapshot too old错误在没权限修改回滚段大小,机器不允许开多进程(最多两个)的情况下如何解决? 

解决方案 »

  1.   

    使用参数Rows=XXXX试试 ,即指定装载多少条记录提交一次.
      

  2.   

    在你导出数据时有人在修改数据,而数据库的UNDO SEGMENTS或者ROLLBACK SEGMENT太小,导致修改前的数据被覆盖。
    建议你增大UNDO SEGMENTS,如果不行就等到其他人操作比较少的时候导出数据。
      

  3.   

    用proc写的程序load由于表太大,且操作频繁估计要load超过10个小时(试过用sqlplus的plus也导不出),找不到空闲时间
    数据库设置没权限修改
    /*使用参数Rows=XXXX试试 ,即指定装载多少条记录提交一次.*/
    这个是什么意思? 我只是查询,提交有用吗
      

  4.   


    如果数据>10G的话,建议不要用程序代码导出。
    用export泵来解决吧。这样速度就会快10倍以上的。
      

  5.   


    Oracle数据泵的使用,用数据泵导入大数据表数据:http://hi.baidu.com/smiky/blog/item/0f145eb59447e6c936d3ca80.html
      

  6.   


    为什么不用exp/expdp,一定要用sql呢要不你找个系统不忙着修改数据的时候导出吧
      

  7.   

    快照太旧: 
    当某一个事务回退数据大于回退段所容纳的数量时,oracle根据回退段的存储参数next进行区扩展,如果所有区的数量等于存储参数maxnextents仍不够用时,则产生"快照太旧"(Snapshot Too Old)错误。 解决办法: 
    授权,增大回滚段,修改参数可以改最大进程数大一些 
      

  8.   

    exp不知道怎么导出的文件不知道怎么转成普通文本啊另,测试了一下 用程序导出一个小表,exp用了18秒,用程序导出用了不到10秒系统没有闲的时间 是24小时在动作的