700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > oracle 数据泵导入导出 expdp/impdp

oracle 数据泵导入导出 expdp/impdp

时间:2023-11-04 08:14:08

相关推荐

oracle 数据泵导入导出 expdp/impdp

一、 导出/入前检查

查看用户默认表空间

select USERNAME,DEFAULT_TABLESPACE,TEMPORARY_TABLESPACE from dba_users where USERNAME='USER_NAME';

查看表空间对应数据文件

select tablespace_name,file_name from dba_data_files where tablespace_name='TBSNAME';

查询目录实际路径

select OWNER,DIRECTORY_PATH from dba_directories where DIRECTORY_NAME='DATA_PUMP_DIR';

目录属主授权

grant read,write on directory DATA_PUMP_DIR to system;

或者system用户登录创建目录

alter user system identified by "xxxxx";create or replace directory DATA_PUMP as '/data/tmp';

二、 导出数据

1. 常用选项

排除指定表 EXCLUDE=导出指定表 tables=导出表名带关键字的表 INCLUDE=TABLE:\"LIKE \'%BAK%\'\"只导表结构 CONTENT=METADATA_ONLY只导表数据 CONTENT=data_only输出日志 logfile=expdp1026.log指定并行度 PARALLEL=4压缩 compression=all (测试压缩比约为8:1,但对导出性能有影响)指定版本(高版本导至低版本)version=12.1.0.2.0

2. 导出例子

导出指定用户所有数据

expdp system DIRECTORY=DATA_PUMP schemas=USER_NAME dumpfile=USER_NAME1025.dmp logfile=USER_NAME1025.log

导出指定用户所有数据(排除 IM_HIS 和 IM_OR_HIS表)

expdp system@mydb schemas=user_name dumpfile=user_name.dump DIRECTORY=DATA_PUMP_DIR EXCLUDE=TABLE:\"IN\(\'IM_HIS\',\'IM_OR_HIS\'\)\"

导出用户指定表

expdp system DIRECTORY=DATA_PUMP tables=USER_NAME.t1,USER_NAME.t2,USER_NAME.t3 dumpfile=USER_NAME1206.dmp

导出用户下表名带指定关键字的表

expdp system DIRECTORY=DATA_PUMP schemas=USER_NAME INCLUDE=TABLE:\"LIKE \'%BAK%\'\" dumpfile=USER_NAME1206.dmp logfile=USER_NAME1206.log

高版本导入12.1.0.2版本数据

expdp system@orcl_dev schemas=user1,user2 dumpfile=orcl.dump version=12.1.0.2.0 DIRECTORY=DATA_PUMP_DIR;

只导出用户元数据,且不包含统计信息

expdp system directory=jy schemas=scott content=metadata_only exclude=statistics dumpfile=scott_meta.dmp logfile=scott_meta.log

三、 导入数据

0. 注意事项

注意先检查目标表空间是否存在检查目标磁盘空间及表空间大小导入时注意检查DB等待事件及alert log,出现异常时及时处理

1. 常用选项

导入新用户下 REMAP_SCHEMA=old:new导入新表空间下 remap_tablespace=old:new导入时重命名表REMAP_TABLE=scott.T_OLD:T_NEW只导表结构 CONTENT=METADATA_ONLY指定并行度 PARALLEL=4目标库与源库相同 transform=oid:n将dmp文件转为sql语句(不真正导入)sqlfile=xxx.sql指定表已存在时动作 table_exists_action

table_exists_action的值如下:

不指定:表已存在会报错skip:跳过已存在表并处理下一个对象(不安全,谨慎使用)append:为表追加数据(不安全,谨慎使用)truncate:截断已存在表然后插入新数据(不安全,谨慎使用)replace:删除已存在表,重建并插入数据(不安全,谨慎使用)

2. 导入例子

导入前准备(可选)

create tablespace tbs datafile size 2g autoextend on next 100m maxsize 30g;create role role_user;grant CREATE JOB,CREATE MATERIALIZED VIEW,CREATE PUBLIC DATABASE LINK,CREATE PUBLIC SYNONYM,CREATE VIEW,ALTER SESSION to role_user;create user USER_NAME identified by "xxxx";ALTER USER USER_NAME QUOTA UNLIMITED ON tbs;grant role_user,connect,resource to USER_NAME;alter user USER_NAME default tablespace tbs;--drop tablespace tbs including contents and datafiles;--drop user USER_NAME cascade;

