oracle数据泵为什么,绝对干货!|Oracle 数据泵命令全解析

e063a75c42b297275d88626d1e2b5704.png

绝对干货!|Oracle 数据泵命令全解析引言

Oracle数据库之间迁移数据可以采用的最有效的工具之一就是

数据泵(expdp/impdp)。但是expdp和impdp只能在数据库服务端使用,不能在客户端使用。

笔者结合自身经验总结了expdp和impdp常用到的命令,部分信息参考Oracle官方文档。

一、directory:select * from dba_directories;

create directory mydata as '/home/oracle';

grant read,write on directory mydata to username;二、expdp命令解析

1、导数的数据库用户需要拥有对directory_object的读写权限。

2、操作系统中需要已经存在directory_object指定的路径。

3、oracle用户拥有对directory_object指定路径的读写权限。

4、system用户导出用户,会将创建用户和授予系统权限的元数据也导出,普通用户不能导出这些元数据。

expdp命令示例

导出一张表:expdp username/passwd directory=mydata dumpfile=expdp.dmp logfile=expdp.log tables=tablename导出多张表:expdp username/passwd directory=mydata dumpfile=expdp.dmp logfile=expdp.log tables=tablename1,tablename2导出一个用户:expdp username/passwd directory=mydata dumpfile=expdp.dmp logfile=expdp.log schemas=username导出多个用户:expdp username/passwd directory=mydata dumpfile=expdp.dmp logfile=expdp.log schemas=username1,username2以下以导出一个用户为例

并行导出:expdp username/passwd directory=mydata dumpfile=expdp%U.dmp logfile=expdp.log schemas=username parallel=8导出用户元数据(包含表定义、存储过程、函数等):expdp username/passwd directory=mydata dumpfile=expdp.dmp logfile=expdp.log schemas=username content=metadata_only导出用户存储过程:expdp username/passwd directory=mydata dumpfile=expdp.dmp logfile=expdp.log schemas=username include=procedure导出用户函数和视图:expdp username/passwd directory=mydata dumpfile=expdp.dmp logfile=expdp.log schemas=scott include=function,view导出一个用户,但不包括索引:expdp username/passwd directory=mydata dumpfile=expdp.dmp logfile=expdp.log schemas=scott exclude=indexexpdp参数说明:

连接到作业,进入交互模式。attach=[schema_name.]job_name以下五个参数互斥导出所有数据和元数据。full=[yes|no]导出用户。schemas=schema_name[...]导出表。tables=[schema_name.]table_name[:partition_name][,...]导出表空间。tablespaces=tablespace_name[,...]导出可移动表空间。transport_tablespaces=tablespace_name[,...]以下三个条件互斥按查询条件导出。query=[schema.][table_name:] query_clause排除特定的对象类型。exclude=object_type[:name_clause][,...]包括特定的对象类型。include=object_type[:name_clause][,...]其他参数:导出路径。directory=directory_objectexpdat.dmp。导出的文件名。dumpfile=[directory_object:]file_name[,...]export.log。导出的日志文件名。logfile=[directory_object:]file_name指定要导出的数据,默认all。content=[all|data_only|metadata_only]并行度,默认1,该值应小于等于dmp文件数量parallel=integer压缩,默认metadata_onlycompression=[all|data_only|metadata_only|none]指定导出参数文件名称。parfile=[directory_path]file_name连接到源数据库进行导出。network_link=source_database_link指定每个dmp文件的最大大小,默认0不限制大小。

如果此参数小于将要导出的数据大小,将报错ORA-39095。filesize=integer[b|kb|mb|gb|tb]指定job名称。job_name=jobname默认兼容模式,可以指定导出dmp文件的版本。version=[compatilble|latest|version_string]三、impdp命令解析

1、expdp导出的文件不能使用imp导入,只能通过impdp导入数据库。

2、导入时遇到已存在的对象,默认会跳过这个对象,继续导入其他对象。

3、导入时应确认dmp文件和目标数据库的tablespace、schema是否对应。

