* 常规路径(Conventional path)
常规路径导出是exp默认的导出方式,在这种方式下,exp要处理的数据需要经过sql select语句的方式提取,将数据读取到缓存池,经由Evaluating Buffer 处理后返回到EXport客户端,最后才被写入Dump文件。
前面的实验都是基于常规路径操作,对于大数据量下常规路径的导出,要提高处理速度,最重要的参数是BUFFER。该参数用来指定执行导出时,处理数据所用的缓存区大小,以字节为单位。这个参数变相用来控制导出时记录数组单次最大能加载的记录数。
缓存区大小与加载记录数之间可以通过下列公式换算:
缓存区大小=纪录数组大小* 记录行最大长度
exp test/test123 compress=n buffer=1024000 file=2012track.dmp tables=track log=2012track.log
增加buffer参数会大大加快导出速度,但并不是buffer参数越大越好,当buffer参数增大到一定大小时,如果再增加对导出数据的时间是没影响的。
* 直接路径(Direct Path)
直接路径导出使用,在exp中添加参数direct=y即可,该参数值默认为n。同时还有另一参数值对直接路径导出有影响的:recordlength,该参数用来指定export的I/O buffer,以字节为单位,最大不超过65535,一般执行直接路径导出时,建议直接将recordlength参数值设置为65535,以下实验:
exp test/tet123 compress=n direct=y recordlength=65535 file=2012track.dmp tables=track log=2012track.log
导出的速度比常规路径快很多,但跟加buffer差不多
注意:导出时提示EXP-00091错误
处理方法一
查看DB中的NLS_CHARACTERSET的值(提供兩种方法):
select * from nls_database_parameters t where t.parameter='NLS_CHARACTERSET'
or
select * from v$nls_parameters where parameter='NLS_CHARACTERSET';
SQL> select * from v$nls_parameters where parameter='NLS_CHARACTERSET';
PARAMETER VALUE
----------------------- -------------------------
---------------------
NLS_CHARACTERSET ZHT16BIG5
根据查出的NLS_CHARACTERSET(ZHT16BIG5)来设定exp的环境变量:
WINNT> set NLS_LANG=AMERICAN_AMERICA.ZHT16BIG5
LINUX> export NLS_LANG=AMERICAN_AMERICA.ZHT16BIG5
处理方法二
在exp后加statistics=none