oracle数据泵应用及常见问题

合集下载

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数据泵参数

oracle数据泵参数

oracle数据泵参数Oracle数据泵是Oracle数据库中的重要工具之一,它可以将数据库中的数据和对象导出到文件中,也可以将文件中的数据和对象导入到数据库中。

在使用数据泵时,需要指定一些参数,以便正确地执行数据泵操作。

本文将介绍Oracle数据泵中常用的参数及其作用。

1. DIRECTORYDIRECTORY参数用于指定数据泵操作中使用的目录对象。

目录对象是一个指向操作系统中的目录的对象,它允许Oracle数据库操作系统文件系统中的文件。

2. DUMPFILEDUMPFILE参数用于指定导出数据的文件名。

通常情况下,导出的数据会被保存为一个或多个文件,该参数指定这些文件的名称和位置。

3. LOGFILELOGFILE参数用于指定数据泵操作的日志文件名。

日志文件包含有关导入或导出操作的详细信息,包括错误和警告信息。

4. CONTENTCONTENT参数用于指定导出的内容类型。

可以选择导出整个数据库、一个或多个表、一个或多个分区或特定类型的对象。

5. SCHEMASSCHEMAS参数用于指定要导出的模式。

可以选择导出整个数据库或指定一个或多个模式。

6. TABLESTABLES参数用于指定要导出的表。

可以选择导出整个模式或指定一个或多个表。

7. INCLUDEINCLUDE参数用于指定要包含在导出的对象中的对象类型。

可以选择导出表、索引、约束、触发器、视图等对象类型。

8. EXCLUDEEXCLUDE参数用于指定要从导出中排除的对象类型。

可以选择排除表、索引、约束、触发器、视图等对象类型。

9. NETWORK_LINKNETWORK_LINK参数用于指定在导出或导入数据时使用的数据库链接。

这允许从另一个数据库中导出数据,而无需在本地创建中间文件。

10. FLASHBACK_TIMEFLASHBACK_TIME参数用于指定要导出的数据的时间点。

该参数允许您导出指定时间点之前的数据,而不是当前的数据。

使用EXPDP|IMPDP替代EXP|IMP备份数据

使用EXPDP|IMPDP替代EXP|IMP备份数据

一、数据泵(Data Pump)主要解决的问题
1. 据说比 IMP/EXP 更加灵活, 支持多种元数据过滤策略, 多种导入/导出模式, 如将 A 库 B 用户导到 C 库中 D 用户, 则只需要 REMAP_SCHEMA 即可 2. 占用 USER 表空间问题。一直纠结的占用其他表空间问题可以用 REMAP_TABLESPACE 参数解决 3. 高版本数据导入到低版本问题。可以在 Oracle11g 中用 version 参数指定版本,在 Oracle10g 中导入。 4. 空表问题,Oracle11g 新的表并且表中无数据也未使用过则表的 SEGMENT 空间是不会分配的,这样在 EXP 时表 是导不出来的,这个问题的解决就是给表分配 SEGMENT 或使用 EXPDP 了 i. Select 'ALTER TABLE ' || TABLE_NAME || ' ALLOCATE EXTENT;' From user_tables WHERE NUM_ROWS=0, 将查询结果导出成 sql 脚本执行即可 ALTER SYSTEM SET DEFERRED_SEGMENT_CREATION=FALSE SCOPE=BOTH
指定。 有了这个目录指定之后,就可以使用 EXPDP 了。 2. 删除目录指定
Drop Directory AAA
几个参数
REMAP_SCHEMA 将一个方案中的对象加载到另一个方案。 REMAP_TABLE 将表名重新映射到另一个表。 例如, REMAP_TABLE=EMP.EMPNO:REMAPPKG.EMPNO。 REMAP_TABLESPACE 将表空间对象重新映射到另一个表空间。
SELECT * FROM dba_directories;

数据泵使用总结

数据泵使用总结

