Oracle数据泵impdp/expdp逻辑备份恢复详解

教程发布:风哥 教程分类:ITPUX技术网 更新日期:2022-02-12 浏览学习:464

ORCALE10G提供了新的导入导出工具,数据泵。Oracle官方对此的形容是:OracleDataPump technology enables Very High-Speed movement of data and metadata from one database to another.其中Very High-Speed是亮点。
先说数据泵提供的主要特性(包括,但不限于):
1. 支持并行处理导入、导出任务
2. 支持暂停和重启动导入、导出任务
3. 支持通过Database Link的方式导出或导入远端数据库中的对象
4. 支持在导入时通过Remap_schema、Remap_datafile、Remap_tablespace几个参数实现导入过程中自动修改对象属主、数据文件或数据所在表空间。
5. 导入/导出时提供了非常细粒度的对象控制。通过Include、Exclude两个参数,甚至可以详细制定是否包含或不包含某个对象。Warning:
1. 什么是Directory对象
Directory对象是Oracle10g版本提供的一个新功能。他是一个指向,指向了操作系统中的一个路径。每个Directory都包含 Read,Write两个权限,可以通过Grant命令授权给指定的用户或角色。拥有读写权限的用户就可以读写该Directory对象指定的操作系统路径下的文件。2. 无论在什么地方使用expdp,生成的文件最终页是在服务器上(Directory指定的位置)如何调用
1. 命令行方式
最简单的调用,但是写的参数有限,建议使用参数文件的方式。2. 参数文件方式
最常用的方式。通常需要先编写一个参数文件。指定导出时需要的各种参数。然后以如下方式调用。
expdp user/pwd parfile=xxx.par
这个xxx.par即是我们编辑的参数文件。注意,在这个命令行后面,同样可以再跟别的参数,甚至是在par参数文件中指定过的参数。如果执行命令中附加的参数与参数文件中的参数有重复,最终采用哪个参数,会以参数最后出现的位置而定。如:expdp user/pwd parfile=xxx.par logfile=a.log,如果在参数文件中也指定了logfile,这里会以命令行中的logfile为准;如:expdp user/pwd logfile=a.log parfile=xxx.par,而这个,则会以参数文件中的为准,因为parfile=xxx.par写在命令行的后面。3. 交互方式
Data Pump导入导出任务支持停止,重启等状态操作。如用户执行导入或者导出任务,执行了一半时,使用Crtl+C中断了任务(或其他原因导致的中断),此时任务并不是被取消,而是被转移到后台。可以再次使用expdp/impdp命令,附加attach参数的方式重新连接到中断的任务中,并选择后续的操作。这就是交互方式。
Warning : 什么是attach参数,每执行一个导入,或者导出,在命令的第一行,会有以下信息:Starting “BAM”.”SYS_EXPORT_SCHEMA_01″: bam
备注:
1、directory=dir_dp必须放在前面,如果将其放置最后,会提示 ORA-39002: 操作无效
ORA-39070: 无法打开日志文件。
ORA-39087: 目录名 DATA_PUMP_DIR; 无效

2、在导出过程中,DATA DUMP 创建并使用了一个名为SYS_EXPORT_SCHEMA_01的对象,此对象就是DATA DUMP导出过程中所用的JOB名字,如果在执行这个命令时如果没有指定导出的JOB名字那么就会产生一个默认的JOB名字,如果在导出过程中指定JOB名字就为以指定名字出现
如下改成:
expdp lttfm/lttfm@fgisdb schemas=lttfm directory=dir_dp dumpfile =expdp_test1.dmp logfile=expdp_test1.log,job_name=my_job1;
3、导出语句后面不要有分号,否则如上的导出语句中的job表名为‘my_job1;’,而不是my_job1。因此导致expdp lttfm/lttfm attach=lttfm.my_job1执行该命令时一直提示找不到job表
4、创建的目录一定要在数据库所在的机器上。否则也是提示:ORA-39002: 操作无效
ORA-39070: 无法打开日志文件。
ORA-39087: 目录名 DATA_PUMP_DIR; 无效

