conventional path export与direct path export

EXP导出表时有两种导出方式:
1. Conventional path Export
2. Conventional path Export

概念:
conventional path export使用SQL SELECT语句从表中提取数据。数据是从磁盘读取到buffer cache中,行被转移到了evaluating buffer。这些数据经过评估后传递给export客户端,然后客户端负责把这些数据写入导出文件。
direct path export要比 conventional path Export快很多,因为数据是从磁盘读取到buffer cache,行被直接转移到export客户端。 evaluating buffer(SQL命令处理层)被跳过。数据已经是export需要的格式,所有没有不必要的数据转换。数据被传递给export客户端,然后客户端负责把这些数据写入导出文件。


Direct path export的限制:
1.为了使用direct path Export,需要使用命令或者参数文件指定参数。direct path Export不支持交互模式
2.BUFFER应用于conventional path Exports, RECORDLENGTH应用于direct path Export
3.在 tablespace mode不能使用 direct path
4.在 direct path Export中不能使用QUERY参数。
5.direct path Export只能在session和数据库字符集相同的情况下使用。如果 NLS_LANG未指定或者与数据库字符集不一致,导出会中止并受到警告。默认 NLS_LANG环境变量是AMERICAN_AMERICA.US7ASCII

buffer大小如何决定?
前面提到了buffer和recordlength参数其实是用于两种导出模式的两个指定buffer大小的参数,下面我就只列举一个
buffer:
默认值由操作系统决定。此参数用于指定获取行的buffer大小,也决定了在exp时每次获取时的最大行数。使用一下式子可以计算buffer size:
buffer_size = rows_in_array * maximum_row_size
如果设置为零,exp只会每次获取一行数据。表中包含 LOBs, LONG, BFILE, REF, ROWID, LOGICAL ROWID, or DATE 类型的列,也会一次读取一行。
BUFFER参数只适用于conventional path export,对于direct path export无效。使用RECORDLENGTH参数可用指定direct path export的buffer大小。
例:
查找scott.emp表字段大小
SQL> col data_type for a20;
SQL> col column_name for a10;
SQL> select column_name,data_type,data_length from dba_tab_columns where table_name='EMP' and owner='SCOTT';
COLUMN_NAM DATA_TYPE DATA_LENGTH
---------- -------------------- -----------
EMPNO   NUMBER 22
ENAME   VARCHAR2 10
JOB   VARCHAR2  9
MGR   NUMBER 22
HIREDATE   DATE  7
SAL   NUMBER 22
COMM   NUMBER 22
DEPTNO   NUMBER 22
8 rows selected.
或者直接求和
SQL> select sum(data_length) from dba_tab_columns where table_name='EMP' and owner='SCOTT';
SUM(DATA_LENGTH)
----------------
    136
从官方文档上看,每列都有一个指示器(indicator),占用2 bytes。也就是说每列加2bytes,需要加2*8bytes,所以最终大小=136+2*8=152bytes。
如果每次获取100行,buffer=15200。



来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/31461640/viewspace-2141581/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/31461640/viewspace-2141581/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值