exp  userid=system/manager@orcl tables ='XXX' file ='XXX' 和
exp  userid=system/manager@orcl tables ='XXX' file ='XXX' direct=y 有什么区别?

解决方案 »

  1.   

    使用direct=y, 效率提高,忽略buffer值(避免因该值过大导致的数据错误),但由于没有经过数据格式的验证,在IMP的时候有可能出错.
      

  2.   

    使用DIRECT和RECORDLENGTH选项DIRECT参数定义了导出是使用直接路径方式(DIRECT=Y),还是常规路径方式(DIRECT=N)。常规路径导出使用SQL SELECT语句从表中抽取数据,直接路径导出则是将数据直接从磁盘读到PGA再原样写入导出文件,从而避免了SQL命令处理层的数据转换过程,大大提高了导出效率。在数据量大的情况下,直接路径导出的效率优势更为明显,可比常规方法速度提高三倍之多。和DIRECT=Y配合使用的是RECORDLENGTH参数,它定义了Export I/O缓冲的大小,作用类似于常规路径导出使用的BUFFER参数。建议设置RECORDLENGTH参数为最大I/O缓冲,即65535(64kb)。其用法如下:exp userid=system/manager full=y direct=y recordlength=65535 file=
    exp_full.dmp log=exp_full.log直接路径导出根据Oracle版本不同,有一些使用限制。比较重要的限制有,8i及以下版本不支持导出客户端和数据库的字符集转换,因此导出前必须保证NLS_LANG设置正确;8.1.5及以下版本不支持导出含LOBs对象的表;不能使用QUERY参数等。