Oracle 传统的Export与Import依旧被保留到11g,而且9i与10g有很多依旧使用Export与Import方式进行备份与恢复的企业。从Oracle 7.3开始,传统的exp导出程序提供两种的导出路径方式,一个是传统路径导出(Conventional Path Export),一个是直接路径导出(Direct Path Export)。本文即是因最近客户的传统导入导出性能问题对此进行描述。

1、两者的差异

a、 Conventional path Export

传统路径模式使用SQL SELECT语句抽取表数据。数据从磁盘读入到buffer cache缓冲区中,行被转移到评估缓冲区。

在此之后根据SQL表达式,将记录返回给导出客户端,然后写入到dump文件。

b、Direct path Export

直接导出模式,数据直接从磁盘中读取到导出session的PGA中,行被直接转移到导出session的私有缓冲区,从而跳过SQL命令处理层。

避免了不必要的数据转换。最后记录返回给导出客户端,写到dump文件。

2、性能问题

a、直接路径导出方式比传统路径方式具有更优的性能,速度更快,因为绕过了SQL命令处理部分。

b、直接路径导出方式支持RECORDLENGTH参数(最大为64k),该参数值通常建议设置为系统I/O或者DB_BLOCK_SIZE的整数倍

c、影响直接路径导出的具体因素(DB_BLOCK_SIZE,列的类型,I/O性能,即数据文件所在的磁盘驱动器是否单独于dump文件所在的磁盘驱动器)

d、无论是直接路径导出还是传统路径导出产生的dump,在使用imp方式导入时,会耗用相同的时间

3、简单示例

> exp system/manager FILE=exp_full.dmp LOG=exp_full.log \

FULL=y DIRECT=y RECORDLENGTH=65535

> imp system/manager FILE=exp_full.dmp LOG=imp_full.log \

FULL=y RECORDLENGTH=65535

4、直接路径导出的限制

a、直接路径导出不支持交互模式

b、不支持表空间传输模式(即TRANSPORT_TABLESPACES=Y不被支持),支持的是FULL,OWNER,TABLES导出方式

c、不支持QUERY查询方式,如exp scott/tiger TABLES=emp QUERY=\"WHERE job=\'SALESMAN\' \" 不被支持

d、直接路径导出使用RECORDLENGTH设置一次可以导出数据的量,取代传统路径使用buffer的设置

e、直接路径导出要求NLS_LANG环境参数等于数据库字符集,负责收到EXP-41警告及EXP-0终止错误

5、演示两种方式性能差异

a、传统路径导出与直接路径导出性能对比

#下面直接进行日志对比

robin@SZDB:/u02/database/SYBO2SZ/BNR/dump> more dump1.log

Start to dump at Fri Jun 21 15:32:57 CST 2013 ....

Connected to: Oracle Database 10g Release 10.2.0.3.0 - 64bit Production

Export done in US7ASCII character set and UTF8 NCHAR character set

server uses UTF8 character set (possible charset conversion)

About to export specified tables via Conventional Path ...#这个地方是关键描述信息,指明了导出方式

. . exporting table          TRADE_CLIENT_TBL_ARC    1395093 rows exported #数据139万行

Export terminated successfully with warnings.

End dump at Fri Jun 21 15:34:31 CST 2013 .    #耗用时间15:34:31-15:32:57=不到2min

# Author : Robinson

robin@SZDB:/u02/database/SYBO2SZ/BNR/dump> more dump2.log

Start to dump at Fri Jun 21 15:37:13 CST 2013 ....

Connected to: Oracle Database 10g Release 10.2.0.3.0 - 64bit Production

Export done in US7ASCII character set and UTF8 NCHAR character set

server uses UTF8 character set (possible charset conversion)

About to export specified tables via Direct Path ...#这个地方是关键描述信息,指明了导出方式

. . exporting table          TRADE_CLIENT_TBL_ARC    1395093 rows exported

Export terminated successfully with warnings.

End dump at Fri Jun 21 15:37:30 CST 2013 .  #耗用时间15:37:30-15:37:13 =17s

b、演示对lob数据类型的支持

scott@SYBO2SZ> create table scott.testtab2 (nr number, txt clob);

Table created.

scott@SYBO2SZ> declare

2  x varchar2(50);

3  begin

4  for i in 1..5000 loop

5  x := 'This is a line with the number: ' || i;

6  insert into scott.testtab2 values(i,x);

7  commit;

8    end loop;

9  end;

10  /

PL/SQL procedure successfully completed.

scott@SYBO2SZ> select count(*) from testtab2;

COUNT(*)

----------

5000

robin@SZDB:/u02/database/SYBO2SZ/BNR/dump> exp scott/tiger file=exp_testtab2.dmp tables=scott.testtab2 direct=y

Export: Release 10.2.0.3.0 - Production on Fri Jun 21 11:56:37 2013

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

Connected to: Oracle Database 10g Release 10.2.0.3.0 - 64bit Production

Export done in US7ASCII character set and UTF8 NCHAR character set

server uses UTF8 character set (possible charset conversion)