导入指定用户数据(需要与源库相同数据/temp表空间存在)

impdp system DIRECTORY=DATA_PUMP schemas=USER_NAME dumpfile=USER_NAME1025.dmp logfile=USER_NAME1025.log

导入指定用户部分表

impdp system DIRECTORY=DATA_PUMP schemas=USER_NAME tables=USER_NAME.t1,USER_NAME.t2,USER_NAME.t3 dumpfile=USER_NAME1206.dmplogfile=USER_NAME1026.log

导入到其他用户及表空间

impdp system DIRECTORY=DATA_PUMP schemas=USER_NAME dumpfile=USER_NAME1206.dmp remap_schema=USER_NAME:userbakremap_tablespace=old:newlogfile=USER_NAME1026.log

导入时重命名表

impdp system/oracle directory=dump dumpfile=expdp_T_A.dmp logfile= t_a.log REMAP_TABLE=scott.T_A:EMPS

目标库与源库相同

type默认不能导入到相同的数据库中,因为type的创建SQL中包含源库oid信息,导入时会引起oid冲突,进而导致相关表不能创建。可以使用impdp的transform参数重新生成原有dmp文件中的oid映射,transform=oid:n含义为不加载oid信息而重新生成。

impdp scottback/scottback@wilson directory=my_dir dumpfile=scott.dmp logfile=resimp2.log remap_schema=scott:scottback transform=oid:n

将dmp文件转为sql语句(不真正导入)

impdp scott/tiger directory=dir_name dumpfile=myfile sqlfile=xyz.sql

四、expdp/impdp管理

交互式命令列表

查看dump job信息

select * from dba_datapump_jobs;

连接到现有dump job(查看dump进度)

--设置attach为job_name即可查看进度。expdp system/oracle attach=SYS_EXPORT_SCHEMA_01--或者impdp system/oracle attach=SYS_EXPORT_SCHEMA_01

输出大致如下

[oracle@ocm1 ~]$ expdp system/oracle attach=SYS_EXPORT_SCHEMA_01...Job: SYS_EXPORT_SCHEMA_01Owner: SYSTEMOperation: EXPORTCreator Privs: TRUE GUID: 482CA277B7350F88E053479DA8C00EFBStart Time: Friday, 10 February, 20:57:05Mode: SCHEMAInstance: PROD1Max Parallelism: 1EXPORT Job Parameters:Parameter NameParameter Value:CLIENT_COMMAND system/******** schemas=eoda directory=ext dumpfile=eoda.dmp State: EXECUTING Bytes Processed: 2,113,260,264Percent Done: 65Current Parallelism: 1Job Error Count: 0Dump File: /home/oracle/ext/eoda.dmpbytes written: 2,113,449,984Worker 1 Status:Process Name: DW00State: EXECUTING Object Schema: EODAObject Name: NEW_TABLE <---------Object Type: SCHEMA_EXPORT/TABLE/TABLE_DATA <---------Completed Objects: 3Total Objects: 52Completed Rows: 1,338,029 <---------Worker Parallelism: 1

暂停dump job

执行ctrl+c # 或者 expdp system/oracle attach=SYS_EXPORT_SCHEMA_02Export> STOP_JOB

开始暂停的dump job

Export> START_JOBExport> CONTINUE_CLIENT# 重新启动暂停的dump job并跳过当前导入/出的对象Export> START_JOB=SKIP_CURRENT=YES

终止dump job

expdp system/oracle attach=SYS_EXPORT_SCHEMA_02Export>stop_job=immediate# 或者KILL_JOB

参考

Commands Available in Import's Interactive-Command Mode

/huacw/p/3888807.html

/gxc1222/article/details/79272766/

Kill, cancel, resume or restart datapump expdp and impdp jobs (ORA-31626, ORA-31633, ORA-06512, ORA-00955) - Oracle 48

Oracle数据泵(Data Dump)错误汇集 - 潇湘隐者 - 博客园

convert expdp dmp file to SQL DDL statements

如何清除 DBA_DATAPUMP_JOBS 视图中的异常数据泵作业?(文档 ID 1626201.1)

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。