您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 数据库 > Oracle 数据泵导出和导入
Oracle10g数据导入导出简介Oracle10g引入了DATAPUMP提供的是一种基于服务器的数据提取和恢复的实用程序,DATAPUMP在体系结构和功能上与传统的EXPORT和IMPORT实用程序相比有了显著的提升。DATAPUMP允许您停止和重启作业,查看运行的作业的状态,及对导入和导出的数据做限制。注意:数据泵文件与传统的EXP/IMP数据转储文件是不兼容的。以下是DATAPUMP的几个优点介绍:1.数据泵(DataPump)的所有工作都有数据库实例来完成,数据库可以并行来处理这些工作,不仅可以通过建立多个数据泵工作进程来读/写正在被导出/导入的数据,也可以建立并行I/O服务器以更快地读取或插入数据,从而,单进程瓶颈被彻底解决。2.通过数据泵,以前通过EXP/IMP主要基于Client/Server的逻辑备份方式转换为服务器端的快速备份,数据泵主要工作在服务器端,可以通过并行方式快速装入或卸载数据,而且可以在运行过程中调整并行的程度,以加快或减少资源消耗。3.数据泵通过新的API来建立和管理,这些新的工作主要由DBMS_DATAPUMP来完成。新的导入/导出工具完全成为了一个客户端应用,通过IMPDP/EXPDP执行的命令实际上都是在调用Server端的API在执行操作,所以一旦一个任务被调度或执行,客户端就可以退出连接,任务会在server端继续执行,随后通过客户端实用程序从任何地方检查任务的状态和进行修改创建DIRECTORYDATAPUMP要求为将要创建和读取的数据文件及日志文件创建目录,这个参数是用来定义一个目录,前面已经提到数据泵主要在Server端工作,导出文件需要写出到Server端本地目录,这个DIRECTORY就是对应的Server端的目录。将要访问数据泵文件的用户必须要拥有该目录的读/写权限。注意:在开始操作之前要验证外部目录是否存在,并且下达createdirectory命令的用户需要拥有createanydirectory的系统权限。下面给出一个创建名为TEST_EXPDP的目录并授予hs_user,hs_his用户访问此目录读/写权限。查看数据库中已创建的directory的两个视图:SELECT*FROMALL_DIRECTORIES;SELECT*FROMdba_DIRECTORIES;SQLCreatedirectoryTEST_EXPDPas'/u03/expdpdump';SQLGrantread,writeondirectoryTEST_EXPDPtohs_user,hs_his;数据泵导出[oracle@LinuxRedHatu03]$expdpsystem/mingyue@HS2008schemas=hs_his,hs_futuresdumpfile=expdp_test.dmplogfile=expdp_test.logdirectory=TEST_EXPDP;Export:Release10.2.0.1.0-Productionon星期三,1011月,20100:16:04Copyright(c)2003,2005,Oracle.Allrightsreserved.Connectedto:OracleDatabase10gEnterpriseEditionRelease10.2.0.1.0-ProductionWiththePartitioning,OracleLabelSecurity,OLAPandDataMiningScoringEngineoptionsStartingSYSTEM.SYS_EXPORT_SCHEMA_01:system/********@HS2008schemas=hs_his,hs_futuresdumpfile=expdp_test.dmplogfile=expdp_test.logdirectory=TEST_EXPDPEstimateinprogressusingBLOCKSmethod...ProcessingobjecttypeSCHEMA_EXPORT/TABLE/TABLE_DATATotalestimationusingBLOCKSmethod:1.714GBProcessingobjecttypeSCHEMA_EXPORT/USERProcessingobjecttypeSCHEMA_EXPORT/SYSTEM_GRANTProcessingobjecttypeSCHEMA_EXPORT/ROLE_GRANTProcessingobjecttypeSCHEMA_EXPORT/DEFAULT_ROLEProcessingobjecttypeSCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMAProcessingobjecttypeSCHEMA_EXPORT/TABLE/TABLEProcessingobjecttypeSCHEMA_EXPORT/TABLE/INDEX/INDEXProcessingobjecttypeSCHEMA_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS如上面的清单所显示的只是罗列出来即将导出来的所有数据库对象,在导出过程中,DATADUMP创建并使用了一个名为SYS_EXPORT_SCHEMA_01的对象,此对象就是DATADUMP导出过程中所用的JOB名字,如果在执行这个命令时如果没有指定导出的JOB名字那么就会产生一个默认的JOB名字,如果在导出过程中指定JOB名字就为以指定名字出现,如下:[oracle@LinuxRedHatu03]$expdpsystem/mingyue@HS2008schemas=hs_hisdumpfile=expdp_test.dmplogfile=expdp_test.logdirectory=TEST_EXPDPjob_name=hs_hisjob;Export:Release10.2.0.1.0-Productionon星期三,1011月,20100:36:56Copyright(c)2003,2005,Oracle.Allrightsreserved.Connectedto:OracleDatabase10gEnterpriseEditionRelease10.2.0.1.0-ProductionWiththePartitioning,OracleLabelSecurity,OLAPandDataMiningScoringEngineoptionsStartingSYSTEM.HS_HISJOB:system/********@HS2008schemas=hs_hisdumpfile=expdp_test.dmplogfile=expdp_test.logdirectory=TEST_EXPDPjob_name=hs_hisjobEstimateinprogressusingBLOCKSmethod...ProcessingobjecttypeSCHEMA_EXPORT/TABLE/TABLE_DATATotalestimationusingBLOCKSmethod:1.315GB在执行过程中,可以按Ctrl+C组合键退出当前交互模式,退出之后,导出操作不会停止,这不同于Oracle以前的EXP。以前的EXP,如果退出交互式模式,就会出错终止导出任务。由于EXPDP是数据库内部定义的任务,已经与客户端无关,退出交互之后会进入export的命令行模式,此时支持status等查看命令:Exportstatus--查看当前JOB的状态及相关信息DATAPUMP与传统的EXP/IMP相比它还可以对正在运行的JOB进行停止和启动:Exportstop_job--暂停JOB此时通过status命令查看到这时JOB的状态值是UNDEFINEDExportstart_job--重启暂停的JOBExportkill_job--取消当前的JOB并释放相关客户会话Exportcontinue_client--通过此命令查看已连接JOB的日志Exportexit_client--通过此命令退出export模式--已退出export模式后再次连接去查看JOB的状态用以下命令:[oracle@LinuxRedHatexpdpdump]$expdpsystem/mingyueattach;[oracle@LinuxRedHatexpdpdump]$expdpsystem/mingyueattach=system.HS_HISJOB;导出模式罗列:按表模式导出:expdpsystem/mingyue@HS2008tables=hs_his.hisholdsinfo,hs_his.hisfundjourdumpfile=expdp_test.dmplogfile=expdp_test.logdirectory=TEST_EXPDPjob_name=hs_hisjob1;按查询条件导出:expdpsystem/mingyue@HS2008tables=hs_his.hisfuassettotdumpfile=expdp_test.dmplogfile=expdp_test.logdirectory=TEST_EXPDPjob_name=hs_hisjob2query='whereinit_datebetween20080501and20080701';注意:如果QUERY条件写得有问题那么下面总是会报以下的错误ORA-39001:invalidargumentvalueORA-39035:DatafilterSUBQUERYhasalreadybeenspecified.按表空间导出:Expdpsystem/mingyue@HS2008dumpfile=tablespace_test.dmptablespaces=HS_HIS_DATA,HS_HIS_IDXlogfile=tablespace_test.logdirectory=TEST_EXPDPjob_name=hs_hisjob6;导出整个数据库:expdpsystem/mingyue@HS2008dumpfile=full.dmpfull=ylogfile=full.logdirectory=TEST_EXPDPjob_name=hs_hisjob6;使用exclude,include导出数据Include导出用户中指定类型的指定对象仅导出hs_his用户下以HISFU开头的所有表包含与表相关的索引,备注等不包含过程等其它对象类型:expdphs_his/handsome@HS2008dumpfile=include_1.dmplogfile=include_1.logdirectory=TEST_EXPDPjob_name=job_hisjob7include=TABLE:\LIKE\'HISFU%\'\;导出hs_his用户下排除HISFU开头的所有表:expdpsystem/mingyue@HS2008schemas=hs_hisdumpfile=include_1.dmplogfile=include_1.logdirectory=TEST_EXPDPjob_name=job_hisjob7include=TABLE:\NOTLIKE\'HISFU%\'\;仅导出hs_his用户下的所有存储过程:expdpsystem/mingyue@HS2008schemas=hs_hisdumpfile=include_1.dmplogfile=include_1.logdirectory=TEST_EXPDPjob_name=job_hisjob7include=PROCEDURE;Exclude导出用户中指定类型的指定对象导出hs_his用户下除出TABLE类型以外的所有对象,如果表不导出那么与表相关的索引,约束等与表有关联的对象类型也不
本文标题:Oracle 数据泵导出和导入
链接地址:https://www.777doc.com/doc-8954 .html