(2)、还原
情况1、原始库与目标库实例名不同(注意有些环境的数据表空间名不是SIDNAME_data , 使用时注意核实)
#格式:[oracledb@ ~]$ impdp USERNAME/USERPASSWORD@SIDNAME schemas=SCHEMASNAME DUMPFILE=XXXX.dmpDIRECTORY=dir_dump remap_schema=源SCHEMASNAME:目标SCHEMASNAME remap_tablespace=源_data:目标_data
情况2:源库与目标库实例名相同
#格式:[oracledb@ ~]$ impdp USERNAME/USERPASSWORD@SIDNAME schemas=SCHEMASNAME DUMPFILE=XXXX.dmpDIRECTORY=dir_dump EXCLUDE=STATISTICS
知识扩展:使用EXCLUDE=STATISTICS还原时排除统计 , 可以使用如下命令完成统计
#命令如下:SQL> exec dbms_stats.gather_schema_stats(ownname=>'SIDNAME',estimate_percent=>10,degree=>8,cascade=>true,granularity=>'ALL');
2、针对单表备份与还原操作
(1)、备份单表
格式:[oracledb@ ~]$ expdp USERNAME/USERPASSWORD@SIDNAME dumpfile=tablenameXXXX.dmp DIRECTORY=dir_dump tables=TABLENAME
(2)、还原单表
#格式:[oracledb@ ~]$ impdp USERNAME/USERPASSWORD@SIDNAME dumpfile=tablenameXXXX.dmp DIRECTORY=dir_dump TABLES=TABLENAME TABLE_EXISTS_ACTION=REPLACE
扩展:table_exists_action参数说明
使用imp进行数据导入时 , 若表已经存在 , 要先drop掉表 , 再进行导入 。
而使用impdp完成数据库导入时 , 若表已经存在 , 有四种的处理方式:
参数(1) skip:默认操作
参数(2) replace:先drop表 , 然后创建表 , 最后插入数据
参数(3) Append:在原来数据的基础上增加数据
参数(4) truncate:先truncate , 然后再插入数据
(3)备份多张表
#格式:[oracledb@ ~]$ expdp USERNAME/USERPASSWORD@SIDNAME dumpfile=tablenameXXXX.dmp DIRECTORY=dir_dump TABLES=源TABLENAME1,源TABLENAME2,.....
(4)还原多张表
#格式:[oracledb@ ~]$ impdp USERNAME/USERPASSWORD@SIDNAME dumpfile=tablenameXXXX.dmp DIRECTORY=dir_dump remap_table=源TABLENAME1:目标TABLENAME11 TABLE_EXISTS_ACTION=REPLACE[oracledb@ ~]$ impdp USERNAME/USERPASSWORD@SIDNAME dumpfile=tablenameXXXX.dmp DIRECTORY=dir_dump remap_table=源TABLENAME2:目标TABLENAME22 TABLE_EXISTS_ACTION=REPLACE
3、扩展知识
1)扩展1:
情况1、高版本往低版本导出还原时 , 如12往11还原时 , 在12c执行导出时 , 添加低版本的版本号version=11.1.0.2.0
#格式:[oracledb@ ~]$ expdp USERNAME/USERPASSWORD@SIDNAME schemas=SCHEMASNAME dumpfile=XXX.dmp DIRECTORY=dir_dump version=11.1.0.2.0
情况2、低版本往高版本还原时 , 高版本一般兼容低版本 , 目前个人运维工作中11往12还原没遇到什么问题 。
2)扩展2:
(1)、按指定大小备份 , 如每份5G大小(parallel是多线程处理 , 线程数要小于生成文件个数 , 线程要小于 cpu 线程数)
#备份格式[oracledb@ ~]$ expdp USERNAME/USERPASSWORD@SIDNAME schemas=SCHEMASNAME DIRECTORY=dir_dump dumpfile=XXX_%U.dmp logfile=expdpXXX.log filesize=5G parallel=16
(2)、多个备份文件还原:
#还原格式[oracledb@ ~]$ impdp USERNAME/USERPASSWORD@SIDNAME schemas=SCHEMASNAME DIRECTORY=dir_dump dumpfile=XXX_%U.dmp logfile=impdpXXX.log parallel=16
3)扩展3
导出过滤不导出某张表:
#格式[oracledb@ ~]$ expdp USERNAME/USERPASSWORD@SIDNAME schemas=SCHEMASNAME DIRECTORY=dir_dump dumpfile=XXX.dmpexclude=TABLE:"IN 'TABLENAME'"
4)扩展4
不同库还原时不改变数据结构使用truncate参数:
#格式[oracledb@ ~]$ impdp USERNAME/USERPASSWORD@SIDNAME schemas=SCHEMASNAME DIRECTORY=dir_dump dumpfile=XXX.dmp remap_schema=源SCHEMASNAME:目标SCHEMASNAME remap_tablespace=源_data:目标_data TABLE_EXISTS_ACTION=truncate
5)扩展5
导出备份时保留表 , 清除表数据(query参数):
#格式[oracledb@ ~]$ expdp USERNAME/USERPASSWORD@SIDNAME schemas=SCHEMASNAME DIRECTORY=dir_dump dumpfile=XXX.dmp logfile=expdpXXX.logquery=TABLENAME1:'" where 1=2"',TABLENAME2:'" where 1=2"',........
6)扩展6
导出备份时保留表 , 清除表数据 , 同时过滤某两张表
#格式[oracledb@ ~]$ expdp USERNAME/USERPASSWORD@SIDNAME schemas=SCHEMASNAME DIRECTORY=dir_dump dumpfile=XXX.dmp logfile=expdpXXX.logquery=TABLENAME1:'" where 1=2"',TABLENAME2:'" where 1=2"' exclude=TABLE:"IN 'TABLENAME1''TABLENAME2'"
7)扩展7
仅统计数据库各表数据 , 但不导出 , 参数estimate_only=y
推荐阅读
- 深度解析SQL和oracle等数据库的历史,说点不一样的给你
- 经常泡金银花水喝有好处吗 常用金银花泡水喝好吗
- 带你了解真正黑客入侵的常用手段及防护措施
- HTML5常用的基本元素
- PPT常用快捷键大全 一览表?ppt中快捷键大全?
- 一文搞懂分类算法中常用的评估指标
- ffmpeg常用命令行集锦
- 车漆保养最好的办法有哪些?
- 运维小工具:Mysql库TPS,QPS实时监控脚本
- Centos7.6上静默安装oracle11.2.0.4.0