Oracle Data Pump 数据泵

数据泵

导出部分:

1.创建directory对象

SQL> create or replace directory scott_dir_test as '/data/dumpdir';--如果是多租户数据库的话一定要注意在不是在pdb下面执行的;

目录对象创建后需要给使用用户授权:

SQL> grant read,write on directory scott_dir_test to scott; --关于权限问题,如果scott具有DBA的权限是不需要授予的;

2.参数说明

2.1 directory

directory 指向文件保存的directory对象,也就是我们使用create or replace directory创建的directory对象;

2.2 dumpfile

dumpfile 用来指定我们生成的数据泵文件
1)非并行作业(paralell opration):不需要特别指定paralell参数(默认为1);
2)并行作业(paralell opration):dumpfile参数使用逗号分隔多个文件,parallel参数值等于dumpfile的指定文件数量;
%U:替换变量,将从01开始直到99,生成的文件个数与parallel的参数值一致;

expdp scott/tiger@192.168.88.20:1521/pdb_orcl1 directory=scott_dir_test dumpfile=scott_expdp_%U.dmp paralell=3

2.3 filesize

可选参数,该参数用来指定导出文件的大小:filesize=100M
2.4 parfile
用来指定参数文件,使用参数文件代替又长又臭的命令行参数
我们创建parfile:

[oracle@server parfile]$ cat scott_expdp_par.txt
userid=scott/tiger@192.168.88.20:1521/pdb_orcl1
directory=scott_dir_test
pumpfile=scott_expdp_1227.dmp
reuse_dumpfiles=Y
tables=EMPLOYEES

调用参数文件执行:

[oracle@server parfile]$ expdp parfile=scott_expdp_par.txt

2.5 LOGFILE

LOGFILE参数用来为导出任务指定生成一份日志文件,不指定的话会生成export.log的日志文件

2.6 NOLOGFILE

使用NOLOGFILE参数,Oracle将不产生日志文件但是可以在会话框看到作业动态。

2.7 REUSE_DUMPFILES

REUSE_DUMPFILES如果导出文件已经存在,是否覆盖(默认不覆盖):reuse_dumpfiles=Y/N;

2.8 COMPRESSION

压缩参数,可以指定对何种类型数据进行压缩操作
ALL:压缩所有:COMPRESSION=ALL
DATA_ONLY:仅数据被压缩:COMPRESSION=DATA_ALL
METADASTA_ONLY:只有元数据被压缩(默认压缩方式),元数据是对数据的表述,表结构之类信息:COMPRESSION=METADATA_ONLY
NONE:不进行压缩:COMPRESSION=NONE

3.导出方式

导出方式分为全库导出、schema级导出、表空间级导出、表级导出,具体的导出方式需要按照你的需求酌情考量

3.1 全库导出

需使用full参数(导出用户要具有相应权限)

expdp scott/tiger@192.168.88.20:1521/pdb_orcl1 directory=scott_dir_test dumpfile=scott_expdp_1227.dmp reuse_dumpfiles=Y full=Y

或者使用

expdp scott/tiger@192.168.88.20:1521/pdb_orcl1 dumpfile=scott_dir_test:scott_expdp_1227.dmp reuse_dumpfiles=Y full=Y  

3.2 schema级导出

expdp scott/tiger@192.168.88.20:1521/pdb_orcl1 dumpfile=scott_dir_test:scott_expdp_1227.dmp reuse_dumpfiles=Y schemas =scott

3.3 表空间级导出

若使用TRANSPORT_TABLESPACES option那么将只导出一个或者多个表空间的对象的matedata

expdp scott/tiger@192.168.88.20:1521/pdb_orcl1 dumpfile=scott_dir_test:scott_expdp_1227.dmp reuse_dumpfiles=Y tablespaces =scott_data_ts;

3.4 表级导出

expdp scott/tiger@192.168.88.20:1521/pdb_orcl1 dumpfile=scott_dir_test:scott_expdp_1227.dmp reuse_dumpfiles=Y tables=EMPLOYEES

4.对象过滤

4.1 CONTENT

CONTENT=ALL:导出表与表数据以及其它对象的定义(默认为ALL)
CONTENT=DATA_ONLY:只导出表数据
CONTENT=METADATA_ONLY:只导出元数据

