传统路径导出 VS 直接路径导出(oracle exp direct=y)
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
- # Blog : http://blog.csdn.net/robinson_0612
- 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.
传统路径导出 VS 直接路径导出(oracle exp direct=y)的更多相关文章
- oracle exp direct 执行机制
使用直接导出模式 direct=y exp 比传统模式导出快一倍 oracle提供2种模式导出表数据,传统模式CONVENTIONAL PATH和直接模式DIRECT PATH,有direct指定. ...
- oracle exp(expdp)数据迁移(生产环境,进行数据对比校验)
前言:客户需要迁移XX 库 ZJJJ用户(迁移到其他数据库),由于业务复杂,客户都弄不清楚里面有哪些业务系统,为保持数据一致性,需要停止业务软件,中间件,杀掉oracle进程. 一.迁移数据倒出部分= ...
- Oracle exp/imp数据导入导出工具基本用法
一.获取帮助 exp/imp help=y 二.数据导出 1.将数据库完全导出,设置full选项exp system/manager@orcl file=d:\db.dmp full=y 2.导出数据 ...
- 案例情景--在一次Oracle 数据库导出时 EXP-00008;ORA-00904:EXP-00000: oracle不同版本导入导出规则
案例情景--在一次Oracle 数据库导出时: C:\Documents and Settings\Administrator>exp lsxy/lsxy@lsxy_db file=E:\lsx ...
- Oracle exp,imp,expdp,impdp数据导入导出
一.导出模式(三种模式)及命令格式 1. 全库模式 exp 用户名/密码@网络服务名 full=y file=路径\文件名.dmp log=路径\文件名.log 2. 用户模式(一般情况下采用此模式) ...
- oracle EXP导出一张表时使用query参数指定where条件
oracle exp 导出一个表的部分内容,使用query参数可加上SQL的where条件进行过滤 注意:如果需要使用到日期字符串格式等单引号,需要使用双引号将where条件括起来,而且双引号要用\做 ...
- oracle exp、imp实现导出导入
一.说明 oracle 的exp/imp命令用于实现对数据库的导出/导入操作; exp命令用于把数据从远程数据库服务器导出至本地,生成dmp文件; imp命令用于把本地的数据库dmp文件从本地导 ...
- oracle exp 无法导出空表
oracle exp 无法导出空表 select 'alter table '|| a.table_name ||' allocate extent;' from user_tables a wh ...
- JXLS导出Excel(模板导出)
1.导包 在pom.xml中加入依赖如下: <dependency> <groupId>org.jxls</groupId> <artifactId>j ...
随机推荐
- DDX_Control、SubclassWindow和SubclassDlgItem
文章参考地址:http://blog.sina.com.cn/s/blog_86fe5b440101au88.html:http://www.cnblogs.com/riskyer/p/3424278 ...
- 图解WinXP局域网共享设置步骤
原文链接地址:http://blog.csdn.net/jackinzhou/article/details/8468208 第一章:共享的前提工作 1.更改不同的计算机名,设置相同的工作组! 2.我 ...
- React生命周期总结
React的生命周期总共8个钩子,三个will,两个Did,一个RecciveProps,一个ShouldUpdate,一个render.分为三个阶段,分别是 装载 Mounting更新 Updati ...
- apache代理服务器配置
1. 扩展开启,httpd.conf开启一下选项 LoadModule proxy modules/proxy.so LoadModule proxy_connect modules/proxy_co ...
- 【BZOJ 4034】[HAOI2015]树上操作 差分+dfs序+树状数组
我们只要看出来这道题 数组表示的含义就是 某个点到根节点路径权值和就行 那么我们可以把最终答案 看做 k*x+b x就是其深度 ,我们发现dfs序之后,修改一个点是差分一个区间,修改一个点的子树,可以 ...
- 洛谷P2568 GCD (欧拉函数/莫比乌斯反演)
P2568 GCD 题目描述 给定整数N,求1<=x,y<=N且Gcd(x,y)为素数的数对(x,y)有多少对. 输入输出格式 输入格式: 一个整数N 输出格式: 答案 输入输出样例 输入 ...
- HDU1213:How Many Tables(并查集)
How Many Tables Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)T ...
- idea xml 绿背景色 去掉拼写检查
去掉背景色 去掉拼写检查
- Win7/8 绿色软件开机启动
在查找番茄工作法PC端软件时,发现了淡高的文章win8绿色软件开机启动,试用了一下wintabs,的确好用! 另外,office软件中有一款 OFFICE tabs的插件,标签式的管理,非常方便快捷, ...
- loj6030 「雅礼集训 2017 Day1」矩阵
传送门:https://loj.ac/problem/6030 [题解] 以下把白称为0,黑称为1. 发现只有全空才是无解,否则考虑构造. 每一列,只要有0的格子都需要被赋值1次,所以设有x列有含有0 ...