您好,欢迎访问三七文档
数据泵技术是OracleDatabase10g中的新技术,它比原来导入/导出(imp,exp)技术快15-45倍。速度的提高源于使用了并行技术来读写导出转储文件。expdp使用使用EXPDP工具时,其转储文件只能被存放在DIRECTORY对象对应的OS目录中,而不能直接指定转储文件所在的OS目录。因此使用EXPDP工具时,,必须首先建立DIRECTORY对象,并且需要为数据库用户授予使用DIRECTORY对象权限。首先得建DIRECTORY:SQLconn/assysdbaSQLCREATEORREPLACEDIRECTORYdir_dumpAS'/u01/backup/';SQLGRANTread,writeONDIRECTORYdir_dumpTOpublic;1)导出scott整个schema--默认导出登陆账号的schema$expdpscott/tiger@db_esuiteparfile=/orahome/expdp.parexpdp.par内容:DIRECTORY=dir_dumpDUMPFILE=scott_full.dmpLOGFILE=scott_full.log--其他账号登陆,在参数中指定schemas$expdpsystem/oracle@db_esuiteparfile=/orahome/expdp.parexpdp.par内容:DIRECTORY=dir_dumpDUMPFILE=scott_full.dmpLOGFILE=scott_full.logSCHEMAS=SCOTT2)导出scott下的dept,emp表$expdpscott/tiger@db_esuiteparfile=/orahome/expdp.parexpdp.par内容:DIRECTORY=dir_dumpDUMPFILE=scott.dmpLOGFILE=scott.logTABLES=DEPT,EMP3)导出scott下除emp之外的表$expdpscott/tiger@db_esuiteparfile=/orahome/expdp.parexpdp.par内容:DIRECTORY=dir_dumpDUMPFILE=scott.dmpLOGFILE=scott.logEXCLUDE=TABLE:='EMP'4)导出scott下的存储过程$expdpscott/tiger@db_esuiteparfile=/orahome/expdp.parexpdp.par内容:DIRECTORY=dir_dumpDUMPFILE=scott.dmpLOGFILE=scott.logINCLUDE=PROCEDURE5)导出scott下以'E'开头的表$expdpscott/tiger@db_esuiteparfile=/orahome/expdp.parexpdp.par内容:DIRECTORY=dir_dumpDUMPFILE=scott.dmpLOGFILE=scott.logINCLUDE=TABLE:LIKE'E%'//可以改成NOTLIKE,就导出不以E开头的表6)带QUERY导出$expdpscott/tiger@db_esuiteparfile=/orahome/expdp.parexpdp.par内容:DIRECTORY=dir_dumpDUMPFILE=scott.dmpLOGFILE=scott.logTABLES=EMP,DEPTQUERY=EMP:whereempno=8000QUERY=DEPT:wheredeptno=10anddeptno=40注:处理这样带查询的多表导出,如果多表之间有外健关联,可能需要注意查询条件所筛选的数据是否符合这样的外健约束,比如EMP中有一栏位是deptno,是关联dept中的主键,如果whereempno=8000中得出的deptno=50的话,那么,你的dept的条件wheredeptno=10anddeptno=40就不包含deptno=50的数据,那么在导入的时候就会出现错误.expdp选项1.ATTACH该选项用于在客户会话与已存在导出作用之间建立关联.语法如下:ATTACH=[schema_name.]job_nameschema_name用于指定方案名,job_name用于指定导出作业名.注意,如果使用ATTACH选项,在命令行除了连接字符串和ATTACH选项外,不能指定任何其他选项,示例如下:expdpscott/tigerATTACH=scott.export_job2.CONTENT该选项用于指定要导出的内容.默认值为ALL.语法如下:CONTENT={ALL|DATA_ONLY|METADATA_ONLY}当设置CONTENT为ALL时,将导出对象定义及其所有数据;为DATA_ONLY时,只导出对象数据;为METADATA_ONLY时,只导出对象定义,示例如下:expdpscott/tigerDIRECTORY=dumpDUMPFILE=a.dumpCONTENT=METADATA_ONLY3.DIRECTORY指定转储文件和日志文件所在的目录.语法如下:DIRECTORY=directory_objectdirectory_object用于指定目录对象名称.需要注意,目录对象是使用CREATEDIRECTORY语句建立的对象,而不是OS目录,示例如下:expdpscott/tigerDIRECTORY=dumpDUMPFILE=a.dump建立目录:CREATEDIRECTORYdumpas'd:dump';查询创建了那些子目录:SELECT*FROMdba_directories;4.DUMPFILE用于指定转储文件的名称,默认名称为expdat.dmp.语法如下:DUMPFILE=[directory_object:]file_name[,….]directory_object用于指定目录对象名,file_name用于指定转储文件名.需要注意,如果不指定directory_object,导出工具会自动使用DIRECTORY选项指定的目录对象,示例如下:expdpscott/tigerDIRECTORY=dump1DUMPFILE=dump2:a.dmp5.ESTIMATE指定估算被导出表所占用磁盘空间的方法.默认值是BLOCKS.语法如下:EXTIMATE={BLOCKS|STATISTICS}设置为BLOCKS时,oracle会按照目标对象所占用的数据块个数乘以数据块尺寸估算对象占用的空间,设置为STATISTICS时,根据最近统计值估算对象占用空间,示例如下:expdpscott/tigerTABLES=empESTIMATE=STATISTICSDIRECTORY=dumpDUMPFILE=a.dump一般情况下,当用默认值(blocks)时,日志中估计的文件大小会比实际expdp出来的文件大,用statistics时会跟实际大小差不多.6.EXTIMATE_ONLY指定是否只估算导出作业所占用的磁盘空间,默认值为N.语法如下:EXTIMATE_ONLY={Y|N}设置为Y时,导出作用只估算对象所占用的磁盘空间,而不会执行导出作业,为N时,不仅估算对象所占用的磁盘空间,还会执行导出操作,示例如下:expdpscott/tigerESTIMATE_ONLY=yNOLOGFILE=y7.EXCLUDE该选项用于指定执行操作时要排除的对象类型或相关对象.语法如下:EXCLUDE=object_type[:name_clause][,….]object_type用于指定要排除的对象类型,name_clause用于指定要排除的具体对象.EXCLUDE和INCLUDE不能同时使用,示例如下:expdpscott/tigerDIRECTORY=dumpDUMPFILE=a.dupEXCLUDE=VIEW在EXPDP的帮助文件中,可以看到存在EXCLUDE和INCLUDE参数,这两个参数文档中介绍的命令格式存在问题,正确用法是:EXCLUDE=OBJECT_TYPE[:name_clause][,...]INCLUDE=OBJECT_TYPE[:name_clause][,...]示例:Expdpother_parametersschema=scottexclude=sequence,table:in('EMP','DEPT')impdpother_parametersschema=scottinclude=function,package,procedure,table:='EMP'有了这些还不够,由于命令中包含了多个特殊字符,在不同的操作系统下需要通过转义字符才能使上面的命令顺利执行,如:EXCLUDE=TABLE:IN('BIGTALE')8.FILESIZE指定导出文件的最大尺寸,默认为0(表示文件尺寸没有限制).9.FLASHBACK_SCN指定导出特定SCN时刻的表数据.语法如下:FLASHBACK_SCN=scn_valuescn_value用于标识SCN值.FLASHBACK_SCN和FLASHBACK_TIME不能同时使用,示例如下:expdpscott/tigerDIRECTORY=dumpDUMPFILE=a.dmpFLASHBACK_SCN=35852310.FLASHBACK_TIME指定导出特定时间点的表数据.语法如下:FLASHBACK_TIME=TO_TIMESTAMP(time_value)示例如下:expdpscott/tigerDIRECTORY=dumpDUMPFILE=a.dmpFLASHBACK_TIME=TO_TIMESTAMP('25-08-200414:35:00','DD-MM-YYYYHH24:MI:SS')11.FULL指定数据库模式导出,默认为N.语法如下:FULL={Y|N}为Y时,标识执行数据库导出.12.HELP指定是否显示EXPDP命令行选项的帮助信息,默认为N.当设置为Y时,会显示导出选项的帮助信息,示例如下:expdphelp=y13.INCLUDE指定导出时要包含的对象类型及相关对象.语法如下:INCLUDE=object_type[:name_clause][,…]示例如下:expdpscott/tigerDIRECTORY=dumpDUMPFILE=a.dmpINCLUDE=trigger1.1.2expdp选项14.JOB_NAME指定要导出作用的名称,默认为SYS_XXX.语法如下:JOB_NAME=jobname_string示例如下:expdpscott/tigerDIRECTORY=dumpDUMPFILE=a.dmpINCLUDE=triggerJOB_NAME=exp_trigger后面想临时停止expdp任务时可以按Ctrl+C组合键,退出当前交互模式,退出之后导出操作不会停止,这不同于Oracle以前的EXP.以前的EXP,如果退出交互式模式,就会出错终止导出任务.在Oracle10g中,由于EXPDP是数据库内部定义的任务,已经与客户端无关.退出交互之后,会进入export的命令行模式,此时支持status等查看命令:Exportstatus如果想停止改任务,可以发出stop_job命令:Exportstop_job如果有命令行提示:是否确实要停止此作业([Y]/N):或Areyousureyouwishtostopthisjob([yes]/no):,回答应是yes或者no,回答是YES以后会退出当前的export界面.接下来可以通过命令行再次连接到这个任务:expdptest/test@acfattach=expfull通过start_job命令重新启动导出:Exportstart_jobExportstatus15.LOGFILE指定导出日志文件文件的名称,默认名称为export.log.语法如下:LOGFI
本文标题:数据泵导入导出详解
链接地址:https://www.777doc.com/doc-2333670 .html