第4章 expdp/impdp命令详解
4.1 expdp/impdp简介
expdp和impdp是oracle数据库之间移动数据的工具。expdp和impdp只能在数据库服务端使用,不能在客户端使用。
4.2 expdp参数
attach=[schema_name.]job_name
说明:nodefault。连接到作业,进入交互模式。
导出模式,以下五个参数互斥。
full=[yes|no]
说明:nodefault。导出所有数据和元数据。要执行完全导出,需要具有datapump_exp_full_database角色。
schemas=schema_name[,…]
说明:default current user’s schema。导出用户。
tables=[schema_name.]table_name[:partition_name][,…]
说明:nodefault。导出表。
tablespaces=tablespace_name[,…]
说明:nodefault。导出表空间。
transport_tablespaces=tablespace_name[,…]
说明:nodefault。导出可移动表空间。
过滤条件,以下三个参数互斥:
query=[schema.][table_name:] query_clause
说明:nodefault。按查询条件导出。
exclude=object_type[:name_clause][,…]
说明:nodefault。排除特定的对象类型。
include=object_type[:name_clause][,…]
说明:nodefault。包括特定的对象类型。
其他参数:
directory=directory_object
说明:default:data_pump_dir。导出路径。
dumpfile=[directory_object:]file_name[,…]
说明:default:expdat.dmp。导出的文件名。
logfile=[directory_object:]file_name
说明:default:export.log。导出的日志文件名。
content=[all|data_only|metadata_only]
说明:default:all。指定要导出的数据。
parallel=integer
说明:default:1。并行度,该值应小于等于dmp文件数量,或可以为’dumpfile=‘使用替换变量’%U’。
RAC环境中,并行度大于1时,注意目录应该为共享目录。
compression=[all|data_only|metadata_only|none]
说明:default:metadata_only。压缩。
parfile=[directory_path]file_name
说明:nodefault。指定导出参数文件名称。
network_link=source_database_link
说明:nodefault。连接到源数据库进行导出。
filesize=integer[b|kb|mb|gb|tb]
说明:default:0不限制大小。指定每个dmp文件的最大大小。
如果此参数小于将要导出的数据大小,将报错ORA-39095。
job_name=jobname_string
说明:default:system-generated name of the form SYS_EXPORT__NN。指定job名称。
version=[compatilble|latest|version_string]
说明:default:compatible。默认兼容模式,可以指定导出dmp文件的版本。
4.3 impdp参数
attach=[schema_name.]job_name
说明:nodefault。连接到作业,进入交互模式。
导入模式,以下五个参数互斥。
full=[yes|no]
说明:default:yes。导入dmp文件的所有数据和元数据。
schemas=schema_name[,…]
说明:nodefault。导入用户。
tables=[schema_name.]table_name[:partition_name][,…]
说明:nodefault。导入表。
tablespaces=tablespace_name[,…]
说明:nodefault。导入表空间。
transport_tablespaces=tablespace_name[,…]
说明:nodefault。导入可移动表空间。
过滤条件,以下三个参数互斥:
query=[schema.][table_name:] query_clause
说明:nodefault。按查询条件导入。
exclude=object_type[:name_clause][,…]
说明:nodefault。排除特定的对象类型。
include=object_type[:name_clause][,…]
说明:nodefault。包括特定的对象类型。
其他参数:
directory=directory_object
说明:default:data_pump_dir。导入路径。
dumpfile=[directory_object:]file_name[,…]
说明:default:expdat.dmp。导入的文件名。
logfile=[directory_object:]file_name
说明:default:export.log。导入的日志文件名。
content=[all|data_only|metadata_only]
说明:default:all。指定要导入的数据。
parallel=integer
说明:default:1。并行度,该值应小于等于dmp文件数量,或可以为’dumpfile=‘使用替换变量’%U’。
compression=[all|data_only|metadata_only|none]
说明:default:metadata_only。压缩。
parfile=[directory_path]file_name
说明:nodefault。指定导入参数文件名称。
network_link=source_database_link
说明:nodefault。连接到源数据库进行导入。
job_name=jobname_string
说明:default:system-generated name of the form SYS_EXPORT__NN。指定job名称。
version=[compatilble|latest|version_string]
说明:default:compatible。默认兼容模式,可以指定导入dmp文件的版本。
REMAP_TABLE=[schema.]old_tablename[.partition]:new_tablename
说明:nodefault。允许导入期间重命名表名。
REMAP_SCHEMA=source_schema:target_schema
说明:nodefault。允许导入期间重命名schema名。
REMAP_TABLESPACE=source_tablespace:target_tablespace
说明:nodefault。允许导入期间重命名表空间名。
TRANSFORM = transform_name:value[:object_type]
说明:nodefault。允许改正正在导入的对象的DDL。
SQLFILE=[directory_object:]file_name
说明:nodefault。根据其他参数,将所有的 SQL DDL 写入指定的文件。
TABLE_EXISTS_ACTION=[SKIP | APPEND | TRUNCATE | REPLACE]
说明:default:skip(if content=data_only is specified,then the default is append)
4.4 expdp、impdp实战案例
4.4.1 环境准备
一、创建逻辑目录,该命令不会在操作系统创建真正的目录,最好以system等管理员创建。
create directory dtest as ‘/u01/dmp’;
二、查看管理理员目录(同时查看操作系统是否存在,因为Oracle并不关心该目录是否存在,如果不存在,则出错)
select * from dba_directories
三、给scott用户赋予在指定目录的操作权限,最好以system等管理员赋予。
grant read,write on directory dtest to system;
4.4.2 Expdp导出案例
1、导出一张表,例:
expdp system/oracle directory=DTEST dumpfile=ab01.dmp logfile=ab01.log tables=HUANGWEI.AB01
2、导出多张表,例:
expdp system/oracle directory=DTEST dumpfile=two_table.dmp logfile=two_table.log tables=(HUANGWEI.AB01,huangwei.ab02)
3、导出一个用户(导出这个用户的所有对象),例:
expdp system/oracle directory=DTEST dumpfile=expuser.dmp logfile=expuser.log schemas=huangwei
4、导出多个用户,例:
expdp system/oracle directory=DTEST dumpfile=expuser_all.dmp logfile=expuser_all.log schemas=(huangwei,hr)
5、导出整个数据库(sys、ordsys、mdsys的用户数据不会被导出)例:
expdp system/oracle directory=DTEST dumpfile=all_full.dmp logfile=all_full.log full=y
以导出一个用户为例
##并行导出:
expdp system/oracle directory=DTEST dumpfile=expdp%U.dmp logfile=expdp.log schemas=huangwei parallel=5
##导出用户元数据(包含表定义、存储过程、函数等等):
expdp system/oracle directory=DTEST dumpfile=expdp_meta.dmp logfile=expdp_meta.log schemas=huangwei content=metadata_only
##导出用户存储过程,例:
expdp system/oracle directory=DTEST dumpfile=expdp_proc.dmp logfile=expdp_proc.log schemas=huangwei include=procedure
##导出用户函数和视图,例:
expdp system/oracle directory=DTEST dumpfile=expdp_func.dmp logfile=expdp_func.log schemas=huangwei include=(function,view)
##导出一个用户,但不包括索引,例:
expdp system/oracle directory=DTEST dumpfile=expdp_index.dmp logfile=expdp_index.log schemas=huangwei exclude=index
4.4.3 impdp导出案例
1、导入dmp文件中的所有数据,例:
impdp system/oracle directory=DTEST dumpfile=expdp.dmp logfile=impdp.log full=y
2、导入一张表,例:
impdp system/oracle directory=DTEST dumpfile=expdp.dmp logfile=impdp.log tables=scott.emp
3、导入多张表,例:
impdp system/oracle directory=DTEST dumpfile=expdp.dmp logfile=impdp.log tables=(scott.emp,scott.dept)
4、导入一个用户,例:
impdp system/oracle directory=DTEST dumpfile=expdp.dmp logfile=impdp.log schemas=scott
5、导入多个用户,例:
impdp system/oracle directory=DTEST dumpfile=expdp.dmp logfile=impdp.log schemas=(scott,hr)
以导入dmp文件中的所有数据为例
##并行导入:
impdp system/oracle directory=DTEST dumpfile=expdp%U.dmp logfile=impdp.log parallel=5
##导入元数据(包含表定义、存储过程、函数等等):
impdp system/oracle directory=DTEST dumpfile=expdp.dmp logfile=impdp.log content=metadata_only
##导入存储过程,例:
impdp system/oracle directory=DTEST dumpfile=expdp.dmp logfile=impdp.log include=procedure
##导入函数和视图,例:
impdp system/oracle directory=DTEST dumpfile=expdp.dmp logfile=impdp.log include=(function,view)
##导入数据,但不包括索引,例:
impdp system/oracle directory=DTEST dumpfile=expdp.dmp logfile=impdp.log exclude=index
##重命名表名导入,例:
impdp system/oracle directory=DTEST dumpfile=expdp.dmp logfile=impdp.log remap_table=scott.emp:emp1
##重命名schema名导入,例:
impdp system/oracle directory=DTEST dumpfile=expdp.dmp logfile=impdp.log remap_schema=scott:tim
##重命名表空间名导入,例:
impdp system/oracle directory=DTEST dumpfile=expdp.dmp logfile=impdp.log remap_tablespace=users:apptbs
##导入时,忽略所有对象的段属性,这样导入时对象都创建在目标数据库用户默认的表空间上。
impdp system/oracle directory=DTEST dumpfile=expdp.dmp logfile=impdp.log transform=segment_attributes:n
##将dmp文件的ddl语句导入到一个文件,不导入数据库,例:
impdp system/oracle directory=DTEST dumpfile=expdp.dmp logfile=impdp.log sqlfile=import.sql
4.5 后台运行导出或导入脚本
Nohup impdp system/oracle directory=DTEST dumpfile=expdp.dmp logfile=impdp.log schemas=scott &
本文详细介绍了Oracle数据库的导出工具expdp和导入工具impdp,包括各自的参数选项,如全库导出、指定表空间、过滤条件等,并通过实际案例展示了如何进行数据的导出和导入操作,涉及并行度、重命名表和表空间等功能。
1435

被折叠的 条评论
为什么被折叠?