数据泵使用总结Oracle10g 数据泵导出命令expdp 使用总结(一)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;查询已有的目录:select * from dba_directories;删除路径:drop directory exp_dir;1) 导出scott整个schema--默认导出登陆账号的schema$ expdp scott/tiger@db_esuite parfile=/orahome/expdp.par Windows下面:$ expdp scott/tiger@db_esuite parfile=d:\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表$ expdp scott/tiger@db_esuite parfile=/orahome/expdp.par expdp.par内容:DIRECTORY=dir_dumpDUMPFILE=scott.dmpLOGFILE=scott.logTABLES=DEPT,EMP如果写为:大小写不区别,指定schemas和tables不能同时使用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'"Eg:Impdp serviceworks_0916DIRECTORY=dmp_dir DUMPFILE= expbizservice0916.dmp remap_schema=bizservice_0916:serviceworks_0916 EXCLUDE=INDEXEXCLUDE=REF_CONSTRAINT exclude=table_statistics LOGFILE=imp1_tab.log4) 导出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.par expdp.par内容:DIRECTORY=dir_dumpDUMPFILE=scott.dmpLOGFILE=scott.logINCLUDE=TABLE:"LIKE 'E%'" //可以改成NOT LIKE,就导出不以E开头的表6) 带QUERY导出$ expdp scott/tiger@db_esuite parfile=/orahome/expdp.par expdp.par内容:DIRECTORY=dir_dumpDUMPFILE=scott.dmpLOGFILE=scott.logTABLES=EMP,DEPTQUERY=EMP:"where empno>=8000"QUERY=DEPT:"where deptno>=10 and deptno<=40"注: 处理这样带查询的多表导出, 如果多表之间有外健关联, 可能需要注意查询条件所筛选的数据是否符合这样的外健约束, 比如EMP中有一栏位是deptno, 是关联dept中的主键, 如果"where empno>=8000"中得出的deptno=50的话, 那么, 你的dept的条件"where deptno>=10 and deptno<=40"就不包含deptno=50的数据, 那么在导入的时候就会出现错误.Oracle10g 数据泵导出命令expdp 使用总结(二)1.1.2 expdp选项1. ATTACH该选项用于在客户会话与已存在导出作用之间建立关联.语法如下: ATTACH=[schema_name.]job_nameschema_name用于指定方案名,job_name用于指定导出作业名.注意,如果使用ATTACH选项,在命令行除了连接字符串和ATTACH选项外,不能指定任何其他选项,示例如下:expdp scott/tiger ATTACH=scott.export_job默认的job名称为:2. 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';查询创建了那些子目录:SQL:\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 schema=scott exclude=sequence,table:"in('EMP','DEPT') "impdp 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.dmpFLASHBACK_TIME="TO_TIMESTAMP('2 5-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=triggerOracle10g 数据泵导出命令expdp 使用总结(三)1.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_tr igger后面想临时停止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使用源数据库创建的,生成的文件存放在服务端。

impdp cluster参数

impdp cluster参数

impdp cluster参数impdp cluster参数是Oracle数据库中的一个重要功能,用于在集群环境下进行数据泵导入操作。

本文将详细介绍impdp cluster参数的使用方法和注意事项。

一、impdp cluster参数简介impdp cluster参数是用于在Oracle集群环境下进行数据泵导入的一个重要参数。

在集群环境中,多个实例共享同一个数据库,因此在进行数据导入时需要考虑到集群的特性。

二、impdp cluster参数的使用方法使用impdp cluster参数进行数据导入的方法如下:1. 首先,登录到目标数据库的服务器端。

2. 打开命令行终端,输入以下命令来进行数据导入:impdp cluster=集群名称directory=导出目录dumpfile=导出文件名 logfile=日志文件名三、impdp cluster参数的注意事项在使用impdp cluster参数进行数据导入时,需要注意以下几点:1. 集群名称必须正确,并且在目标数据库中存在。

