第10章 Oracle数据泵技术
Oracle数据泵的使用
Oracle数据泵的使用几乎所有DBA都熟悉oracle的导出和导入实用程序,它们将数据装载进或卸载出数据库,在oracle database 10g和11g中,你必须使用更通用更强大的数据泵导出和导入(Data P ump Export and Import)实用程序导出和导入数据。
以前的导出和导入实用程序在oracle database 11g中仍然可以使用,但是Oracle强烈建议使用数据泵(Data Pump)技术,因为它提供了更多的高级特性。
例如:●你可以中断导出/导入作业,然后恢复它们;●可以重新启动已失败的导出和导入作业;●可以重映射对象属性以修改对象;●可以容易地从另一个会话中监控数据泵的作业,甚至可以在作业过程中修改其属性;●使用并行技术很容易快速移动大量的数据;●因为oracle提供了针对数据泵技术的API,所以可以容易地在PL/SQL程序中包含导出/导入作业;●可以使用更强大的可移植表空间特性来快速移植大量的数据,甚至可在不同操作系统平台之间移动。
与旧的导出和导入实用程序不同,数据泵程序有一组可以在命令行中使用的参数以及一组只能以交互方式使用的特殊命令,你可以通过在命令行中输入expdp help = y或者impdp help = y快速获取所有数据泵参数及命令的概述一.数据泵技术的优点原有的导出和导入技术基于客户机,而数据泵技术基于服务器。
默认所有的转储,日志和其他文件都建立在服务器上。
以下是数据泵技术的主要优点:1.改进了性能2.重新启动作业的能力3.并行执行的能力4.关联运行作业的能力5.估算空间需求的能力6.操作的网格方式7.细粒度数据导入功能8.重映射能力二.数据泵导出和导入的用途1.将数据从开发环境转到测试环境或产品环境2.在不同的操作系统平台上的oracle数据库直接的传递数据3.在修改重要表之前进行备份4.备份数据库5.把数据库对象从一个表空间移动到另一个表空间6.在数据库直接移植表空间7.提取表或其他对象的DDL注意:数据库不建立完备的备份,因为在导出文件中没有灾难发生时的最新数据。
Oracle Data Pump在Oracle Database 12c中的新特性说明书
Full Transportable Export/Import
4 Copyright © 2013, Oracle and/or its affiliates. All rights reserved. Insert Information Protection Policy Classification from Slide 12 of the corporate presentation template
Full Transportable Export/Import
How it works
Distinction between administrative and user tablespaces
– Administrative tablespaces are SYSTEM, SYSAUX, etc. – Objects with storage in user tablespaces move transportably – Objects with storage in administrative tablespaces move conventionally
Example: Migrate 11.2.0.3 12c PDB
Three Phases of Minimal Downtime Migration
1. Pre-transport datafile migration using incrementally-updated backups
– Source database remains in production
on source to capture definitions of all 7. Other actions to get user data stored non-TTS objects (packages, views, in SYSTEM/SYSAUX, etc. triggers, user-defined objects, etc.)
Oracle10g数据泵的导入导出
从故障中恢复
重启动任务的能力使你可以从某些类型的故障中恢复过来。例如, 清单 5 显示了一个用完了转储文件空间的导出任务的日志文件的结尾部分。然而,什么也没有丢失。该任务只是进入了一个空闲状态,当你连接到该任务并查看状态输出时就可以看到这一点。这个状态不显示任务空闲的原因。要确定这是因为转储文件的空间不够了,则你需要查看日志文件。
启动一个导出任务
你可以使用新的 expdp 实用程序来启动一个导出任务。因为参数与老的 exp 实用程序不同,所以你得熟悉这些新的参数。你可以在命令行中指定参数,但在本文中我使用了参数文件。我想导出我的整个模式( schema ),使用了以下参数:
DUMPFILE=gnis%U.dmp
仅导入那些与密歇根州相关的数据行
不导入原始的存储参数
一开始,我可以在我的导入参数文件中写出以下四行:
DUMPFILE=gnis%U.dmp
DIRECTORY=export_dumps
LOGFILE=gnis_import.log
JOB_NAME=gnis_import
DUMPFILE=export_dumps01:gnis%U.dmp,
export_dumps02:gnis%U.dmp
PARALLEL=2
注意,在这个并行导出任务中,目录名作为文件名的一部分来被指定。
检查状态
你可以随时连接到一个运行中的任务来检查其状态。要连接到一个导出任务,必须执行一条 expdp 命令,使用 ATTACH 参数来指定任务名称。 清单 2 显示了到 GNIS_EXPORT 任务的连接。当你连接到一个任务, expdp 显示该任务的相关信息和当前状态,并为你提供一个 EXPORT> 提示符。
oracle使用数据泵导出和导入
使用数据泵导出和导入几乎所有DBA都熟悉oracle的导出和导入实用程序,它们将数据装载进或卸载出数据库,在oracle database 10g和11g中,你必须使用更通用更强大的数据泵导出和导入(Data Pump Export and Import)实用程序导出和导入数据。
以前的导出和导入实用程序在oracle database 11g中仍然可以使用,但是Oracle强烈建议使用数据泵(Data Pump)技术,因为它提供了更多的高级特性。
例如,你可以中断导出/导入作业,然后恢复它们;可以重新启动已失败的导出和导入作业;可以重映射对象属性以修改对象;可以容易地从另一个会话中监控数据泵的作业,甚至可以在作业过程中修改其属性;使用并行技术很容易快速移动大量的数据;因为oracle提供了针对数据泵技术的API,所以可以容易地在PL/SQL 程序中包含导出/导入作业;可以使用更强大的可移植表空间特性来快速移植大量的数据,甚至可在不同操作系统平台之间移动。
与旧的导出和导入实用程序不同,数据泵程序有一组可以在命令行中使用的参数以及一组只能以交互方式使用的特殊命令,你可以通过在命令行中输入expdp help = y 或者impdp help = y快速获取所有数据泵参数及命令的概述。
一.数据泵技术的优点原有的导出和导入技术基于客户机,而数据泵技术基于服务器。
默认所有的转储,日志和其他文件都建立在服务器上。
以下是数据泵技术的主要优点:1.改进了性能2.重新启动作业的能力3.并行执行的能力4.关联运行作业的能力5.估算空间需求的能力6.操作的网格方式7.细粒度数据导入功能8.重映射能力二.数据泵导出和导入的用途1.将数据从开发环境转到测试环境或产品环境2.在不同的操作系统平台上的oracle数据库直接的传递数据3.在修改重要表之前进行备份4.备份数据库5.把数据库对象从一个表空间移动到另一个表空间6.在数据库直接移植表空间7.提取表或其他对象的DDL注意:数据库不建立完备的备份,因为在导出文件中没有灾难发生时的最新数据。
02.oracle数据库10g中的数据泵
可以通过ESTIMATE参数根据分配的块(默认)或统计信息(如 果提供)进行空间估计 通过FLASHBACK_TIME参数可以将某一时刻的一致性数据取出
版权所有(2005~2008) eygle
数据泵的任务方式
在数据泵中有一种特殊的运行方式——任务方式 导出或者导入不再仅仅作为一个动作,而是作为一种任务来运行 和管理 任务进度记录在一个“主表”中 任务可以显式的进行控制,可以随时暂停,也可以在以后重新开 始,或者放在后台自动运行 异常终止的作业也可以重新启动
单线程数据卸载:1.5-2X exp 单线程数据加载: 15X-40X imp 需要维护索引:4-10X imp
版权所有(2005~2008) eygle
数据泵的导出和导入调用
数据泵可以使用客户端工具expdp导出,使用impdp导入,可以 在下面几种方式中调用:
版权所有(2005~2008) eygle
数据泵的选项——精确的对象选择
数据泵在导入或者导出时,可以选择其中的一部分对象来处理 可以从所选择的模式中通过下面的选项进一步选取对象:
Exclude:从选择的模式中排除指定的对象 Include:只包含指定的对象,例如,只包含特定的程序包、函数、视图…
数据泵禁止同时使用两者 这两种选项都可以使用可选的名称过滤器,以获得甚至更高的细 粒度,例如:
INCLUDE PACKAGE: “LIKE ‘EXPLO%’ “ EXCLUDE TABLE: “IN (‘EMP’,’DEPT’, … )’ “
版权所有(2005~2008) eygle
版权所有(2005~2008) eygle
数据泵的优势
Oracle 10G使用数据泵(EXPDP和IMPDP)
Oracle 10G使用数据泵(EXPDP和IMPDP)1.1.1 expdp使用使用EXPDP工具时,其转储文件只能被存放在DIRECTORY对象对应的OS目录中,而不能直接指定转储文件所在的OS目录.因此使用EXPDP工具时,必须首先建立DIRECTORY对象.并且需要为数据库用户授予使用DIRECTORY对象权限.首先得建DIRECTORY:SQL> conn /as sysdbaSQL> CREATE OR REPLACE DIRECTORY dir_dump AS '/u01/backup/';SQL> GRANT read,write ON DIRECTORY dir_dump TO public;1) 导出scott整个schema--默认导出登陆账号的schema$ expdp scott/tiger@db_esuite parfile=/orahome/expdp.parexpdp.par内容:DIRECTORY=dir_dumpDUMPFILE=scott_full.dmpLOGFILE=scott_full.log--其他账号登陆, 在参数中指定schemas$ expdp system/oracle@db_esuite parfile=/orahome/expdp.parexpdp.par内容:DIRECTORY=dir_dumpDUMPFILE=scott_full.dmpLOGFILE=scott_full.logSCHEMAS=SCOTT2) 导出scott下的dept,emp表$ expdp scott/tiger@db_esuite parfile=/orahome/expdp.par expdp.par内容:DIRECTORY=dir_dumpDUMPFILE=scott.dmpLOGFILE=scott.logTABLES=DEPT,EMP3) 导出scott下除emp之外的表$ expdp scott/tiger@db_esuite parfile=/orahome/expdp.par expdp.par内容:DIRECTORY=dir_dumpDUMPFILE=scott.dmpLOGFILE=scott.logEXCLUDE=TABLE:"='EMP'"4) 导出scott下的存储过程$ expdp scott/tiger@db_esuite parfile=/orahome/expdp.par expdp.par内容:DIRECTORY=dir_dumpDUMPFILE=scott.dmpLOGFILE=scott.logINCLUDE=PROCEDURE5) 导出scott下以'E'开头的表$ expdp scott/tiger@db_esuite parfile=/orahome/expdp.parexpdp.par内容:DIRECTORY=dir_dumpDUMPFILE=scott.dmpLOGFILE=scott.logINCLUDE=TABLE:"LIKE 'E%'" //可以改成NOT LIKE,就导出不以E开头的表6) 带QUERY导出$ expdp scott/tiger@db_esuite parfile=/orahome/expdp.parexpdp.par内容:DIRECTORY=dir_dumpDUMPFILE=scott.dmpLOGFILE=scott.logTABLES=EMP,DEPTQUERY=EMP:"where empno>=8000"QUERY=DEPT:"where deptno>=10 and deptno<=40"1.1.2 expdp选项1. ATTACH该选项用于在客户会话与已存在导出作用之间建立关联.语法如下:ATTACH=[schema_name.]job_nameschema_name用于指定方案名,job_name用于指定导出作业名.注意,如果使用ATTACH选项,在命令行除了连接字符串和ATTACH选项外,不能指定任何其他选项,示例如下:expdp scott/tiger ATTACH=scott.export_job2. CONTENT该选项用于指定要导出的内容.默认值为ALL.语法如下:CONTENT={ALL | DATA_ONLY | METADATA_ONLY}当设置CONTENT为ALL 时,将导出对象定义及其所有数据; 为DATA_ONLY时,只导出对象数据; 为METADATA_ONLY时,只导出对象定义,示例如下:expdp scott/tiger DIRECTORY=dump DUMPFILE=a.dump CONTENT=METADATA_ONLY3. DIRECTORY指定转储文件和日志文件所在的目录.语法如下:DIRECTORY=directory_objectdirectory_object用于指定目录对象名称.需要注意,目录对象是使用CREATE DIRECTORY 语句建立的对象,而不是OS 目录,示例如下:expdp scott/tiger DIRECTORY=dump DUMPFILE=a.dump建立目录:CREATE DIRECTORY dump as 'd:\dump';查询创建了那些子目录:SELECT * FROM dba_directories;4. DUMPFILE用于指定转储文件的名称,默认名称为expdat.dmp.语法如下:DUMPFILE=[directory_object:]file_name[,….]directory_object用于指定目录对象名,file_name用于指定转储文件名.需要注意,如果不指定directory_object,导出工具会自动使用DIRECTORY选项指定的目录对象,示例如下:expdp scott/tiger DIRECTORY=dump1 DUMPFILE=dump2:a.dmp5. ESTIMATE指定估算被导出表所占用磁盘空间的方法.默认值是BLOCKS.语法如下:EXTIMATE={BLOCKS | STATISTICS}设置为BLOCKS时,oracle会按照目标对象所占用的数据块个数乘以数据块尺寸估算对象占用的空间,设置为STATISTICS时,根据最近统计值估算对象占用空间,示例如下:expdp scott/tiger TABLES=emp ESTIMATE=STATISTICS DIRECTORY=dump DUMPFILE=a.dump一般情况下, 当用默认值(blocks)时, 日志中估计的文件大小会比实际expdp出来的文件大, 用statistics时会跟实际大小差不多.6. EXTIMATE_ONLY指定是否只估算导出作业所占用的磁盘空间,默认值为N.语法如下:EXTIMATE_ONLY={Y | N}设置为Y时,导出作用只估算对象所占用的磁盘空间,而不会执行导出作业,为N时,不仅估算对象所占用的磁盘空间,还会执行导出操作,示例如下:expdp scott/tiger ESTIMATE_ONLY=y NOLOGFILE=y7. EXCLUDE该选项用于指定执行操作时要排除的对象类型或相关对象.语法如下:EXCLUDE=object_type[:name_clause][,….]object_type用于指定要排除的对象类型,name_clause用于指定要排除的具体对象.EXCLUDE和INCLUDE不能同时使用,示例如下:expdp scott/tiger DIRECTORY=dump DUMPFILE=a.dup EXCLUDE=VIEW在EXPDP的帮助文件中, 可以看到存在EXCLUDE和INCLUDE参数, 这两个参数文档中介绍的命令格式存在问题, 正确用法是:EXCLUDE=OBJECT_TYPE[:name_clause][,...]INCLUDE=OBJECT_TYPE[:name_clause][,...]示例:expdp <other_parameters> schema=scottexclude=sequence,table:"in('EMP','DEPT')"impdp <other_parameters> schema=scott include=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不能同时使用,示例如下:expdp scott/tiger DIRECTORY=dump DUMPFILE=a.dmp FLASHBACK_SCN=35852310. FLASHBACK_TIME指定导出特定时间点的表数据.语法如下:FLASHBACK_TIME="TO_TIMESTAMP(time_value)"示例如下:expdp scott/tiger DIRECTORY=dump DUMPFILE=a.dmp FLASHBACK_TIME="TO_TIMESTAMP('25-08-2004 14:35:00','DD-MM-YYYY HH24:MI:SS')"11. FULL指定数据库模式导出,默认为N.语法如下:FULL={Y | N}为Y时,标识执行数据库导出.12. HELP指定是否显示EXPDP命令行选项的帮助信息,默认为N. 当设置为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.dmp INCLUDE=trigger JOB_NAME=exp_trigger后面想临时停止expdp任务时可以按Ctrl+C组合键,退出当前交互模式,退出之后导出操作不会停止,这不同于Oracle以前的EXP. 以前的EXP,如果退出交互式模式,就会出错终止导出任务. 在 Oracle10g中,由于EXPDP是数据库内部定义的任务,已经与客户端无关. 退出交互之后,会进入export的命令行模式,此时支持 status等查看命令:Export> status如果想停止改任务,可以发出stop_job命令:Export> stop_job如果有命令行提示: "是否确实要停止此作业([Y]/N):" 或 "Are you sure you wish to stop this job ([yes]/no):", 回答应是yes或者no, 回答是YES以后会退出当前的export界面.接下来可以通过命令行再次连接到这个任务:expdp test/test@acf attach=expfull通过start_job命令重新启动导出:Export> start_jobExport> status15. LOGFILE指定导出日志文件文件的名称,默认名称为export.log.语法如下:LOGFILE=[directory_object:]file_namedirectory_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生成的文件默认是存放在服务端的,而exp生成的文件是存放在客户端.expdp username/password@connect_string //对于使用这种格式来说,directory使用源数据库创建的,生成的文件存放在服务端。
Oracle数据库10g中的数据泵
Oracle 应用程序种子数据库: 应用程序种子数据库:
密集的元数据:392K 个对象,200 个模式,10K 个表,总共 2.1 Gb 的数据 原来的 exp / imp 总共花费:32 小时 50 分钟
–
exp 2 exp:2 小时 13 分钟
imp imp: 30 小时 37 分钟
数据泵 expdp / impdp 总共花费:15 小时 40 分 钟
扩展 I/O! Parallel= 不超过两倍的 CPU 数量: 不要超过磁盘最高容量。
–
必然的结果:扩展
I/O!!!
为 AQ 消息发送和元数据 API 查询提供足够的 SGA 为长时间运行的查询提供足够的回滚
这就是性能调整!
大型的互联网公司
2 个事实表: 16.2M 行,2 Gb 个事实表:
程序
特性:检查点 重新启动 特性:检查点/重新启动
作业进度记录在一个“主表”中 可以显式地停止并在以后重新启动:
–
在当前项目完成后停止或立即停止
异常终止的作业也可以重新启动 如果有问题可以在重启时跳过当前的对象
特性: 特性:网络模式
网络导入:直接从一个数据库加载 另一个数据库 网络导出:将一个远程数据库卸载至一个本地的转储文 件集中
Oracle 数据库 10g 中的数据泵: 超高速数据转移实用工具的基础
甲骨文公司
数据泵: 数据泵:概述
什么是数据泵? 主要特性 体系结构 性能 要记住的事情 对原来的 exp / imp 的一些看法
数据泵:什么是数据泵? 数据泵:什么是数据泵?
基于服务器的工具,用于在加载和卸载数据和元数 据时获得高性能 可调用:DBMS_DATAPUMP。在内部使用 DBMS_METADATA 以直接路径 (Direct Path) 流的格式写入数据。以 XML 的格式写入元数据 新的客户端程序 expdp 和 impdp:原来的 exp / imp 的扩展集 流、逻辑备用、网格、可移动表空间和数据挖掘初 始实例化的基础。
oralce10g数据泵技术讲解
认识数据泵
数据泵技术相对应的工具是Data Pump Export和Data Pump Import。它的功 能与EXP和IMP类似,不过功能和效率差异巨大,或者说基本没什么相似的地 方,并且EXP生成的dump文件与EXPDP生成的dump文件也不兼容。 下面列举data pump的主要特性(包括单不限于) 支持并行处理导入、导出任务 支持暂停和重新导入、导出任务 支持通过database link方式导出或导入远端数据库中对象 支持在导入时通过REMAP_SCHEMA、REMAP_DATAFILE、 REMAP_TABLESPACE几个参数实现导入过程中自动修改对象属主、 数据文件或所在表空间 导入、导出时提供了非常细粒度的对象控制。IMP/EXP时最多控制是 否导入索引、约束、授权信息等有限的对象类型,而在Dta Pump中不 仅可以精确到对象类型,通过INCLUDE或EXCLUDE两个参数,甚至 可以详细指定是否包含或不包含某个对象。 服务端的工具
调用方式2 调用方式
[oracle@sure datapumptest]$ more test1.par DIRECTORY=DUMP_FILE_DIR DUMPFILE=test1.dmp LOGFILE=test1.log TABLES=(JOBS,EMPLOYEES)
调用方式2 调用方式
[oracle@sure datapumptest]$ expdp hr/hr parfile=test1.par Export: Release 10.2.0.1.0 - Production on Tuesday, 19 October, 2010 16:14:52 Copyright (c) 2003, 2005, Oracle. All rights reserved. Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production With the Partitioning, OLAP and Data Mining options Starting "HR"."SYS_EXPORT_TABLE_01": hr/******** parfile=test1.par Estimate in progress using BLOCKS method... Processing object type TABLE_EXPORT/TABLE/TABLE_DATA Total estimation using BLOCKS method: 128 KB Processing object type TABLE_EXPORT/TABLE/TABLE Processing object type TABLE_EXPORT/TABLE/GRANT/OWNER_GRANT/OBJECT_GRANT Processing object type TABLE_EXPORT/TABLE/INDEX/INDEX Processing object type TABLE_EXPORT/TABLE/CONSTRAINT/CONSTRAINT Processing object type TABLE_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS Processing object type TABLE_EXPORT/TABLE/COMMENT Processing object type TABLE_EXPORT/TABLE/CONSTRAINT/REF_CONSTRAINT Processing object type TABLE_EXPORT/TABLE/TRIGGER Processing object type TABLE_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS . . exported "HR"."EMPLOYEES" 15.76 KB 107 rows . . exported "HR"."JOBS" 6.609 KB 19 rows Master table "HR"."SYS_EXPORT_TABLE_01" successfully loaded/unloaded ****************************************************************************** Dump file set for HR.SYS_EXPORT_TABLE_01 is: /home/oracle/datapumptest/test1.dmp Job "HR"."SYS_EXPORT_TABLE_01" successfully completed at 16:15:07
oracle数据泵应用及常见问题
Oracle数据泵应用及常见问题1、Oracle数据泵简介Oracle数据泵(Data Pump)是Oracle10G引进的新技术,在10g之前,传统的导出和导入分别使用EXP工具和IMP工具,从10g开始,不仅保留了原有的EXP和IMP工具,还提供了数据泵导出导入工具EXPDP和IMPDP。
经相关测试,Oracle数据泵方式进行数据导入导出要比以前的IMP/EXP快10倍左右,给大数据量的数据库导入导出提供了方便。
数据泵方式与IMP/EXP的主要区别在于EXP和IMP是客户段工具程序,它们既可以在可以客户端使用,也可以在服务端使用。
而EXPDP和IMPDP是服务端的工具程序,他们只能在ORACLE服务端使用,不能在客户端使用;IMP只适用于EXP导出文件,不适用于EXPDP 导出文件;IMPDP只适用于EXPDP导出文件,而不适用于EXP导出文件。
2、Oracle数据泵命令及主要参数a)EXPDP/IMPDP使用前准备运行命令前必须建立工作目录并赋权限,然后执行命令,具体步骤如下:a1在数据库所在机器上建立工作目录,如:d:\dp。
a2用数据库DBA用户SYS登录数据库,执行语句如下语句:create directory dump_dir as ' d:\dp ';grant read, write on directory dump_dir to db_user;(此处dump_dir 是第上面语句中工作目录名称,非实际目录名称,db_user是数据库用户名)。
a3运行EXPDP命令。
b)EXPDP主要参数a1DIRECTORY:导出数据的目录(目录是上面的设定的目录dump_dir)a2DUMPFILE:导出的文件名。
a3VERSION:以哪个版本导出数据,如果在不同的版本间导出导入数据,这个参数非常有用,例如将Oracle11G数据导入到Oracle10G(10.2.0.1.0)的数据库中,参数应写为VERSION=10.2.0.1.0,否则无法导入到低版本的数据库中。
Oracle数据泵的导入与导出实例详解
Oracle数据泵的导⼊与导出实例详解⽬录前⾔数据泵的导⼊数据泵的导出总结前⾔今天王⼦要分享的内容是关于Oracle的⼀个实战内容,Oracle的数据泵。
⽹上有很多关于此的内容,但很多都是复制粘贴别⼈的,导致很多⼩伙伴想要使⽤的时候不能直接上⼿,所以这篇⽂章⼀定能让你更清晰的理解数据泵。
开始之前王⼦先介绍⼀下⾃⼰的环境,这⾥使⽤的是⽐较常⽤的WIN10系统,Oracle数据库也是安装在本机上的,环境⽐较简单。
数据泵的导⼊导⼊的数据⽂件可能是别⼈导出给你的,也可能是你⾃⼰导出的,王⼦这⾥就是别⼈导出的,⽂件名字是YD.DMP。
在进⾏操作之前,⼀定要问清楚表空间名字,如果表空间命名不统⼀,可能会导致导⼊失败的问题。
所以第⼀步就是建⽴表空间,语句如下:create tablespace VIEWHIGHdatafile 'D:/app/admin/oradata/orcl/VIEWHIGH'size 1M autoextend on next 50M maxsize unlimited;这⾥的datafile路径⼀般选择你本地oracle的数据⽂件路径。
之后,我们可以建⽴⼀个新的⽤户来导⼊数据⽤,这个⽤户名也可以提前问好,最好⽤户名⼀致,否则需要做⼀次⽤户名的映射,这个我们下⽂再说。
建⽴⽤户语句如下:create user DRGS_INITidentified by "vhiadsh"default tablespace VIEWHIGHprofile DEFAULTACCOUNT UNLOCK;建⽴⽤户后需要给⽤户授权,语句如下:--给新建⽤户授DBA权限grant dba to DRGS_INIT;grant unlimited tablespace to DRGS_INIT;接下来我们需要在本地的磁盘中创建⼀个⽂件夹,作为数据泵⽂件夹来使⽤,同时把DMP⽂件放⼊到此⽂件夹下。
数据泵导入导出详解
数据泵技术是Oracle Database 10g 中的新技术,它比原来导入/导出(imp,exp)技术快15-45倍。
速度的提高源于使用了并行技术来读写导出转储文件。
expdp使用使用EXPDP工具时,其转储文件只能被存放在DIRECTORY对象对应的OS目录中,而不能直接指定转储文件所在的OS目录。
因此使用EXPDP工具时,,必须首先建立DIRECTORY对象,并且需要为数据库用户授予使用DIRECTORY对象权限。
首先得建DIRECTORY:SQL> conn /as sysdbaSQL> CREATE OR REPLACE DIRECTORY dir_dump AS '/u01/backup/';SQL> GRANT read,write ON DIRECTORY dir_dump TO public;1) 导出scott整个schema--默认导出登陆账号的schema$ expdpscott/tiger@db_esuiteparfile=/orahome/expdp.parexpdp.par内容:DIRECTORY=dir_dumpDUMPFILE=scott_full.dmpLOGFILE=scott_full.log--其他账号登陆, 在参数中指定schemas$ expdp system/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.par expdp.par内容:DIRECTORY=dir_dumpDUMPFILE=scott.dmpLOGFILE=scott.logTABLES=DEPT,EMP3) 导出scott下除emp之外的表$ expdpscott/tiger@db_esuiteparfile=/orahome/expdp.par expdp.par内容:DIRECTORY=dir_dumpDUMPFILE=scott.dmpLOGFILE=scott.logEXCLUDE=TABLE:"='EMP'"4) 导出scott下的存储过程$ expdpscott/tiger@db_esuiteparfile=/orahome/expdp.par expdp.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%'" //可以改成NOT LIKE,就导出不以E开头的表6) 带QUERY导出$ expdpscott/tiger@db_esuiteparfile=/orahome/expdp.parexpdp.par内容:DIRECTORY=dir_dumpDUMPFILE=scott.dmpLOGFILE=scott.logTABLES=EMP,DEPTQUERY=EMP:"whereempno>=8000"QUERY=DEPT:"wheredeptno>=10 and deptno<=40"注: 处理这样带查询的多表导出, 如果多表之间有外健关联, 可能需要注意查询条件所筛选的数据是否符合这样的外健约束, 比如EMP中有一栏位是deptno, 是关联dept中的主键, 如果"whereempno>=8000"中得出的deptno=50的话, 那么, 你的dept的条件"wheredeptno>=10 and deptno<=40"就不包含deptno=50的数据, 那么在导入的时候就会出现错误.expdp选项1. ATTACH该选项用于在客户会话与已存在导出作用之间建立关联.语法如下:ATTACH=[schema_name.]job_nameschema_name用于指定方案名,job_name用于指定导出作业名.注意,如果使用ATTACH选项,在命令行除了连接字符串和ATTACH选项外,不能指定任何其他选项,示例如下:expdpscott/tiger ATTACH=scott.export_job2. CONTENT该选项用于指定要导出的内容.默认值为ALL.语法如下:CONTENT={ALL | DATA_ONLY |METADATA_ONLY}当设置CONTENT为ALL 时,将导出对象定义及其所有数据; 为DATA_ONLY时,只导出对象数据; 为METADATA_ONLY时,只导出对象定义,示例如下:expdpscott/tiger DIRECTORY=dump DUMPFILE=a.dumpCONTENT=METADATA_ONLY3. DIRECTORY指定转储文件和日志文件所在的目录.语法如下:DIRECTORY=directory_objectdirectory_object用于指定目录对象名称.需要注意,目录对象是使用CREATE DIRECTORY语句建立的对象,而不是OS 目录,示例如下:expdpscott/tiger DIRECTORY=dump DUMPFILE=a.dump建立目录:CREATE DIRECTORY dump as 'd:dump';查询创建了那些子目录:SELECT * FROM dba_directories;4. DUMPFILE用于指定转储文件的名称,默认名称为expdat.dmp.语法如下:DUMPFILE=[directory_object:]file_name[,….]directory_object用于指定目录对象名,file_name用于指定转储文件名.需要注意,如果不指定directory_object,导出工具会自动使用DIRECTORY选项指定的目录对象,示例如下:expdpscott/tiger DIRECTORY=dump1 DUMPFILE=dump2:a.dmp5. ESTIMATE指定估算被导出表所占用磁盘空间的方法.默认值是BLOCKS.语法如下:EXTIMATE={BLOCKS | STATISTICS}设置为BLOCKS时,oracle会按照目标对象所占用的数据块个数乘以数据块尺寸估算对象占用的空间,设置为STATISTICS时,根据最近统计值估算对象占用空间,示例如下:expdpscott/tiger TABLES=emp ESTIMATE=STATISTICSDIRECTORY=dumpDUMPFILE=a.dump一般情况下, 当用默认值(blocks)时, 日志中估计的文件大小会比实际expdp出来的文件大, 用statistics时会跟实际大小差不多.6. EXTIMATE_ONLY指定是否只估算导出作业所占用的磁盘空间,默认值为N.语法如下:EXTIMATE_ONLY={Y | N}设置为Y时,导出作用只估算对象所占用的磁盘空间,而不会执行导出作业,为N时,不仅估算对象所占用的磁盘空间,还会执行导出操作,示例如下:expdpscott/tiger ESTIMATE_ONLY=y NOLOGFILE=y7. EXCLUDE该选项用于指定执行操作时要排除的对象类型或相关对象.语法如下:EXCLUDE=object_type[:name_clause][,….]object_type用于指定要排除的对象类型,name_clause用于指定要排除的具体对象.EXCLUDE和INCLUDE不能同时使用,示例如下:expdpscott/tiger DIRECTORY=dump DUMPFILE=a.dup EXCLUDE=VIEW在EXPDP的帮助文件中, 可以看到存在EXCLUDE和INCLUDE参数, 这两个参数文档中介绍的命令格式存在问题, 正确用法是:EXCLUDE=OBJECT_TYPE[:name_clause][,...]INCLUDE=OBJECT_TYPE[:name_clause][,...]示例:Expdp<other_parameters> schema=scottexclude=sequence,table:"in('EMP','DEPT')"impdp<other_parameters> schema=scott include = 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/tiger DIRECTORY=dump DUMPFILE=a.dmpFLASHBACK_SCN=35852310. FLASHBACK_TIME指定导出特定时间点的表数据.语法如下:FLASHBACK_TIME="TO_TIMESTAMP(time_value)"示例如下:expdpscott/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.当设置为Y时,会显示导出选项的帮助信息,示例如下:expdp help=y13. INCLUDE指定导出时要包含的对象类型及相关对象.语法如下:INCLUDE=object_type[:name_clause][,… ]示例如下:expdpscott/tiger DIRECTORY=dump DUMPFILE=a.dmp INCLUDE=trigger1.1.2 expdp选项14. JOB_NAME指定要导出作用的名称,默认为SYS_XXX.语法如下:JOB_NAME=jobname_string示例如下:expdpscott/tiger DIRECTORY=dump DUMPFILE=a.dmpINCLUDE=triggerJOB_NAME=exp_trigger后面想临时停止expdp任务时可以按Ctrl+C组合键,退出当前交互模式,退出之后导出操作不会停止,这不同于Oracle以前的EXP. 以前的EXP,如果退出交互式模式,就会出错终止导出任务. 在Oracle10g中,由于EXPDP是数据库内部定义的任务,已经与客户端无关. 退出交互之后,会进入export的命令行模式,此时支持status等查看命令:Export> status如果想停止改任务,可以发出stop_job命令:Export>stop_job如果有命令行提示: "是否确实要停止此作业([Y]/N):" 或"Are you sure you wish to stop this job ([yes]/no):", 回答应是yes或者no, 回答是YES以后会退出当前的export界面.接下来可以通过命令行再次连接到这个任务:expdp test/test@acf attach=expfull通过start_job命令重新启动导出:Export>start_jobExport> status15. LOGFILE指定导出日志文件文件的名称,默认名称为export.log.语法如下:LOGFILE=[directory_object:]file_namedirectory_object用于指定目录对象名称,file_name用于指定导出日志文件名.如果不指定directory_object.导出作用会自动使用DIRECTORY的相应选项值,示例如下:expdpscott/tiger DIRECTORY=dump DUMPFILE=a.dmp logfile=a.log16. NETWORK_LINK指定数据库链名,如果要将远程数据库对象导出到本地例程的转储文件中,必须设置该选项.expdp中使用连接字符串和network_link的区别:expdp属于服务端工具,而exp属于客户端工具,expdp生成的文件默认是存放在服务端的,而exp生成的文件是存放在客户端.expdp username/password@connect_string //对于使用这种格式来说,directory使用源数据库创建的,生成的文件存放在服务端。
oracle数据泵
时代朝阳Oracle DBA职业培训课程才能展示(Talent Show) 北京时代朝阳数据库技术中心
character set
编码模式 单字节(7bit) 双字节(8bit) 固定长度多字节 可变长度的单字节 可变长度的多字节 示例 US7ASCII,非IBM系统中oracle默认字符集 YUG7ASCII WE8ISO8859P15,西欧8bit标准字符集 WE8DEC,DEC公司开发 AL16UTF16,双字节的Unicode字符集 UTF8, Unicode字符集,字符为1-4个字节 UTF16,字符为1-6个字节 JA16SIS:基于日语的字符集 ZHT16CCDC:传统中文字符集,最高位指示是单字节还是双字 节 AL32UTF8: 可变的Unicode字符集 图(1)
ORACLE数据泵
5, estimate
指定估算被导出表所占用磁盘空间分方法.默认值是BLOCKS,
6, job_name
指定要导出作用的名称
7,network_link
允许网络导入,就是通过数据库链接连接到预定义的源数据库 除此之外还有很多参数选项,可以输入expdp help=y和impdp help=y查询
时代朝阳Oracle DBA职业培训课程才能展示(Talent Show) :
Windows2003 oracle 10.2.0.1 字符集UTF8,国家字符集AL16UTF16
平台2:
Hp unix oracle 10.2.0.1 字符集ZHS16GBK,国家字符集AL16UTF16
时代朝阳Oracle DBA职业培训课程才能展示(Talent Show) 北京时代朝阳数据库技术中心
数据泵实践操作
9 libmgr用户导完后会报错,角色未创建,需要自己在节点1查询角色权限,然后 手工创建. 10 数据导入后,配置节点2的监听,IP后 在客户端建立服务,用libmgr软件登陆,查看数据,可以看到数据已经传送过 来,能够正常使用
Oracle 数据泵详解
Oracle 数据泵详解一、EXPDP和IMPDP使用说明Oracle Database 10g引入了最新的数据泵(Data Dump)技术,数据泵导出导入(EXPDP和IMPDP)的作用1)实现逻辑备份和逻辑恢复.2)在数据库用户之间移动对象.3)在数据库之间移动对象4)实现表空间搬移.二、数据泵导出导入与传统导出导入的区别在10g之前,传统的导出和导入分别使用EXP工具和IMP工具,从10g开始,不仅保留了原有的EXP和IMP工具,还提供了数据泵导出导入工具EXPDP和IMPDP.使用EXPDP和IMPDP时应该注意的事项:1)EXP和IMP是客户端工具程序,它们既可以在可以客户端使用,也可以在服务端使用。
2)EXPDP和IMPDP是服务端的工具程序,他们只能在ORACLE服务端使用,不能在客户端使用。
3)IMP只适用于EXP导出文件,不适用于EXPDP导出文件;IMPDP只适用于EXPDP导出文件,而不适用于EXP导出文件。
数据泵导出包括导出表,导出方案,导出表空间,导出数据库4种方式.三、Expdp参数EXPDP命令行选项,可通过expdp help=y查看:E:\emp>expdp help=yExport: Release 10.2.0.1.0- Production on 星期日, 03 5月, 2009 17:54:49Copyright (c) 2003, 2005, Oracle. All rights reserved.数据泵导出实用程序提供了一种用于在 Oracle 数据库之间传输数据对象的机制。
该实用程序可以使用以下命令进行调用:示例: expdp scott/tigerDIRECTORY=dmpdir DUMPFILE=scott.dmp您可以控制导出的运行方式。
具体方法是: 在 'expdp' 命令后输入各种参数。
要指定各参数, 请使用关键字:格式: expdp KEYWORD=value 或KEYWORD=(value1,value2,...,valueN)示例: expdp scott/tigerDUMPFILE=scott.dmp DIRECTORY=dmpdir SCHEMAS=scott或 TABLES=(T1:P1,T1:P2), 如果 T1 是分区表USERID 必须是命令行中的第一个参数。
201307 Oracle数据泵
技术文档模板(v 130710)版本说明目录版本说明 (2)1系统和软硬件环境说明 (4)2 导出前建目录,赋权限 (4)3常用导出方法 (4)4常用参数 (4)5导出过程中的监控 (5)6并行操作(PARALLEL) (5)7数据库监控 (6)8处理特定对象 (6)1系统和软硬件环境说明硬件环境:x86服务器软件环境:RedHat Enterprise Linux 5.5,Oracle DataBase 10gR22 导出前建目录,赋权限SQL> create directory dmpdir as '/u01/dmdir';SQL> grant read,write on directory to test;3常用导出方法$ expdp scott/tiger DUMPFILE=scott.dmp DIRECTORY=dmpdir SCHEMAS=test$ expdp scott/tiger DUMPFILE=tmp_dump.dmp DIRECTORY=dmpdir TABLES=(tmp_test:p1,tmp_test:p2) JOB_NAME=tmp_dump LOGFILE=tmp_dump.log$ expdp scott/tiger DUMPFILE=full.dmp DIRECTORY=dmpdir FULL=Y JOB_NAME=full$ expdp scott/timer DUMPFILE=tmp_200703.dmp DIRECTORY=dmpdir TABLES=tmp QUERY=\"where to_char\(create_time,\'yyyy-mm-dd\'\)\<\'2007-04\'\"4常用参数SCOTT/TIGER:用户/密码(*)DUMPFILE:导出后的文件名(*)DIRECTORY:导出文件存放位置(位于服务器端)(*)CONTENT:导出文件中包含的内容(默认为:ALL,可选DATA_ONLY/METADATA_ONLY)FILESIZE:指定导出文件大小(单位为bytes).JOB_NAME:此次导出进程使用的名称,方便跟踪查询(可选)LOGFILE:日志文件名(默认为:export.log)INCLUDE:导出时包含指定的类型(例:INCLUDE=TABLE_DATA,INCLUDE=TABLE:"LIKE 'TAB%'",INCLUDE=TABLE:”NOT LIKE ‘TAB%’”…) EXCLUDE:导出时排除的数据类型(例:EXCLUDE=TABLE:EMP)FULL:全库导出时使用(同EXP的FULL,默认为N)SCHEMA:导出某一个SCHEMA下的所有数据TABLES:按表导出(这里的方法和EXP一样)TABLESPACE:指定一个表空间导出.QUERY:按表导出时,使用条件语句限定导出范围(同exp中的QUERY)TRANSPORT_FULL_CHECK:TRANSPORT_TABLESPACES:FLASHBACK_SCN:FLASHBACK_TIME:PARALLEL:并行操作PARFILE:NETWORK_LINK:5导出过程中的监控当 Data Pump Export (DPE)运行时,按 Control-C;它将阻止消息在屏幕上显示,但不停止导出进程本身。
oracle 10g数据泵之impdp
directory:指定转储文件和日志文件所在的默认位置(也就是保存数据的文件位置)。语法格式:directory=direcotry_object。direcotry_object 是create directory语句创建的目录对象。
dumpfile:指定转储文件的名称。语法格式:dumpfile=[ direcotry_object:]file_name[,….]。direcotry_object默认为上面directory参数指定的目录对象。file_name默认名称是expdat.dmp。如果导入文件过大,可以指定多个文件名,如direcotry_object:mydb_%U.dmp。”%U”是一个占位符,使用这种方式不会出现同名的文件。
其中schemas表示方案(即用户),emp表示远程数据库名。使用这种方式转储文件将保存在远程服务器的操作系统中。如果要把转储文件保存到本地机子,使用以下语法:
expdp username/password directory=dumles=schemas.emp network_link=to234db
使用impdp导入数据
1.指定转储文件(存放导出数据的文件)存放的目录
SQL>connect sys/password as sysdba;
SQL>create directory dump_dir as ‘d:\dump’;
2.使用impdp命令
开始-->运行-->cmd
impdp username/password parameter1[,parameter2,….]
导入实例
顺便把expdp命令也写进来,以方便对比。为了不和上一篇导出笔记重复,这里以导入远程数据库的数据到本地数据库为例。
Oracle数据泵使用详解
Oracle数据泵使⽤详解数据泵使⽤EXPDP和IMPDP时应该注意的事项:EXP和IMP是客户端⼯具程序,它们既可以在客户端使⽤,也可以在服务端使⽤。
EXPDP和IMPDP是服务端的⼯具程序,他们只能在ORACLE服务端使⽤,不能在客户端使⽤。
IMP只适⽤于EXP导出的⽂件,不适⽤于EXPDP导出⽂件;IMPDP只适⽤于EXPDP导出的⽂件,⽽不适⽤于EXP导出⽂件。
expdp或impdp命令时,可暂不指出⽤户名/密码@实例名 as ⾝份,然后根据提⽰再输⼊,如:expdp schemas=scott dumpfile=expdp.dmp DIRECTORY=dir;环境windows2003SP2oracle11gR1使⽤expdp和impdp1.命令⾏打开sqlplussqlplus /nologconn / as sysdba2.创建逻辑⽬录,该命令不会在操作系统创建真正的⽬录(最好⼿⼯先建好),最好以administrator等管理员创建。
create directory dir as 'd:\dump'; //dir名称可以随便命名需要⼿⼯创建d:\dump3.查看管理理员⽬录(同时查看操作系统中是否存在,因为Oracle并不关⼼该⽬录是否存在,如果不存在,则出错)select * from dba_directories;4.给scott⽤户赋予在指定⽬录的操作权限,最好以system等管理员赋予。
grant read,write on directory dir to scott;5、导出数据1)按⽤户导expdp scott/tiger@orcl schemas=scott dumpfile=expdp.dmp DIRECTORY=dir logfile=expdp.log2)并⾏进程parallelexpdp scott/tiger@orcl directory=dir dumpfile=scott3.dmp parallel=40 job_name=scott33)按表名导expdp scott/tiger@orcl TABLES=emp,dept dumpfile=expdp.dmp DIRECTORY=dir;4)按查询条件导expdp scott/tiger@orcl directory=dir dumpfile=expdp.dmp Tables=emp query='WHERE deptno=20';5)按表空间导expdp system/manager DIRECTORY=dir DUMPFILE=tablespace.dmp TABLESPACES=temp,example;6)导整个数据库expdp system/manager DIRECTORY=dir DUMPFILE=full.dmp FULL=y;6、还原数据1)导到指定⽤户下impdp scott/tiger@orcl DIRECTORY=dir DUMPFILE=expdp.dmp SCHEMAS=scott logfile=impdp.log2)改变表的ownerimpdp system/manager DIRECTORY=dir DUMPFILE=expdp.dmp TABLES=scott.dept REMAP_SCHEMA=scott:system; 3)导⼊表空间impdp system/manager DIRECTORY=dir DUMPFILE=tablespace.dmp TABLESPACES=example;4)导⼊数据库impdb system/manager DIRECTORY=dump_dir DUMPFILE=full.dmp FULL=y;5)追加数据impdp system/manager DIRECTORY=dir DUMPFILE=expdp.dmp SCHEMAS=system TABLE_EXISTS_ACTION****************************************************************************************LINUX环境(RHEL5)oracle10g和oracle11g使⽤expdp和impdp1.命令⾏打开sqlplussqlplus /nologconnect system/oracle2.创建逻辑⽬录,该命令不会在操作系统创建真正的⽬录(最后⼿⼯先建好),最好以system等管理员创建。
Oracle数据泵同步数据方式简要步骤
Oracle数据泵同步数据方式简要步骤1、Oracle数据泵简介Data Pump 反映了整个导出/导入过程的完全革新。
不使用常见的 SQL 命令,而是应用专有 API(direct path api etc) 来以更快得多的速度加载和卸载数据。
以下步骤为从容灾数据库(源端)上,按照用户或者数据表的模式将数据同步到测试数据库(目标端)上的简要步骤。
应用数据泵做数据同步的前提条件是:1、在源端数据库主机上有足够大的空间存储导出的数据文件,要求提前对导出的数据文件大小做评估,看预留多少空间。
2、在目标端主机上也要保证有足够的空间存放导入的数据文件3、源端和目标端导入导出所用的数据库用户及密码(明文)2、Oracle数据泵数据表同步方式和用户同步方式2.1.指定数据表同步方式(导出、导入)以同步客服测试数据库为例:源端数据库主机:10.220.33.112(存放目录:/dataapp1/expdp)目标端数据库主机:10.220.64.71(存放目录:/oracle/imp)导出:1.滤出需要同步的数据表列表,评估需要同步的表大小,在源端及目标端主机上留出所需的数据文件的空间。
2.登录(oracle/oracle)源端数据库主机(10.220.33.112),执行:$sqlplus / as sysdba登录数据库,执行如下语句:>create directory dpdata2 as '/dataapp1/expdp ';>grant read, write on directory dpdata2 to kf;3.按照表名导出的语句如下:$expdp kf/kf@rzkfdb1new tables=co_task,co_task_log,……directory=dpdata2 dumpfile=par%U.dmp parallel=15;参数说明:tables------要导出的数据表名Directory------数据文件导出的路径Dumpfile---------导出的数据文件命名%为通配符,按照导出的进程数递增 Parallel----------数据泵支持多进程导出方式4.此语句执行后观察在对应的目录是否有*.dmp类别的文件生成导入:1.数据泵导入操作是在导出操作基础上进行的,在导入操作之前,需要在目标数据库上建立与源端相同的表空间、schema等元素。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第10章 Oracle数据泵技术
数据泵的目录对象(续)。
如果使用SYS用户可以直接创建数据泵目录。
SQL> create directory pump_dir as 'f:\pump';
目录已创建。
我们创建了一目录。该目录可以给其他用户使用,但是必须将读、写该目录的权 限赋予用户,我们可以将该目录的读、写权赋予SCOTT用户,如下所示。
第10章 Oracle数据泵技术
数据泵导入数据库实例。
Oracle数据泵导入实用程序(IMPDP)将备份的数据导入整个数 据库、特定的模式、特定的表或者特定的表空间,使用IMPDP也 可以在不同平台的数据库之间迁移表空间。IMPDP实用程序通过 各种参数支持对数据过滤以及对元数据的过滤,而元数据的过滤 可以有效控制要导入的对象类型,如导入表、索引还是授权等等。 使用数据泵导入实用程序与数据泵导出实用程序一样可以使用 DIRECTORY、PARFILE、DUMPFILE和LOGFILE等参数,但是正如 ADD_FILE是数据泵导出EXPDP实用程序专有的一样,SQLFILE参 数也是数据泵导入IMPDP实用程序所专有的。在执行数据泵导入 作业时,往往需要从备份数据文件中途提取DDL语句,此时需要 使用SQLFILE。
SQL> grant read on directory pump_dir to scott;
授权成功。
第10章 Oracle数据泵技术
数据泵导入导操作实例:
1.导出整个数据库,我们使用SYSTEM用户登录数据库,限制备份 的数据文件的大小为100M,一旦备份数据文件满,则自动创建一 个新的备份文件,使用了替换变量%U来实现备份文件的自动创 建,其中NOLOGFILE=Y即不记录备份过程。 F:\>expdp system/oracle@orcl dumpfile = pump_dir:mydb3_%u.dat filesize = 100m nologfile = y job_name =tom full = y。 2.导出一个模式 我们导出SCOTT模式,在下例中没有SCHEMA参数,但是默认导 出登录数据库时的模式对象。 D:\>expdp scott/tiger@orcl dumpfile=pump_dir:scottschema.dmp logfile =pump_dir:scottschema.log
第10章 Oracle数据泵技术
3.导入指定的表 使用IMPDP导入特定的表使用TABLES参数,该参数后 是要导入的表对象的列表,如果有多个表使用,逗号 分隔。我们使用了参数TABLE_EXISTS_ACTION参数, 设置TABLE_EXISTS_ACTION=REPLACE,如果该表存 在则先删除在加载数据。
第10章 Oracle数据泵技术
数据泵的目录对象。
数据泵作业在数据库服务器上创建所有的备份文件,而Oracle要求数据 泵必须使用目录对象,以防止用户误操作数据库服务器上特定目录下的 操作系统文件。目录对象对应于操作系统上的一个指定目录。 如果用户需要自己创建目录对象,需要具有CREATE ANY DIRECTORY权 限,如下所示,首先向SCOTT用户授权CREATE ANY DIRECTORY然后创 建属于SCOTT用户的数据泵目录对象。 授权过程: SQL> conn system/oracle@orcl 已连接。 SQL> grant create any directory to scott; 授权成功。
第10章 Oracle数据泵技术
5.只导出数据,使用EXPDP的CONTENT参数, 可以指定导出表数据和元数据(对应参数 ALL),导出表行数据(对应参数DATA_ONLY) 或只导出元数据即表以及其他数据库对象的定 义(对应参数METADATA_ONLY)。 F:\>expdp system/oracle@orcl dumpfile =pump_dir:mydb_dataonly_%u.dat filesize=100m job_name=larry full=y content =data_only logfile =pump_dir:mydb_exp_dataonly_log
D:\>impdp scott/tiger@orcl dumpfile=pump_dir:MYDB_TBS_USERSANDSYSTEM_ 01.DAT nologfile=y tables= emp table_exists_action=replace
第10章 Oracle数据泵技术
4.导入指定的数据库对象 导入特地的数据库对象使用INCLUDE参数,该 例子中我们从备份文件中恢复SCOTT用户的所 有表和触发器对象,而对于已经存在的表则重 建再加载数据。 D:\>impdp scott/tiger@orcl dumpfile=pump_dir:MYDB_TBS_USERSANDS YSTEM_01.DAT nologfile=y include=table,trigger table_exists_action=replace
第10章 Oracle数据泵技术
6.使用参数文件:在使用EXPDP导出数据时,由于参数很多导致每次执 行备份都输入一长串指令,这样不但繁琐而且不易修改,Oracle的数据 泵技术允许使用参数文件,用户事先在参数文件中创建各种参数,保存 该文件为praname.par文件,然后在执行导出时使用参数PARFILE指定参 数文件的位置执行导出备份,这样就不用输入一长串参数指令。 首先我们建立参数文件如下: directory =pump_dir dumpfile=para_data_only_%u.dmp content =data_only exclude =table:"in('salgrade','bonus')" logfile=para_data_only.log filesize=50m parallel=2 job_name =para_data_only 保存在文件EXP.PAR内,然后在使用EXPDP备份数据时,可以使用该参数 文件,如下所示。 D:\>expdp scott/tiger@orcl parfile=exp.par
第10章 Oracle数据泵技术
数据泵导入导出操作实例:
3.导出特定的表,此时使用TABLES参数指定导入的表的列表,如果该表 不属于登录的用户,但是登录用户有访问这些表的权限,则在TABLES参 数的表必须使用schema.tablename的方式。 F:\>expdp system/oracle@orcl dumpfile = pump_dir:scott_tables_%u.dat tables=scott.emp,scott.dept nologfile=y job_name=only_scott 4.导出表空间,导出指定表空间使用TABESAPCES参数,如果有多个表空 间需要导出,表空间名使用逗号隔开,这里我们使用了PARALLEL参数, 指定数据导出并行线程数量,与之对应使用替换变量%U来创建相应数量 的备份数据文件,这样每个线程可以独立写一个备份数据文件,提高了 导出速度。 D:\>expdp system/oracle@orcl dumpfile=pump_dir:users_tbs_%u.dmp tablespaces=users filesize=100m parallel=2 logfile=users_tbs.log job_name =exp_users_tbs。
第10章 Oracle数据泵技术
数据泵导入数据库实例: 1.导入整个数据库 导入整个数据库至少需要两个参数,一个是FULL,设 置FULL=Y说明是导入全库,一个是DUMPFILE,说明 要导入的备份文件的目录和名称,当然最好设置 JOB_NAME参数,因为它允许切换到交换模式,允许 终止或重启导入会话。如下所示。 D:\>impdp system/oracle@orcl dumpfile=pump_dir:full_db_%u.dat logfile=myfulldb.log parallel= 3 job_name=my_fulldb_impdp full =y
第10章 Oracle数据泵技术
7.估计空间导出文件的空间大小,EXPDP使用 参数ESTIMATE_ONLY计算导出数据所需要的 存储空间,显然这是个有用的参数,在导出的 数据大小不清楚时,事先知道备份文件的大小, 可以提前分配磁盘空间,防止由于磁盘空间不 足而引起的EXPDP导出作业停止。 使用EXPDP导出数据时只计算导出作业所需要 的空间。 F:\>expdp system/oracle@orcl full =y estimate_only=y estimate=statistics nologfile=y
第10章 Oracle数据泵技术
数据泵技术特点(续)
4.独立于客户机:因为数据泵技术是基于数据库服务器的,它是 数据库服务器的一部分,一旦 启动数据泵作业,则与客户机无 关。 5.支持网络操作:支持在两个联网的数据库服务器之间导入和导 出数据文件,也支持直接的将 数据从一个数据库导入另一个数 据库,而不需要备份文件。网络操作的方式基于数据库连接 , 在数据库间直接移动数据的方法不需要磁盘存储。 6.导入功能更加细粒度:在数据泵技术中,使用INCLUDE和 EXCLUDE参数使得数据泵实用程序可 以导入或导出更加细粒度 的对象,如可以选择只导出过程或函数等。 7.支持增量备份以及快速增量备份,使得备份的数据量减少加快 了备份速度。
第10章 Oracle数据泵技术