4、导入dmp文件时,应确定dmp文件导出时的命令,以便顺利导入数据。impdp命令示例导入dmp文件中的所有数据:impdp username/passwd directory=mydata dumpfile=expdp.dmp logfile=impdp.log full=y导入一张表,例:impdp username/passwd directory=mydata dumpfile=expdp.dmp logfile=impdp.log tables=tablename导入多张表,例:impdp username/passwd directory=mydata dumpfile=expdp.dmp logfile=impdp.log tables=tablename1,tablename2导入一个用户,例:impdp username/passwd directory=mydata dumpfile=expdp.dmp logfile=impdp.log schemas=username导入多个用户,例:impdp username/passwd directory=mydata dumpfile=expdp.dmp logfile=impdp.log schemas=username1,username2以导入dmp文件中的所有数据为例

并行导入:impdp username/passwd directory=mydata dumpfile=expdp.dmp logfile=impdp.log parallel=8导入元数据(包含表定义、存储过程、函数等等):impdp username/passwd directory=mydata dumpfile=expdp.dmp logfile=impdp.log content=metadata_only导入存储过程:impdp username/passwd directory=mydata dumpfile=expdp.dmp logfile=impdp.log include=procedure导入函数和视图:impdp username/passwd directory=mydata dumpfile=expdp.dmp logfile=impdp.log include=function,view导入数据,但不包括索引:impdp username/passwd directory=mydata dumpfile=expdp.dmp logfile=impdp.log exclude=index重命名表名导入:impdp username/passwd directory=mydata dumpfile=expdp.dmp logfile=impdp.log remap_table=tablename1:tablename2重命名schema名导入:impdp username/passwd directory=mydata dumpfile=expdp.dmp logfile=impdp.log remap_schema=username1:username2重命名表空间名导入:impdp username/passwd directory=mydata dumpfile=expdp.dmp logfile=impdp.log remap_tablespace=tablespacename1:tablespacename2导入时,忽略所有对象的段属性,这样导入时对象都创建在目标数据库用户默认的表空间上。impdp username/passwd directory=mydata dumpfile=expdp.dmp logfile=impdp.log transform=segment_attributes:nimpdp参数说明

连接到作业,进入交互模式。attach=[schema_name.]job_name以下五个参数互斥导入dmp文件的所有数据和元数据,默认yefull=[yes|no]导入用户。schemas=schema_name[,...]导入表。tables=[schema_name.]table_name[:partition_name][,...]导入表空间。tablespaces=tablespace_name[,...]导入可移动表空间。transport_tablespaces=tablespace_name[,...]以下三个参数互斥:按查询条件导入。query=[schema.][table_name:] query_clause排除特定的对象类型。exclude=object_type[:name_clause][,...]包括特定的对象类型。include=object_type[:name_clause][,...]其他参数:

导入路径directory=directory_object导入的文件名。dumpfile=[directory_object:]file_name[,...]导入的日志文件名。logfile=[directory_object:]file_name指定要导入的数据,默认allcontent=[all|data_only|metadata_only]并行度,该值应小于等于dmp文件数量,默认1parallel=integer压缩,默认metadata_onlycompression=[all|data_only|metadata_only|none]指定导入参数文件名称。parfile=[directory_path]file_name连接到源数据库进行导入。network_link=source_database_link指定job名称。job_name=jobname默认兼容模式,可以指定导入dmp文件的版本。version=[compatilble|latest|version_string]允许导入期间重命名表名。REMAP_TABLE=[schema.]old_tablename[.partition]:new_tablename允许导入期间重命名schema名REMAP_SCHEMA=source_schema:target_schema允许导入期间重命名表空间名。REMAP_TABLESPACE=source_tablespace:target_tablespace默认skipTABLE_EXISTS_ACTION=[SKIP | APPEND | TRUNCATE | REPLACE]四、部分报错总结

1、系统目录未建立报错:ORA-39002: invalid operation

ORA-39070: Unable to open the log file.

ORA-29283: invalid file operation

ORA-06512: at "SYS.UTL_FILE", line 536

ORA-29283: invalid file operation2、impdp导入exp导出的dmp文件,报错:ORA-39000: bad dump file specification

ORA-39143: dump file "/home/oracle/expdp.dmp" may be an original export dump file3、如果导出的数据库版本比导入的数据版本高,需要在导出时加上参数version=要导入的数据库版本。否则报错:ORA-39001: invalid argument value

ORA-39000: bad dump file specification

ORA-31640: unable to open dump file "/home/oracle/expdp.dmp" for read

ORA-27037: unable to obtain file status

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值