2. 导出目录必须与导出数据文件所在的目录相同。

3. 导出文件名必须正确,并且在导出目录中存在。

4. 日志文件名必须是一个有效的文件名,并且在导出目录中不存在。

四、impdp cluster参数的常见问题及解决方法在使用impdp cluster参数进行数据导入时,可能会遇到以下常见问题:1. 导出文件无法找到:可能是导出文件名输入错误或导出文件不存在。

解决方法:检查导出文件名是否正确,并确认导出文件是否存在。

2. 导入数据失败:可能是集群名称输入错误或者目标数据库中不存在该集群。

解决方法:检查集群名称是否正确,并确认目标数据库中是否存在该集群。

3. 导入日志文件无法生成:可能是日志文件名输入错误或者导出目录没有写入权限。

解决方法:检查日志文件名是否正确,并确认导出目录是否具有写入权限。

五、总结impdp cluster参数是Oracle数据库中的一个重要功能,用于在集群环境下进行数据导入操作。

Oracle数据库Data Pump的使用

Oracle数据库Data Pump的使用

Oracle数据库Data Pump的使用第1章Data Pump简介1.1使用Data Pump的优势Data Pump是Oracle 10g版本开始支持的新特性,支持并行处理导入、导出任务;支持暂停和重启动导入、导出任务;支持导入时通过加入参数实现导入过程中修改对象属主、数据文件和表空间等。

现在的数据规模和数据量增长迅速,以前几百M或者几G可以使用IMP/EXP 工具导入导出,也花不了多久,但对于现在动不动就几十G或上百G的数据量,再使用IMP/EXP工具就显得力不从心了,大量时间浪费在等待上。

而Data Pump 的执行速度比IMP/EXP要快数倍,也是Oracle推荐的数据导入导出工具。

第2章使用Data Pump的需求和权限2.1环境要求1.数据库必须是Oracle 10g以上版本(包括10g)2.Data Pump使用expdp生成的.dmp文件,只能使用impdp导入,不能使用imp来进行导入;反之,exp生成的dmp文件,也不能使用impdp进行导入。

2.2在数据库中创建Directory和赋予相应的角色权限(注意:需要使用sys或system用户创建)1.Directory是在数据库中创建的一个指向操作系统中的一个路径目录,导出的数据文件“.dmp”会保存在这里。

(注:先在操作系统上创建目录D:\BACKUP)SQL> create directory dump_file_dir as 'D:\BACKUP';2.创建完后授予用户在此目录读和写的权限SQL> grant read,write on directory dump_file_dir to topo6;3.赋予用户角色权限SQL> grant exp_full_database to topo6;下面以一个例子做示范:例:第3章执行数据的导出3.1导出命令(导出前停止应用程序)C:\>expdp topo6/topo6 directory=dump_file_dir dumpfile=YW_NCC6.0R2_130521 .dmp logfile=YW_NCC6.0R2_130521.log例:(数据文件占用了系统实际空间13G,由于Data Pump在导出时只会对真实已写入的数据块进行导出,空块不会计算在内,这也是速度快的关键)开始导出:导出完毕:对应的操作系统目录中的文件:第4章执行数据的导入1.在需要执行导入的数据库中创建Directory目录,把要导入的.dmp文件拷贝到该目录下SQL> create directory dump_file_dir as 'D:\BACKUP';2.创建完后授予用户在该目录读写的权限SQL> grant read,write on directory dump_file_dir to topo6;3.赋予用户角色权限SQL> grant imp_full_database to topo6;例子:(导入的时间会比较久一些,该例中最后花费30分钟,因为数据导入后,要处理索引和约束)导入前操作系统上对应目录的.dmp文件开始导入:第5章Data Pump的扩展使用5.1并行导入、导出5.1.1并行导出并行可以指定多个dumpfile,parallel的值等于指定dumpfile的数量。

