1、数据泵技术是 Oracle Database 10g 中的新技术,它比原来导入/导出(imp,exp)技术快1545 倍。速度的提高源于使用了并行技术来读写导出转储文件。expdp 使用使用 EXPDP 工具时,其转储文件只能被存放在 DIRECTORY 对象对应的 OS 目录中,而不能直接指定转储文件所在的 OS 目录。因此使用 EXPDP 工具时,,必须首先建立DIRECTORY 对象,并且需要为数据库用户授予使用 DIRECTORY 对象权限。首先得建 DIRECTORY:SQL conn /as sysdbaSQL CREATE OR REPLACE DIRECTORY dir_dum
2、p AS /u01/backup/;SQL GRANT read,write ON DIRECTORY dir_dump TO public;1) 导出 scott 整个 schema-默认导出登陆账号的 schema$ expdp scott/tigerdb_esuiteparfile=/orahome/expdp.parexpdp.par 内容:DIRECTORY=dir_dumpDUMPFILE=scott_full.dmpLOGFILE=scott_full.log-其他账号登陆, 在参数中指定 schemas$ expdp system/oracledb_esuiteparfile=
3、/orahome/expdp.parexpdp.par 内容:DIRECTORY=dir_dumpDUMPFILE=scott_full.dmpLOGFILE=scott_full.logSCHEMAS=SCOTT2) 导出 scott 下的 dept,emp 表$ expdp scott/tigerdb_esuiteparfile=/orahome/expdp.parexpdp.par 内容:DIRECTORY=dir_dumpDUMPFILE=scott.dmpLOGFILE=scott.logTABLES=DEPT,EMP3) 导出 scott 下除 emp 之外的表$ expdp sc
4、ott/tigerdb_esuiteparfile=/orahome/expdp.parexpdp.par 内容:DIRECTORY=dir_dumpDUMPFILE=scott.dmpLOGFILE=scott.logEXCLUDE=TABLE:“=EMP“4) 导出 scott 下的存储过程$ expdp scott/tigerdb_esuiteparfile=/orahome/expdp.parexpdp.par 内容:DIRECTORY=dir_dumpDUMPFILE=scott.dmpLOGFILE=scott.logINCLUDE=PROCEDURE5) 导出 scott 下以
5、E开头的表$ expdp scott/tigerdb_esuiteparfile=/orahome/expdp.parexpdp.par 内容:DIRECTORY=dir_dumpDUMPFILE=scott.dmpLOGFILE=scott.logINCLUDE=TABLE:“LIKE E%“ /可以改成 NOT LIKE,就导出不以 E 开头的表6) 带 QUERY 导出$ expdp scott/tigerdb_esuite parfile=/orahome/expdp.parexpdp.par 内容:DIRECTORY=dir_dumpDUMPFILE=scott.dmpLOGFILE
6、=scott.logTABLES=EMP,DEPTQUERY=EMP:“where empno=8000“QUERY=DEPT:“where deptno=10 and deptno=8000“ 中得出的 deptno=50 的话, 那么, 你的 dept 的条件“where deptno=10 and deptno schema=scottexclude=sequence,table:“in(EMP,DEPT)“impdp schema=scott include = function,package, procedure, table:“=EMP“有了这些还不够, 由于命令中包含了多个特殊
7、字符 , 在不同的操作系统下需要通过转义字符才能使上面的命令顺利执行,如:EXCLUDE=TABLE:“IN(BIGTALE)“8. FILESIZE指定导出文件的最大尺寸,默认为 0(表示文件尺寸没有限制).9. FLASHBACK_SCN指定导出特定 SCN 时刻的表数据. 语法如下:FLASHBACK_SCN=scn_valuescn_value 用于标识 SCN 值.FLASHBACK_SCN 和 FLASHBACK_TIME 不能同时使用,示例如下:expdp scott/tiger DIRECTORY=dump DUMPFILE=a.dmp FLASHBACK_SCN=358523
8、10. FLASHBACK_TIME指定导出特定时间点的表数据.语法如下:FLASHBACK_TIME=“TO_TIMESTAMP(time_value)“示例如下:expdp scott/tiger DIRECTORY=dump DUMPFILE=a.dmp FLASHBACK_TIME = “TO_TIMESTAMP(25-08-200414:35:00,DD-MM-YYYY HH24:MI:SS)“11. FULL指定数据库模式导出,默认为 N.语法如下:FULL=Y | N为 Y 时,标识执行数据库导出.12. HELP指定是否显示 EXPDP 命令行选项的帮助信息 ,默认为 N.当设
9、置为 Y 时, 会显示导出选项的帮助信息,示例如下:expdp help=y13. INCLUDE指定导出时要包含的对象类型及相关对象.语法如下:INCLUDE=object_type:name_clause, 示例如下:expdp scott/tiger DIRECTORY=dump DUMPFILE=a.dmp INCLUDE=trigger1.1.2 expdp 选项14. JOB_NAME指定要导出作用的名称,默认为 SYS_XXX.语法如下:JOB_NAME=jobname_string示例如下:expdp scott/tiger DIRECTORY=dump DUMPFILE=a.
10、dmp INCLUDE=triggerJOB_NAME=exp_trigger后面想临时停止 expdp 任务时可以按 Ctrl+C 组合键 ,退出当前交互模式,退出之后导出操作不会停止,这不同于 Oracle 以前的 EXP. 以前的 EXP,如果退出交互式模式, 就会出错终止导出任务. 在 Oracle10g 中,由于 EXPDP 是数据库内部定义的任务,已经与客户端无关. 退出交互之后,会进入 export 的命令行模式, 此时支持 status 等查看命令:Export status如果想停止改任务,可以发出 stop_job 命令:Export stop_job如果有命令行提示: “
11、是否确实要停止此作业(Y/N):“ 或 “Are you sure you wish to stop this job (yes/no):“, 回答应是 yes 或者 no, 回答是 YES 以后会退出当前的 export 界面.接下来可以通过命令行再次连接到这个任务:expdp test/testacf attach=expfull通过 start_job 命令重新启动导出:Export start_jobExport status15. LOGFILE指定导出日志文件文件的名称,默认名称为 export.log.语法如下:LOGFILE=directory_object:file_name
12、directory_object 用于指定目录对象名称,file_name 用于指定导出日志文件名.如果不指定 directory_object.导出作用会自动使用 DIRECTORY 的相应选项值,示例如下:expdp scott/tiger DIRECTORY=dump DUMPFILE=a.dmp logfile=a.log16. NETWORK_LINK指定数据库链名,如果要将远程数据库对象导出到本地例程的转储文件中, 必须设置该选项.expdp 中使用连接字符串和 network_link 的区别:expdp 属于服务端工具, 而 exp 属于客户端工具,expdp 生成的文件默认是
13、存放在服务端的,而 exp 生成的文件是存放在客户端 .expdp username/passwordconnect_string /对于使用这种格式来说,directory 使用源数据库创建的,生成的文件存放在服务端。如何将生成的文件放在目标数据库而不放在源数据库呢,在 expdp 中使用 network_link.比如在本机 expdp 远程服务器的数据库, 先在本机创建到服务端的 dblink,然后创建 directory及授权,然后 expdp.a.创建到服务端的 dblinkconn aa/aacccreate database link connect to identified
14、by using ;/username 和 password 是 server 端的b.创建 directoryconn / assysdbacreate or replace directory dir as /home/oracle/dbbackup;grant read,write on directory dir to ;c.导出expdpusername2/password2 directory=dirnetwork_link=link_name . /这里的username2 用创建 dblink 的那个用户 aa,directory 也是目标数据库创建的比如在本机 expdp 远
15、程服务器的数据库,先在本机创建到服务端的 dblink,然后创建directory 及授权,然后 expdp useranme2/password2.如果想不生成 dmp 文件而直接导入一个数据库,原理和上面类似,直接使用 impdp带 network_link ,这样可以直接 impdp,而绕过了 expdp 的步骤impdp network_link=tolink schemas=link remap_schema=link:link217. NOLOGFILE该选项用于指定禁止生成导出日志文件,默认值为 N.18. PARALLEL指定执行导出操作的并行进程个数,默认值为 119. PA
16、RFILE指定导出参数文件的名称.语法如下:PARFILE=directory_path:file_name20. QUERY用于指定过滤导出数据的 where 条件. 语法如下:QUERY=schema.table_name:query_clauseschema 用于指定方案名,table_name 用于指定表名,query_clause 用于指定条件限制子句.QUERY 选项不能 与 CONNECT = METADATA_ONLY, EXTIMATE_ONLY, TRANSPORT_TABLESPACES 等选项同时使用, 示例如下:expdp scott/tiger directory=
17、dump dumpfiel=a.dmp Tables=empquery=WHERE deptno=2021. SCHEMAS该方案用于指定执行方案模式导出,默认为当前用户方案.22. STATUS指定显示导出作用进程的详细状态,默认值为 0.23. TABLES指定表模式导出.语法如下 :TABLES=schema_name.table_name:partition_name,schema_name 用于指定方案名,table_name 用于指定导出的表名,partition_name 用于指定要导出的分区名.24. TABLESPACES指定要导出表空间列表.25.TRANSPORT_FUL
18、L_CHECK该选项用于指定被搬移表空间和未搬移表空间关联关系的检查方式,默认为 N.当设置为 Y 时,导出作用会检查表空间直接的完整关联关系 ,如果表所在表空间或其索引所在的表空间只有一个表空间被搬移,将显示错误信息.当设置为 N 时,导出作用只检查单端依赖,如果搬移索引所在表空间, 但未搬移表所在表空间,将显示出错信息,如果搬移表所在表空间,未搬移索引所在表空间,则不会显示错误信息.26.TRANSPORT_TABLESPACES指定执行表空间模式导出.27. VERSION指定被导出对象的数据库版本,默认值为 COMPATIBLE.语法如下:VERSION=COMPATIBLE | LA
19、TEST |version_string为 COMPATIBLE 时,会根据初始化参数 COMPATIBLE 生成对象元数据; 为 LATEST时,会根据数据库的实际版本生成对象元数据 .version_string 用于指定数据库版本字符串.使用 IMPDPIMPDP 命令行选项与 EXPDP 有很多相同的,不同的有:1、REMAP_DATAFILE该选项用于将源数据文件名转变为目标数据文件名,在不同平台之间搬移表空间时可能需要该选项.REMAP_DATAFIEL=source_datafie:target_datafile2、REMAP_SCHEMA该选项用于将源方案的所有对象装载到目标方
20、案中.REMAP_SCHEMA=source_schema:target_schema3、REMAP_TABLESPACE将源表空间的所有对象导入到目标表空间中REMAP_TABLESPACE=source_tablespace:target_tablespace4、REUSE_DATAFILES该选项指定建立表空间时是否覆盖已存在的数据文件.默认为 NREUSE_DATAFIELS=Y | N5、SKIP_UNUSABLE_INDEXES指定导入是是否跳过不可使用的索引,默认为 N6、SQLFILE指定将导入要指定的索引 DDL 操作写入到 SQL 脚本中SQLFILE=directory_
21、object:file_nameImpdp scott/tiger DIRECTORY=dump DUMPFILE=tab.dmp SQLFILE=a.sql7、STREAMS_CONFIGURATION指定是否导入流元数据(Stream Matadata),默认值为 Y.8、TABLE_EXISTS_ACTION该选项用于指定当表已经存在时导入作业要执行的操作,默认为 SKIPTABBLE_EXISTS_ACTION=SKIP | APPEND |TRUNCATE | FRPLACE 当设置该选项为 SKIP 时, 导入作业会跳过已存在表处理下一个对象;当设置为APPEND 时,会追加数据,
22、为 TRUNCATE 时, 导入作业会截断表,然后为其追加新数据;当设置为 REPLACE 时,导入作业会删除已存在表, 重建表病追加数据,注意,TRUNCATE 选项不适用与簇表和 NETWORK_LINK 选项9、TRANSFORM该选项用于指定是否修改建立对象的 DDL 语句TRANSFORM=transform_name:valuebject_typeTransform_name 用于指定转换名, 其中 SEGMENT_ATTRIBUTES 用于标识段属性(物理属性,存储属性,表空间,日志等信息),STORAGE 用于标识段存储属性,VALUE 用于指定是否包含段属性或段存储属性,ob
23、ject_type 用于指定对象类型.Impdp scott/tigerdirectory=dump dumpfile=tab.dmp Transform = segment_attributes:n:table10、TRANSPORT_DATAFILES该选项用于指定搬移空间时要被导入到目标数据库的数据文件TRANSPORT_DATAFILE=datafile_nameDatafile_name 用于指定被复制到目标数据库的数据文件Impdpsystem/manager DIRECTORY=dump DUMPFILE=tts.dmp TRANSPORT_DATAFILES = /user01
24、/data/tbs1.f调用 IMPDP1、导入表Impdp scott/tiger DIRECTORY=dump_dir DUMPFILE=tab.dmpTABLES=dept,empImpdp system/manageDIRECTORY=dump_dir DUMPFILE=tab.dmp TABLES=scott.dept,scott.emp REMAP_SCHEMA=SCOTT:SYSTEM第一种方法表示将 DEPT 和 EMP 表导入到 SCOTT 方案中,第二种方法表示将 DEPT和 EMP 表导入的 SYSTEM注意,如果要将表导入到其他方案中 ,必须指定 REMAPSCHEMA
25、 选项.2、导入方案Impdp scott/tiger DIRECTORY=dump_dir DUMPFILE=schema.dmpSCHEMAS=scottImpdp system/manager DIRECTORY=dump_dir DUMPFILE=schema.dmpSCHEMAS=scott REMAP_SCHEMA=scott:system3、导入表空间Impdpsystem/manager DIRECTORY=dump_dir DUMPFILE=tablespace.dmp TABLESPACES=user014、导入数据库Impdp system/manager DIRECTO
26、RY=dump_dir DUMPFILE=full.dmp FULL=y-赋予 expdp,impdp 的权限SQL grant exp_full_database,imp_full_database to susan;附录资料:一、创建逻辑目录,该命令不会在操作系统创建真正的目录,最好以 system 等管理员创建。create directory dpdata1 as d:testdump;二、查看管理理员目录(同时查看操作系统是否存在,因为 Oracle 并不关心该目录是否存在,如果不存在,则出错)select * from dba_directories;三、给 scott 用户赋予在
27、指定目录的操作权限,最好以 system 等管理员赋予。grant read,write on directory dpdata1 to scott;四、导出数据1)按用户导expdp scott/tigerorcl schemas=scott dumpfile=expdp.dmpDIRECTORY=dpdata1;2)并行进程 parallelexpdp scott/tigerorcl directory=dpdata1 dumpfile=scott3.dmpparallel=40 job_name=scott33)按表名导expdp scott/tigerorcl TABLES=emp,d
28、ept dumpfile=expdp.dmpDIRECTORY=dpdata1;4)按查询条件导expdp scott/tigerorcl directory=dpdata1 dumpfile=expdp.dmpTables=emp query=WHERE deptno=20;5)按表空间导expdp system/manager DIRECTORY=dpdata1 DUMPFILE=tablespace.dmpTABLESPACES=temp,example;6)导整个数据库expdp system/manager DIRECTORY=dpdata1 DUMPFILE=full.dmpFUL
29、L=y;五、还原数据1)导到指定用户下impdp scott/tiger DIRECTORY=dpdata1 DUMPFILE=expdp.dmpSCHEMAS=scott;2)改变表的 ownerimpdp system/manager DIRECTORY=dpdata1 DUMPFILE=expdp.dmpTABLES=scott.dept REMAP_SCHEMA=scott:system;3)导入表空间impdp system/manager DIRECTORY=dpdata1 DUMPFILE=tablespace.dmpTABLESPACES=example;4)导入数据库impd
30、b system/manager DIRECTORY=dump_dir DUMPFILE=full.dmpFULL=y;5)追加数据impdp system/manager DIRECTORY=dpdata1 DUMPFILE=expdp.dmpSCHEMAS=system TABLE_EXISTS_ACTION=append;exp/imp 与 expdp/impdp 的用法区别1:把用户 usera 的对象导到用户 userb,用法区别在于 fromuser=usera touser=userb ,remap_schema=usera:usera 。例如imp system/passwd
31、fromuser=usera touser=userbfile=/oracle/exp.dmp log=/oracle/exp.log;impdp system/passwd directory=expdp dumpfile=expdp.dmpremap_schema=usera:userb logfile=/oracle/exp.log;2:更换表空间,用 exp/imp 的时候,要想更改表所在的表空间,需要手工去处理一下,如 alter table xxx move tablespace_new 之类的操作。用 impdp 只要用 remap_tablespace=tabspace_old
32、:tablespace_new3:当指定一些表的时候,使用 exp/imp 时,tables 的用法是 tables=(table1,table2,table3)。expdp/impdp 的用法是 tables=table1,table2,table34:是否要导出数据行exp (ROWS=Y 导出数据行,ROWS=N 不导出数据行)expdp content(ALL:对象导出数据行,DATA_ONLY:只导出对象,METADATA_ONLY:只导出数据的记录)Oracle 数据泵导入导出案例2013-11-06 0 个评论 作者:laizhenhai88收藏 我要投稿Oracle 数据泵导入
33、导出案例Oracle 数据库导入导出工具,可以使用 exp/imp,但这是比较早期的工具。本文主要介绍数据泵 expdp/impdp 工具的使用。建立数据泵目录使用数据泵需要先建 directorycreate directory dump_scott as/home/oracle/dump/scott查看建立的目录Select * from dba_directories赋权Grant read,write on directory dump_scott toscott导出案例 1,按表导出expdp scott/tiger directory=dump_scottdumpfile=tab.
34、dmp logfile=scott.log tables=dept,emp导出案例 2,按用户导出expdp scott/tiger directory=dump_scottdumpfile=dumpscott.dmp schemas=scott导出案例 3,全库导出,且并行导出expdp scott/tiger directory=dump_scottdumpfile=full.dmp parallel=4 full=y导入案例 1,按表导入,从 scott 到 scott2impdp scott2/tiger directory=dump_scottdumpfile=tab.dmp tab
35、les=scott.dept,scott.emp remap_schema=scott:scott2导入案例 2,按用户导入,从 scott 到 scott2impdp scott/tiger directory=dump_scottdumpfile=schema.dmp remap_schema=scott:scott2导入案例 3,全库导入impdp scott/tiger directory=dump_scottdumpfile=full.dmp full=y导入案例 4,无落地文件的用户拷贝,需要建立 db linkimpdp scott/tiger directory=dump_sc
36、ott network_link=remote_link remap_schema=scott:scott21、首先建立目录: create directory 目录名称 as 数据库服务器上的一个目录 ,如: create directory 别名 as d:服务器目录名 ; 将导入或导出的文件放在这个目录下 2、导出及导入 以 SID=orcl,导出 dmp 的账号为 test,导入 dmp 的账号为 test 为例。 若将数据从 sfz 中导出: expdp test/testorcl directory=别名 dumpfile=导出文件名 导入到 test 中 : impdp test/testorcl directory=别名 dumpfile=导出文件名 .dmp 导入到处用户名不一样时,做个映射,一样时,不用写 remap_schema=test:test1