使用Oracle自带工具实现数据库备份与迁移(二)

才疏学浅,欢迎批评指正

使用Oracle的数据泵(expdp/impdp)实现数据库的备份与迁移
二.expdp和impdp
从oracle 10g开始Oracle提供了新的数据导入导出工具,适用于数据量巨大的情况;但数据泵只适用于可以直接接触到数据库所在的服务器端机器的情况(无论是远程还是其他方式)

若不能接触到服务器端机器可以使用DB_LINK结合数据泵的方法,可见
https://blog.csdn.net/xinxindiandeng9789/article/details/88562332
使用数据泵迁库实战可见
https://blog.csdn.net/xinxindiandeng9789/article/details/88602907

1.说明
expdp和impdp是oracle服务器端工具,它只能在服务器端使用;
expdp命令用于导出数据;impdp命令用于导入数据
expdp可以将数据导出到数据库所在的服务器端机器;
impdp可以将数据从数据库所在的服务器端机器导入;

2.expdp语法总结

  • expdp xx/xx@localhost/test dumpfile=tables.dmp tables=(table1,table2)logfile = explog.log
    将table1,table2从数据库中导出成tables.dmp中,日志文件为explog.lpg
    expdp 用户名/命名@数据库名 dumpfile=导出文件名称 tables=(表1名,表2)logfile = 日志文件
  • expdp xx/xx@localhost/test dumpfile=tables.dmp tables=(table1,table2)logfile = explog.log content=DATA_ONLY
    将table1,table2从数据库中导出成tables.dmp中,日志文件为explog.lpg,只导出表中的数据
    expdp 用户名/命名@数据库名 dumpfile=导出文件名称 tables=(表1名,表2)logfile = 日志文件 content=DATA_ONLY

常用参数
JOB_NAME 设置导出作业的名称

content 设置导入的内容
content=DATA_ONLY 只导入数据 (不导入表约束,如外键,sequnce)
content=METADATA_ONLY 只导入表定义
content=ALL 导入所有

3.impdp语法总结

  • impdp xx/xx directory = tables_dir dumpfile=tables tables=table1 table_exists_action = truncate content = ALL exclude=sequence logfile= implog.log
    导入tables_dir 路径下的 tables.dmp中的table1,如果table1在目标数据库中存在,执行截断操作,导入表中全部数据,不导入sequence 日志文件为implog.log(表空间,用户名需保持一致)
    impdp 目标库用户名/目标库用户密码 directory =路径名 dumpfile=导入文件名 tables=表名 table_exists_action = truncate content = DATA_ONLY exclude=sequence logfile = 日志文件
  • impdp xx/xx directory = tables_dir dumpfile=tables tables=xx.table1 remap_tablespace=tablespace1:tablespace2 remap_schema =xx:xx2 table_exists_action = truncate content = DATA_ONLY logfile = implog.log
    导入tables_dir 路径下的 tables.dmp中用户xx下的table1,同时将表空间由原来的tablespace1替换为tablespace2 ,用户名由xx替换为xx2,如果table1在目标数据库中存在,执行截断操作,只导入表中数据,日志文件为implog.log
    impdp 目标库用户名/目标库用户密码 directory =路径名 dumpfile=导入文件名 tables=源库用户名.表名 remap_tablespace=源库表空间:目标库表空间 remap_schema =源库用户名:目标库用户名 table_exists_action = truncate content = DATA_ONLY logfile = 日志文件

常用参数
table_exists_action 库表存在时采取的动作
table_exists_action = skip 跳过
table_exists_action = truncate 清空表数据再添加(截断)
table_exists_action = append 追加数据
table_exists_action = replace 先drop表,再新建表,再写入数据(表的约束也会drop !!!)

[注]
1.exp/imp使用的dmp文件数据泵(expdp/impdp)使用的dmp文件不相同,不能混为一谈,即使它们的文件类型相同
(exp导出的dmp文件,impdp不能使用;同理,expdp导出的dmp文件,imp也不能使用)

2.使用数据泵(expdp/impdp)时的用户权限限制如下:

  • 给使用expdp的用户授权(exp_full_database)
    grant exp_full_database to 用户名;
  • 给使用impdp的用户授权(imp_full_database)
    grant imp_full_database to 用户名;
    (EXP_FULL_DATABASE, IMP_FULL_DATABASE:这两个角色用于数据导入导出工具的使用)

3.在使用impdp导入dmp文件时,需要事先在oracle中指定directory用来存放dmp,具体步骤如下:

  • 创建文件夹
    Create or replace directory impdp_dir as ’E:\space’
    Create or replace directory 文件夹名 as ’存放路径’
  • 授权给使用impdp的用户
    Grant read,write to xx;
    Grant read,write to目标库用户名;
  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值