oracle expdp/impdp 数据泵导入导出命令

oracle expdp/impdp 数据泵导入导出

# 创建directory,指定导入导出时的数据存储路径
create directory dir_dp as 'd:/database/dir_dp';
# 授权
grant read,write on directory dir_dp to user_name;
# 查看目录及权限
select * from dba_directories;

------------------------------------------------------------
# expdp 数据导出
expdp 用户名/密码@IP/数据库名称 schemas=schema_name directory=dir_dp dumpfile=数据库名称.dmp logfile=数据库名称.exp.log compression=all ;

# DIRECTORY 默认值:DATA_PUMP_DIR,指定导入导出时的数据存储路径
# 示例
expdp hr DIRECTORY=dpump_dir1 DUMPFILE=employees.dmp CONTENT=METADATA_ONLY

# COMPRESSION 数据压缩,指定数据导出时,哪些数据需要进行压缩,默认:METADATA_ONLY
COMPRESSION=[ALL | DATA_ONLY | METADATA_ONLY | NONE]

# CONTENT 导出内容,指定过滤导出类型,默认导出全部;
CONTENT=[ALL | DATA_ONLY | METADATA_ONLY]

# JOB_NAME 指定job名称,用于标识后续动作,如ATTACH
DBA_DATAPUMP_JOBS or USER_DATAPUMP_JOBS VIEW

# NOLOGFILE 禁止日志输出
NOLOGFILE=[YES | NO]

# TABLES 按表导出:
TABLES=[schema_name.]table_name[:partition_name] [, ...]
tables=t1,t2...

# query 按查询条件导出
QUERY = [schema.][table_name:] query_clause
query='"where rownum<11"'

# TABLESPACES 按表空间导出
TABLESPACES=tablespace_name [, ...]

# SCHEMA 按schema导出数据,默认导出当前用户的schema
SCHEMAS=schema_name [, ...]

# FULL 导出整个数据库,默认否;
FULL=[YES | NO]

# INCLUDE 元数据类型过滤
INCLUDE = object_type[:name_clause] [, ...]

INCLUDE=TABLE:"IN ('EMPLOYEES', 'DEPARTMENTS')"
INCLUDE=PROCEDURE
INCLUDE=INDEX:"LIKE 'EMP%'"

# EXCLUDE 导出时排除元数据类型

# NETWORK_LINK 网络连接,指定网络数据源
NETWORK_LINK=database_link
expdp hr DIRECTORY=dpump_dir1 NETWORK_LINK=source_database_link DUMPFILE=network_export.dmp LOGFILE=network_export.log

# ATTACH 连接job,如果当前用户下仅有一个job,则默认关联该job
ATTACH [=[schema_name.]job_name]
# 示例
expdp hr ATTACH=hr.export_job

# PARFILE 指定导出参数文件
PARFILE=[directory_path]file_name

############################################################
# impdp 数据导入
impdp 用户名/密码@IP/数据库名称 directory=dir_dp dumpfile=file.dmp logfile=数据库名称.imp.log job_name=my_job

# REMAP_SCHEMA 导入时将对象从源schema加载到目标schema
REMAP_SCHEMA=source_schema:target_schema
# 示例
REMAP_SCHEMA=hr:scott

# REMAP_TABLE 导入时将原表重命名新表
REMAP_TABLE=[schema.]old_tablename[.partition]:new_tablename
# 示例
REMAP_TABLE=hr.employees:emps 

# REMAP_TABLESPACE 导入时将源表空间的对象导入到目标表空间
REMAP_TABLESPACE=source_tablespace:target_tablespace
# 示例
REMAP_TABLESPACE=tbs_1:tbs_6

# TABLE_EXISTS_ACTION 表存在时如何处理,默认为SKIP,如果content=data_only,默认值为 append
TABLE_EXISTS_ACTION=[SKIP | APPEND | TRUNCATE | REPLACE]
1、skip:默认操作,如果content=data_only,设置无效;
2replace:先drop表,然后创建表,最后插入数据
3、append:在原来数据的基础上增加数据
4truncate:先truncate,然后再插入数据,如果content=data_only,设置无效;

------------------------------------------------------------
# 使用参数文件parfile导出数据

例如需要导出表 my_table,且需要限定业务时间范围,则新建par文件,如下:
# my_table.par
directory=dbname_dp 
dumpfile=my_table.all.dmp 
logfile=my_table.all.imp.log 
tables=my_table 
query=" where check_time >=to_date('2016-07-21','yyyy-mm-dd')" 
job_name=dbname_exp_job
compression=all # 仅导出时使用
table_exists_action=append # 仅导入时使用

# 导出命令执行parfile
expdp 用户名/密码@IP/数据库名称 parfile=my_table.par
# 导入命令
impdp 用户名/密码@IP/数据库名称 parfile=my_table.par

------------------------------------------------------------
# expdp 停止导出
expdp user/pwd@dbname ***
ctl+c 进入交互命令行:
export>stop_job=immediate
are you sure you wish to stop this job ([yes]/no): yes   

# 查看导出任务视图
select * from dba_datapump_jobs;

------------------------------------------------------------
# 监控impdp/expdp的进度方法
# 首先是使用语句,查找正在执行的任务
select * from dba_datapump_jobs;
# 设置attach 为 job_name 查看进度。  
expdp system/oracle attach=sys_export_schema_01

参考:
https://docs.oracle.com/cd/E11882_01/server.112/e22490/dp_export.htm#SUTIL836
https://docs.oracle.com/cd/E11882_01/server.112/e22490/dp_import.htm#SUTIL300

你可能感兴趣的:(oracle)