导出 的相关命令使用:
1)Ctrl+C组合键:在执行过程中,可以按Ctrl+C组合键退出当前交互模式,退出之后,导出操作不会停止
2)Export> status --查看当前JOB的状态及相关信息
3)Export> stop_job --暂停JOB(暂停job后会退出expor模式)
4)重新进入export模式下:C:\Documents and Settings\Administrator>expdp lttfm/lttfm attach=lttfm.my_job1 --语句后面不带分号
5)Export> start_job --打开暂停的JOB(并未开始重新执行)
6)Export> continue_client --通过此命令重新启动 "LTTFM"."MY_JOB":
7)Export> kill_job --取消当前的JOB并释放相关客户会话(将job删除同时删除dmp文件)
8)Export> exit_client --通过此命令退出export模式(通过4)可再进入export模式下)
注: 导出完成后job自动卸载

数据泵导出的各种模式:
1、按表模式导出:
expdp lttfm/lttfm@fgisdb tables=lttfm.b$i_exch_info,lttfm.b$i_manhole_info dumpfile =expdp_test2.dmp logfile=expdp_test2.log directory=dir_dp job_name=my_job

2、按查询条件导出:
expdp lttfm/lttfm@fgisdb tables=lttfm.b$i_exch_info dumpfile =expdp_test3.dmp logfile=expdp_test3.log directory=dir_dp job_name=my_job query='"where rownum<11"' 3、按表空间导出: Expdp lttfm/lttfm@fgisdb dumpfile=expdp_tablespace.dmp tablespaces=GCOMM.DBF logfile=expdp_tablespace.log directory=dir_dp job_name=my_job 4、导 出方案 Expdp lttfm/lttfm DIRECTORY=dir_dp DUMPFILE=schema.dmp SCHEMAS=lttfm,gwm 5、导出整个数据库: expdp lttfm/lttfm@fgisdb dumpfile =full.dmp full=y logfile=full.log directory=dir_dp job_name=my_job 使用exclude,include导出数据 1、Include导出 用户中指定类型的指定对象 --仅导出lttfm用户下以B开头的所有表,包含与表相关的索引,备注等。不包含过程等其它对象类型: expdp lttfm/lttfm@fgisdb dumpfile=include_1.dmp logfile=include_1.log directory=dir_dp job_name=my_job include=TABLE:\"LIKE \'B%\'\" --导出lttfm用户下排除B$开头的所有表: expdp lttfm/lttfm@fgisdb schemas=lttfm dumpfile=include_1.dmp logfile=include_1.log directory=dir_dp job_name=my_job include=TABLE:\"NOT LIKE \'B$%\'\" --仅导出lttfm用 户下的所有存储过程: expdp lttfm/lttfm@fgisdb schemas=lttfm dumpfile=include_1.dmp logfile=include_1.log directory=dir_dp job_name=my_job include=PROCEDURE; 2、Exclude导出用户中指定类型的指定对象 --导出lttfm用户下除TABLE类型以外的所有对象,如果表不导出那么与表相关的索引,约束等与表有关联的对象类型也不会被导出: expdp lttfm/lttfm@fgisdb schemas=lttfm dumpfile=exclude_1.dmp logfile=exclude_1.log directory=dir_dp job_name=my_job exclude=TABLE; --导出lttfm用户下排除B$开头的所有表: expdp lttfm/lttfm@fgisdb dumpfile=include_1.dmp logfile=include_1.log directory=dir_dp job_name=my_job exclude=TABLE:\"LIKE\'b$%\'\"; --导出lttfm用户下的所有对象,但是对于表类型只导出以b$开头的表: expdp lttfm/lttfm@fgisdb dumpfile=include_1.dmp logfile=include_1.log directory=dir_dp job_name=my_job exclude=TABLE:\"NOT LIKE \'b$%\'\"; IMPDP介绍 IMPDP命令行选项与EXPDP有很多相同的,不同的有: 1、REMAP_DATAFILE 该选项用于将源数据文件名转变为目标数据文件名,在不同平 台之间搬移表空间时可能需要该选项. REMAP_DATAFIEL=source_datafie:target_datafile 2、REMAP_SCHEMA 该选项用于将源方案的所有对象装载到目标方案中. REMAP_SCHEMA=source_schema:target_schema 3、REMAP_TABLESPACE 将源表空间的所有对象导入到目标表空间中 REMAP_TABLESPACE=source_tablespace:target:tablespace 4、REUSE_DATAFILES 该选项指定建立表空间时是否覆盖已存在的数据文件.默认为N REUSE_DATAFIELS={Y | N} 5、SKIP_UNUSABLE_INDEXES 指定导入是是否跳过不可使用的索引,默认为N 6、SQLFILE 指定将导入要指定的索引DDL操作写入到SQL脚本中 SQLFILE=[directory_object:]file_name Impdp scott/tiger DIRECTORY=dump DUMPFILE=tab.dmp SQLFILE=a.sql 7、STREAMS_CONFIGURATION 指定是否导入流元数据(Stream Matadata),默认值为Y. 8、TABLE_EXISTS_ACTION 该选项用于指定当表已经存在时导入作业要执行的操作,默认为SKIP TABBLE_EXISTS_ACTION={SKIP | APPEND | TRUNCATE | FRPLACE } 当设置该选项为SKIP时,导入作业会跳过已存在表处理下一个对象;当设置为APPEND时,会追加数据,为TRUNCATE时,导入作业会截断表,然后为其追加新数据;当设置为REPLACE时,导入作业会删除已存在表,重建表病追加数据,注意,TRUNCATE选项不适用与簇表和NETWORK_LINK选项 9、TRANSFORM 该选项用于指定是否 修改建立对象的DDL语句 TRANSFORM=transform_name:value[:object_type] Transform_name用于指定转换名,其中SEGMENT_ATTRIBUTES用于标识段属性(物理属性,存储属性,表空间,日志等信息),STORAGE用于标识段存储属性,VALUE用于指定是否包含段属性或段存储属性,object_type用于指定对象类型. Impdp scott/tiger directory=dump dumpfile=tab.dmp Transform=segment_attributes:n:table 10、TRANSPORT_DATAFILES 该选项用于指定搬移空间时要被导入到目标数据库的数据文件 TRANSPORT_DATAFILE=datafile_name Datafile_name用于指定被复制到目标数据库的数据文件 Impdp system/manager DIRECTORY=dump DUMPFILE=tts.dmp TRANSPORT_DATAFILES=’/user01/data/tbs1.f’调用IMPDP impdp导入模式: 1、按表导入 p_street_area.dmp文件中的表,此文件是以gwm用户按schemas=gwm导出的: impdp gwm/gwm@fgisdb dumpfile =p_street_area.dmp logfile=imp_p_street_area.log directory=dir_dp tables=p_street_area job_name=my_job 2、按用户导入(可以将用户信息直接导入,即如果用户信息不存在的情况下也可以直接导入) impdp gwm/gwm@fgisdb schemas=gwm dumpfile =expdp_test.dmp logfile=expdp_test.log directory=dir_dp job_name=my_job 3、不通过expdp的步骤生成dmp文件而直接导入的方法: --从源数据库中向目标数据库导入表p_street_area impdp gwm/gwm directory=dir_dp NETWORK_LINK=igisdb tables=p_street_area logfile=p_street_area.log job_name=my_job igisdb是目的数据库与源数据的链接 名,dir_dp是目的数据库上的目录 4、更换表空间 采用remap_tablespace参数 --导出gwm用户下的所有数据 expdp system/orcl directory=data_pump_dir dumpfile=gwm.dmp SCHEMAS=gwm 注:如果是用sys用户导出的用户数据,包括用户创建、授权部分,用自身用户导出则不 含这些内容 --以下是将gwm用户下的数据全部导入到表空间gcomm(原来为gmapdata表空间下)下 impdp system/orcl directory=data_pump_dir dumpfile=gwm.dmp remap_tablespace=gmapdata:gcomm exp与imp exp的关键字说明: 关键字 说明 (默认值) ------------------------------ USERID 用户名/口令 BUFFER 数据缓冲区大小 FILE 输出文件 (EXPDAT.DMP) COMPRESS 导入到一个区 (Y) GRANTS 导出权限 (Y) INDEXES 导出索引 (Y) DIRECT 直接路径 (N) --直接导出速度较快 LOG 屏幕输出的日志文件 ROWS 导出数据行 (Y) CONSISTENT 交叉表的一致性 (N) FULL 导出整个文件 (N) OWNER 所有者用户名列表 TABLES 表名列表 RECORDLENGTH IO记录的长度 INCTYPE 增量导出类型 RECORD 跟踪增量导出 (Y) TRIGGERS 导出触发器 (Y) STATISTICS 分析对象 (ESTIMATE) PARFILE 参数文件名 CONSTRAINTS 导出的约束条件 (Y) OBJECT_CONSISTENT 只在对象导出期间设置为只读的事务处理 (N) FEEDBACK 每 x 行显示进度 (0) FILESIZE 每个转储文件的最大大小 FLASHBACK_SCN 用于将会话快照设置回以前状态的 SCN FLASHBACK_TIME 用于获取最接近指定时间的 SCN 的时间 QUERY 用于导出表的子集的 select 子句 RESUMABLE 遇到与空格相关的错误时挂起 (N) RESUMABLE_NAME 用于标识可恢复语句的文本字符串 RESUMABLE_TIMEOUT RESUMABLE 的等待时间 TTS_FULL_CHECK 对 TTS 执行完整或部分相关性检查 TABLESPACES 要导出的表空间列表 TRANSPORT_TABLESPACE 导出可传输的表空间元数据 (N) TEMPLATE 调用 iAS 模式导出的模板名 常用的exp关键字 1、full用于导出整个数据库,在rows=n一起使用,导出整个数据库的结构。 如:exp userid=gwm/gwm file=/test.dmp log=test.log full=y rows=n direct=y 2、OWNER和TABLES,用于定 义exp导出的对象 如:exp userid=gwm/gwm file=/test.dmp log=test.log owner=gwm table=(table1,table2) 3、buffer和feedback 若导出数据较大,考虑使用这两个参数。 如:exp userid=gwm/gwm file=/test.dmp log=test.log feedback=10000 buffer=100000000 tables=(table1,table2) 4、file和log 用于指定备份的dmp名称和log名称 5、compress 不压缩导出数据的内容,默认y 6、filesize 若导出的数据文件大,应该用该参数,限制文件大小不要超过2g 如:exp userid=gwm/gwm file=/test1,test2,test3,test4,test5 filesize=2G log=test.log 这样将创建test1.dmp,test2.dmp等,每个文件大小为2g。 imp关键字说明 关 键字 说明 (默认值) 关键字 说明 (默认值) ------------------------------------------------------------- USERID 用户名/口令 FULL 导入整个文件 (N) BUFFER 数据缓冲区大小 FROMUSER 所有者用户名列表 FILE 输入文件 (EXPDAT.DMP) TOUSER 用户名列表 SHOW 只列出文件内容 (N) TABLES 表名列表 IGNORE 忽略创建错误 (N) RECORDLENGTH IO 记录的长度 GRANTS 导入权限 (Y) INCTYPE 增量导入类型 INDEXES 导入索引 (Y) COMMIT 提交数组插入 (N) ROWS 导入数据行 (Y) PARFILE 参数文件名 LOG 屏幕输出的日志文件 CONSTRAINTS 导入限制 (Y) DESTROY 覆盖表空间数据文件 (N) INDEXFILE 将表/索引信息写入指定的文件 SKIP_UNUSABLE_INDEXES 跳过不可用索引的维护 (N) FEEDBACK 每 x 行显示进度 (0) TOID_NOVALIDATE 跳过指定类型 ID 的验证 FILESIZE 每个转储文件的最大大小 STATISTICS 始终导入预计算的统计信息 RESUMABLE 在遇到有关空间的错误时挂起 (N) RESUMABLE_NAME 用来标识可恢复语句的文本字符串 RESUMABLE_TIMEOUT RESUMABLE 的等待时间 COMPILE 编译过程, 程序包和函数 (Y) STREAMS_CONFIGURATION 导入流的一般元数据 (Y) STREAMS_INSTANTIATION 导入流实例化元数据 (N) 下列关键字仅用于可传输的表空间 TRANSPORT_TABLESPACE 导入可传输的表空间元数据 (N) TABLESPACES 将要传输到数据库的表空间 DATAFILES 将要传输到数据库的数据文件 TTS_OWNERS 拥有可传输表空间集中数据的用户

本文标签:
网站声明:本文由风哥整理发布,转载请保留此段声明,本站所有内容将不对其使用后果做任何承诺,请读者谨慎使用!
【上一篇】
【下一篇】