数据泵导lob很慢 -回复

数据泵导lob很慢 -回复

数据泵导lob很慢-回复数据泵导LOB是一项常用的数据迁移和备份技术,然而,有时候数据泵导LOB的速度会变得很慢。

本文将探讨数据泵导LOB变慢的原因,并提供一系列解决方案,帮助读者解决这一问题。

一、问题定义数据泵导LOB是Oracle数据库中常用的数据迁移和备份技术,通过将数据转储到二进制文件中,然后将其重新加载到Oracle数据库中。

然而,有时候在执行数据泵导LOB操作时,我们会发现其速度变得异常缓慢,从而影响了整个数据迁移和备份的进程。

二、问题分析1. 大对象(LOB)的特点LOB是Oracle数据库中一种特殊的数据类型,它可以存储大量的数据,比如文本、图像、音频和视频等。

由于LOB数据的大小通常较大,因此其导入和导出的速度相对较慢。

2. 数据泵导LOB的工作原理数据泵导LOB的过程可以分为三个阶段:导出前处理(Preprocessing)、数据导出(Data Export)和导入后处理(Postprocessing)。

导出前处理阶段主要是为了准备导出的数据,并建立相关的导出环境。

此阶段不涉及实际数据的导出。

数据导出阶段是实际进行数据导出的过程,包括了将LOB数据转储到二进制文件中的操作,同时也包括了其他类型的数据。

导入后处理阶段主要是对导入的数据进行一些必要的后处理工作,比如恢复索引、约束和触发器等。

3. 数据泵导LOB缓慢的原因数据泵导LOB变慢的原因可以有多种,以下是一些常见的原因:- 大对象(LOB)数据的体积较大,需要较长的时间来读取和写入。

- 数据库服务器性能不足或负载过高,造成数据泵导出和导入的速度受限。

- 网络传输速度较慢,导致数据泵的导出和导入速度降低。

- 数据库中存在大量的索引、触发器等附加对象,导致导出和导入过程中的数据操作速度变慢。

三、解决方案在解决数据泵导LOB变慢的问题时,可以从以下几个方面入手:1. 优化数据库服务器性能- 检查并优化数据库服务器的硬件配置,包括处理器、内存、存储等。

oracle 数据泵使用技巧

oracle 数据泵使用技巧

oracle 数据泵使用技巧Oracle 数据泵是一个非常强大的工具,用于在Oracle数据库之间导入和导出数据。

它提供了一种快速和高效的方式,可以将数据从一个数据库迁移到另一个数据库,或者备份和还原数据。

在本文中,我将分享一些使用Oracle数据泵的技巧,希望对您有所帮助。

让我们来了解一下数据泵的基本概念和术语。

数据泵由两个主要组件组成:导出(expdp)和导入(impdp)。

导出是将数据从源数据库导出到文件系统的过程,而导入是将数据从文件系统导入到目标数据库的过程。

在导出和导入过程中,可以使用各种参数和选项来控制数据的导出和导入行为。

一、导出数据1. 导出整个数据库要导出整个数据库,可以使用以下命令:```expdp username/password@database_name directory=directory_name dumpfile=dumpfile_name.dmp full=y```其中,username是数据库用户的名称,password是用户的密码,database_name是数据库的服务名,directory_name是导出文件保存的目录,dumpfile_name.dmp是导出文件的名称。

通过设置full参数为y,可以导出整个数据库。

2. 导出指定的表如果只需要导出特定的表,可以使用tables参数来指定要导出的表的名称:```expdp username/password@database_name directory=directory_name dumpfile=dumpfile_name.dmp tables=table_name```其中,table_name是要导出的表的名称。

可以通过逗号分隔多个表的名称。

3. 导出指定的数据有时候,可能只需要导出表中的部分数据。