4.2 EXCLUDE

exclude=table:"in('TABLE_1','TABLE_2')"  --会报错:ORA-39071: Value for EXCLUDE is badly formed
exclude=table:\" in\(\'TABLE_1\',\'TABLE_2\'\) \" --不会报错

使用参数文件也是不会报错的,建议使用参数文件
同样地我们可以对:index、procedure、function、schema进行筛选

attention: CONTENT=DATA_ONLY情况下EXCLUDE参数不适用 EXCLUDE和INCLUDE参数不可同时使用

4.3 INCLUDE

include=table:\" in\(\'TABLE_1\',\'TABLE_2\'\) \"

attention: CONTENT=DATA_ONLY情况下INCLUDE参数不适用 EXCLUDE和INCLUDE参数不可同时使用

4.5 QUERY

可以指定符合条件字段的记录导出

query=EMPLOYEES:\"where dept=\'DBA\'\"

使用逗号分割实现多个表的条件筛选

4.6 SAMPLE

对于一些表,我们可能不需要全部的数据,使用sample参数可以指定抽取百分比级数据量、
sample=50:抽取50%数据

sample="TABLE_1":50,"TABLE_2":50

5.作业参数

5.1 job_name

用来指定导出作业的名称,也可以不定义,系统会自动给分配作业名称。

job_name=scott_expdp_job

5.2 status

status参数用来指定目标时间间隔,输出当前作业完成度百分比,状态等,其单位是秒级单位

status=1

5.3 paralell

可以与指定dumpfile的数量,paralell参数大小的设定应该参考CPU的核心数,否则会带来不必要的性能影响

导入部分:

导入的角色也应该具备有相应的额权限;
1.参数说明
与expdp保持一致的参数:PARALLEL、directory、dumpfile、logfile、nologfile、ontent、exclude、include、query、job_name、status、parallel
差异参数:
sqlfile参数可以导出dmp文件中的DDL语句,生成指定文件sqlfile=scott_imp_sqlfile.sql
table_exists_action针对目标端已经存在将要导入的表的处理:
1)table_exists_action=skip:跳过已经存在表的数据导入
2)table_exists_action=append:追加数据到已有表中(注意非空且唯一的数据,遇到冲突将不能导入)
3)table_exists_action=truncate:先清空表再进行导入
4)table_exists_action=replace:先drop再新建并导入

2.重映射

2.1 remap_table

表名重映射,如果你使用TABLE_A作为导出表但是在目标端想使用TABLE_B作为导入表那么可以使用该参数

remap_table=TABLE_A:TABLE_B
impdp scott/tiger@192.168.88.20:1521/pdb_orcl1 dumpfile=scott_dir_test:scott_expdp_1227.dmp  tables=EMPLOYEES table_exists_action=replace remap_table=employees:workers;

2.2 remap_schema

模式重映射,如果你使用的是scott用户进行对象导出但是在目标端想使用HR用户进行对象导入,那么就可以使用该参数

remap_schema=scott:hr

2.3 remap_tablespace

表空间重映射,如果你使用的是TS_A作为源对象的表空间但是在目标端想使用TS_B作为目标对象导入的表空间,那么就可以使用该参数

remap_tablespace=TS_A:TS_B

2.4 remap_data

被大众成为数据脱敏参数,我们可以使用不同的数据来替代掉源字段的数据

remap_data=scott.employees.dept:scott.table_temp.A

交互参数

对于正在运行的有些job我们希望仍然可以对其进行操作,那么我们可以使用交互式命令进行。
进入交互界面
1)使用Ctrl+C,从正在执行任务的窗口进入到交互界面
2)使用attach:expdp userid=scott/tiger attach=job的名字
主要命令
help:帮助命令可以用来展示所有命令及其使用方式
stop_job:用来停止当前的job
start_job:用来启动当前处于停止状态的job
kill_job:终止任务并释放资源
exit_client:可以让当前正在运行的job在后台运行,不占用当前前台界面
continue_client:可以让job继续打印作业信息
add_file:新增一个dumpfile文件add_file=scott_expdp_add01.dmp
parallel:修改并行数量paralell=2
例如:

expdp userid=scott/tiger attach=SYS_EXPORT_SCHEMA_01
Export> stop_job
  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值