exp命令优化与常见问题(三)

简介:

 时间是非常宝贵的,当你使用exp处理大数据量时一定会有所感受,oracle在处理exp时提供了几个参数,设置得当的话,某些层面上可以大幅提高数据的导出效率:

1、导出方式处理:

  *  常规路径(Conventional path)

  *  直接路径(Direct Path)

   常规路径导出是exp默认的导出方式,在这种方式下,exp要处理的数据需要经过sql select语句的方式提取,将数据读取到缓存池,经由Evaluating Buffer 处理后返回到EXport客户端,最后才被写入Dump文件。

    前面的实验都是基于常规路径操作,对于大数据量下常规路径的导出,要提高处理速度,最重要的参数是BUFFER。该参数用来指定执行导出时,处理数据所用的缓存区大小,以字节为单位。这个参数变相用来控制导出时记录数组单次最大能加载的记录数。

   缓存区大小与加载记录数之间可以通过下列公式换算:

   缓存区大小=纪录数组大小* 记录行最大长度

    以下是验证BUFFER的作用,以数据库中CSDN表为例(网上下载来做试验,无其它用处),该表有670万记录量,占用空间1.7G,首先试试不指定buffer参数,直接导出需要花费多长时间:

1、没有指定buffer参数

导出csdn表:

导出完成,用时需2分多钟:

2、指定buffer参数:

 导出数据所需时间,只需要1分多的时间了,可以说是成培的优化:

是不是越大越好呢?增大buffer参数:

但效果好像还不是很理想,一样是一分多钟:

以下继续增加,但还是一样,实验表时当buffer参数增大到一定大小时,如果再增加对导出数据的时间是没影响的。

 

2、直接路径导出也可以提高导出数据效率的:

直接路径导出使用,在exp中添加参数direct=y即可,该参数值默认为n。同时还有另一参数值对直接路径导出有影响的:recordlength,该参数用来指定export的I/O buffer,以字节为单位,最大不超过65535,一般执行直接路径导出时,建议直接将recordlength参数值设置为65535,以下实验:

 

导出的文件所需时间,也是1分多钟,算是达到预期的效果,当然在现实生产环境中,数据量会更大,提高一倍的速度就会更明显了:

exp常见问题:

  1、导出时提示EXP-00091错误
   前面已经提过,可以参考前面方法解决

2、导出数据时提示ORA-00904错误
      执行导出的客户端数据库版本为10.2.0.4,服务器端数据库版本为10.2.0.3,大版本相同,只是小版本稍有差异。会报此错,所以在执行exp时客户端版本不能高于服务器的版本。
       版本不同导致的错误提示通常会是ORA-06550。

3、执行导出时莫名停顿,但dump文件疯涨。
exp工具毕竟上了年纪,对于external table这样的新特性支持不。我们知道外部表在创建时也分为两种类型:一种是传统方式oracle_loader,与sql*loader一脉相承,另一种是10g后新推出的oracle_datapump方式。
     对于前者,exp在执行导出时,只能导出表定义,不会导出实际的数据(毕竟数据是存储在外部的嘛),相对还好,总算该对象还能顺利处理;而对于后者就更麻烦了,不仅不导数据,连处理表定义都有问题,所以就会出现上述现象。这是oracle的一个bug,oracle10.2.0.3及以上版本数据库中不存在该问题,因此如果你在操作中遇到该问题,要么在导出时跳过外部表对象,要么升级数据库版本了。    
















本文转自pimg200551CTO博客,原文链接: http://blog.51cto.com/pimg2005/851637,如需转载请自行联系原作者




相关文章
|
NoSQL 关系型数据库 MySQL
数据库常用命令汇总
数据库常用命令因数据库的类型(如关系型数据库、非关系型数据库等)和具体的产品(如MySQL、Oracle、SQL Server、MongoDB等)而异。
481 4
|
弹性计算 监控 Cloud Native
云原生最佳实践系列 4:基于 MSE 和 SAE 的微服务部署与压测
通过MSE(微服务引擎)、SAE(Serverless应用引擎)、ARMS(应用监控服务)、PTS(性能测试服务)等产品,实现微服务的无服务化部署、监控和弹性伸缩。
900 101
|
10月前
|
存储 Java 数据库
Java “ClassCastException”解决
Java中的“ClassCastException”是在运行时尝试将对象强制转换为与其实际类型不兼容的类型时引发的异常。解决方法包括:1. 检查类型转换前使用`instanceof`关键字进行类型判断;2. 确保对象的实际类型与目标类型一致;3. 审查代码逻辑,避免不必要的类型转换。
853 4
|
网络协议 Ubuntu Linux
用Qemu模拟vexpress-a9 (三)--- 实现用u-boot引导Linux内核
用Qemu模拟vexpress-a9 (三)--- 实现用u-boot引导Linux内核
|
10月前
|
SQL Rust Java
Java 8 异步编程利器:CompletableFuture
Java 8引入了CompletableFuture,这是一个强大的异步编程工具,增强了Future的功能,支持链式调用、任务组合与异常处理等特性,使异步编程更加直观和高效。本文详细介绍了CompletableFuture的基本概念、用法及高级功能,帮助开发者更好地掌握这一工具。
171 0
|
SQL Oracle 关系型数据库
Oracle 12c的TOP N语句:数据排名的“快速通道”
【4月更文挑战第19天】Oracle 12c的TOP N语句是用于快速获取数据集排名前N的记录的SQL查询方法,特别适合寻找最具代表性的数据。通过指定排序条件和数量,TOP N能高效筛选出所需信息,例如最高销售额产品或最大访问量网页。在Oracle 12c中,查询优化器对TOP N查询进行了优化,保证快速返回结果,并提供丰富的排序和过滤选项。基本用法如`SELECT ... ORDER BY ... FETCH FIRST N ROWS ONLY`,还可结合`OFFSET`进行分页查询或用`WITH TIES`保持结果完整性。掌握TOP N语句能提升数据分析效率,助力企业决策。
|
前端开发
深入理解 BEM:前端开发中的命名约定革命
深入理解 BEM:前端开发中的命名约定革命
深入理解 BEM:前端开发中的命名约定革命
|
Java 数据安全/隐私保护 Docker
Docker Desktop 启动报错 Unexpected WSL error 问题解决
Docker Desktop 启动报错 Unexpected WSL error 问题解决
|
关系型数据库 MySQL
mysqldump unknown variable ‘set-gtid-purged=off‘ workbench
mysqldump unknown variable ‘set-gtid-purged=off‘ workbench
504 1