可以使用query参数来指定要导出的数据的条件:```expdp username/password@database_name directory=directory_name dumpfile=dumpfile_name.dmp tables=table_name query=condition```其中,condition是指定要导出的数据的条件。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

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,否则无法导入到低版本的数据库中。

a4TABLES:导出的表的名称,如果多个表则用逗号隔开。

a5QUERY:用于指定过滤导出数据的where条件,格式为:
QUERY=TABLE_NAME:"WHERE FIELD_NAME='12345'"。

TABLE_NAME为表名称,FIELD_NAME为字段名称。

可以像SQL语句一样多个条件组合。

a6nologfile:是否生成日志,nologfile=y不生成日志,nologfile=n生成日志。

c)IMPDP主要参数
a1DIRECTORY:导入数据的目录(目录是上面的设定的目录dump_dir)。

a2DUMPFILE:导出的文件名。

a3TABLE_EXISTS_ACTION:该选项用于指定当表已经存在时导入作业要执行的操作,默认为SKIP,TABBLE_EXISTS_ACTION={SKIP| APPEND|TRUNCATE|FRPLACE}。

当设置该选项为SKIP时,导入作业会跳过已存在表处理下一个对象;
当设置为APPEND时,会追加数据,
当设置为TRUNCATE时,导入作业会截断表,然后为其追加新数据;
当设置为REPLACE时,导入作业会删除已存在表,重建表病追加数据。

注意,TRUNCATE选项不适用与簇表和NETWORK_LINK选项。

a4REMAP_SCHEMA:将数据导入到指定用户中,例如:
REMAP_SCHEMA=super:target,即表示将super用户中的对象导入到target用户中。

a5REMAP_TABLESPACE:用于指定导入的表空间,例如:
REMAP_TABLESPACE=SOURCE_TABLESPACE:TARGET_TABLESPACE。

SOURCE_TABLESPACE为源表空间,SOURCE_TABLESPACE为目标表空间。

a6nologfile:是否生成日志,nologfile=y不生成日志,nologfile=n生成日志。

3、数据泵使用常见问题
a)导入数据时错误
错误如下:
ORA-39001: 参数值无效
ORA-39000: 转储文件说明错误
ORA-39142: 版本号2.1 (在转储文件"d:\impzhzs\xsbak2010-12-25.dmp" 中) 不兼容。

错误原因:
出现上面的错误是由于源数据库与目标数据库版本不同造成的。

解决方法:
应在导出时增加VERSION参数,设置为目标数据的版本号。

b)导入数据后无法访问数据表
错误如下:
ORA-28110: 策略函数或程序包DB_ZGSJ.SECURITY_PACKAGE 有错误。

错误原因:
源数据库中的表所在的用户启用了VPD权限。

默认IMPDP后,表的VPD权限也会导入进去,如果用户改变,导入表的VPD权限是只能让原先用户访问,当前的用户没访问权限,所以报上面的错误。

解决方法:
删除VPD权限,查询当前用户的VPD权限,可以通过数据字典视图USER_POLICIES 获得。

假设用户名为USER_NAME,则通过执行下面的语句可以删除当前用户下的所有VPD 权限。

declare
-- Local variables here
i integer;
str_schema varchar2(100) := 'USER_NAME';
str_obj_name varchar2(100) ;
str_group_name varchar2(100);
str_policy_name varchar2(100);
begin
-- Test statements here
for item in (select * from user_policies) loop
str_obj_name := item.object_name;
str_group_name := item.policy_group;
str_policy_name := item.policy_name;
dbms_rls.drop_grouped_policy(object_schema => str_schema,object_name => str_obj_name,
policy_group => str_group_name,policy_name => str_policy_name);
end loop;
for item in (select * from USER_POLICY_GROUPS) loop
str_obj_name := item.object_name;
str_group_name := item.policy_group;
str_policy_name := str_schema;
dbms_rls.delete_policy_group('USER_NAME ‘,str_obj_name,str_group_name);
end loop;
end;。

相关文档
最新文档