About to export specified tables via Direct Path ...

Table TESTTAB2 will be exported in conventional path.

. . exporting table                      TESTTAB2      5000 rows exported

Export terminated successfully without warnings.

oracle默认导出路径linux,传统路径导出 VS 直接路径导出(oracle exp direct=y)相关推荐

  1. linux的库文件路径,Linux下的库文件搜索路径

    对于以压缩包发布的软件,在它的目录下通常都有一个配置脚本configure,它的作用确定编译参数(比如头文件位置.连接库位置等),然后生成Makefile以编译程序.可以进入该软件的目录,执行&quo ...

  2. linux中mongo的导出数据,Linux下mongodb安装及数据导入导出教程(示例代码)

    Linux下mongodb安装及数据导入导出教程 #查看linux发行版本 cat /etc/issue #查看linux内核版本号 uname -r 一.Linux下mongodb安装的一般步骤 1 ...

  3. linux mkdir绝对路径,linux学习(六)绝对路径、相对路径、cd、mkdir、rmdir、rm(示例代码)...

    一.绝对路径 就是从根开始的,如:/root./usr/local. 二.相对路径 相对于当前路径的,比如我们在当前路径下建立了一个a.txt. [[email protected] ~]# pwd/ ...

  4. linux配置php项目路径,linux下如何修改php.ini路径

    linux修改php.ini路径的方法:首先通过命令"sudo find / -name php.ini"查找PHP配置文件:然后通过"--with-config-fil ...

  5. linux我如何查看一个脚本的路径,linux获取shell脚本所在绝对路径操作介绍

    脚本名:a.sh 位置:/tmp/whuang/study/java 脚本内容: 复制代码 代码如下: #!/bin/sh this_dir=`pwd` dirname $0|grep "^ ...

  6. linux shell 脚本路径,linux获取shell脚本所在绝对路径操作介绍

    脚本名:a.sh 位置:/tmp/whuang/study/java 脚本内容: 复制代码 代码如下: #!/bin/sh this_dir=`pwd` dirname $0|grep "^ ...

  7. linux c文件路径,LINUX C编程中的文件路径

    你在你的代码有很多的问题, ##define NUMBER arg /* ^^^^^^^^^^^^^^^^^^^ what is this define? */ void *odczyt(void*a ...

  8. linux桌面的路径,linux – 如何获得给定用户“桌面路径”

    如何获取给定用户桌面的路径? 我用过这个: echo $(awk "NR==$(awk 'BEGIN {FS=":"} {print $3}' /etc/passwd | ...

  9. Linux添加相对库路径,Linux C编程(8) 使用相对路径加载动态库-rpath和$ORIGIN

    商业程序如何加载自己的so 使用LD_LIBRARY_PATH的缺点是要实现设置LD_LIBRARY_PATH.不够自动化.那么大型的商业程序是如何加载自己的so呢. 这里以QtCreator为例. ...

最新文章

  1. Maven 手动添加第三方依赖包及编译打包和java命令行编译JAVA文件并使用jar命令打包...
  2. 解决虚拟机vmware安装64位系统“此主机支持 Intel VT-x,但 Intel VT-x 处于禁用状态”的问题
  3. MySQL 数据库的备份和恢复
  4. 3 了解MyBatis映射文件
  5. 一张图学会python 3_一张图学会Python?想啥呢?!
  6. 升级到AKU3.3 v1.1,感受智能手机的VGA模式
  7. IoT、3D 扫描抢救巴黎圣母院!
  8. linux 混杂设备 miscdevice设备介绍
  9. Automapper问题记录
  10. ubuntu启动virtualbox出错解决办法:RTR3InitEx failed with rc=-1912 (rc=-1912)
  11. 十分钟了解websql和indexedDB
  12. country-converter官方文档----机翻人工确认
  13. WinCam v2.0.0 Windows极简屏幕录像工具单文件版
  14. 抖音视频什么时候投放dou+最好,dou+投放实战总结:国仁网络资讯
  15. 西部陆海新通道海铁联运通达中国六省市
  16. android辅助功能demo,Android中的辅助功能实现问题
  17. 网络适配器图标不见了,WLAN以太网都不见了
  18. 中国驾照在美国各州开车的规定
  19. html如何给盒子设置位置,CSS盒子定位
  20. Kvaser Leaf light HS v2 | 如何使用Excel发送和接收CAN报文数据

热门文章

  1. 18张颠覆三观的照片!
  2. 华罗庚的数学有多厉害?靠报纸上的一个四边形算出导弹基地的位置
  3. 我国共招过多少博士?多少硕士?数据来了!
  4. 键盘发展简史:144年独孤求败的QWERT键盘
  5. 真正的高情商,从学会麻烦别人开始
  6. 智能芯片的下一场战争是什么?
  7. 有了数学基础,如何进阶AI?
  8. 干货|MIT线性代数课程精细笔记6-子空间与零空间
  9. 分数怎么化成带分数_小升初数学总复习第三个基础模块:分数的认识
  10. 【转载保存】java8新特性学习