[转帖]超详细的EXPDP、IMPDP规范及常用技巧总结
超详细的EXPDP、IMPDP规范及常用技巧总结
https://www.toutiao.com/i6727232212850180619/
概述
Oracle备份方式主要分为数据泵导出备份、热备份与冷备份三种,数据泵导出/导入属于逻辑备份,热备份与冷备份都属于物理备份。oracle10g开始推出了数据泵(expdp /impdp),可以使用并行参数选项,因此,相对于传统的exp命令来说,执行效率更高。
今天主要分享下EXPDP、IMPDP规范和一些技巧。
一、并行提升速度
在EXPDP/IMPDP过程中,为了提升速度,而使用并行,有人说不就是加个parallel=n参数嘛,但该如何利用该参数做到真正提升速度呢?
1、单表导出导入数据时使用parallel=n参数无效
2、导入(IMPDP)索引过程中是串行的方式,虽然在执行计划中看到建索引时是带并行参数,但建议使用sqlfile参数生成语句的方式建索引,避免因创建了结构后,再导入数据,这样就会变得异常慢。大概步骤如下:
cat >expdp_testdump.par <<EOFuserid='/ as sysdba'directory=datadumpdumpfile=expdp_testdump_%U.dmplogfile=expdp_testdump.logcluster=noparallel=2exclude= index,constraintEOF--排除索引和约束,执行导入nohup impdp parfile=expdp_testdump.par > expdp_testdump.par.out &--通过sqlfile参数生成创建索引语句cat >impdp_testdump_idx.par <<EOFuserid='/ as sysdba'directory=datadumpdumpfile=expdp_testdump_%U.dmpsqlfile=impdp_testdump_idx.sqllogfile=impdp_testdump_idx.logcluster=noparallel=2tables=scott.testdumpinclude=index,constraintEOF--执行生成创建索引语句(实际并不会导入)nohup impdp parfile= impdp_testdump_idx.par > impdp_testdump_idx.par.out &--修改创建索引的并行度,并行度建议不超过CPU核数的1.5倍--LINUX环境使用sed -i 's/PARALLEL 1/PARALLEL 16/g' impdp_testdump_idx.sql--因AIX环境sed没有-i参数,可以使用如下两种方法:perl -pi -e 's/ PARALLEL 1/PARALLEL 16/g' impdp_testdump_idx.sql或者vi impdp_testdump_idx.sql << EOF:%s/ PARALLEL 1/PARALLEL 16/g:wqEOF--等导入完数据之后,执行建索引的SQL:cat create_testdump_index.sh. ~/.profilesqlplus / as sysdba <<EOFset timing onset echo onset verify onspool create_testdump_index.log@impdp_testdump_idx.sqlspool offexitEOF--执行建索引的SQLnohup sh create_testdump_index.sh> create_testdump_index.sh.out &
以上可能看起来简单的事变的复杂,步骤多了,本来一个参数能解决的事(实际也不能解决),这个步骤已经经过多次实践,解决索引不能并行建的问题。
3、在线调整并行度
当导出导入动作已经发起后,发现并行还可以加大,或者需要减少,该怎么办?
expdp \'\/ as sysdba\' attach=SYS_EXPORT_SCHEMA_01
再执行paralele n就可以调整。
二、含LOB大表导出技巧
在导出含LOB字段的大表时,表未分区,并且表大小已过TB,在导出过程中经常遇到因undo表空间大小和undo_retention设置保留时间,导致ORA-01555: snapshot too old的报错。那该怎么避免呢?
通过rowid或者主键的方式分批导出(推荐使用rowid)
--创建一个表用于记录要导出表的rowid,并分批,这里分成50create table scott.exp_rowid as select mod(rownum,50) sou_seq,rowid sou_rowid from scott.lobtest;--根据分批次数生成对应的parfile文件cat >expdp_lobtest_seq0.par <<EOFuserid='/ as sysdba'directory=datadumpdumpfile=expdp_lobtest_%U.dmplogfile=expdp_lobtest.logcluster=notables=scott.lobtestquery="where rowid in (select sou_rowid from scott.exp_rowid where sou_seq=0)"EOF--执行导出nohup expdp expdp_lobtest_20181219_seq0.par > expdp_lobtest_seq0.par.out &…..nohup expdp expdp_lobtest_20181219_seq50.par > expdp_lobtest__seq50.par.out & 分成50个批次导出,可通过循环生成导出脚本
或者通过如下脚本:
chunk=10for ((i=0;i<=9;i++));doexpdp /as sysdba TABLES=LOBTEST QUERY=LOBTEST:\"where mod\(dbms_rowid.rowid_block_number\(rowid\)\, ${chunk}\) = ${i}\" directory=DMP dumpfile=lobtest_${i}.dmp logfile= lobtest_${i}.log &echo $idone
三、进度查询和监控
当领导问你导出数据进度时,会不会手忙脚乱的,无从查起?当然,作为一个负责任的DBA,实时的知道导出导入的进度,是必须掌握的技能。
1、 查看数据泵作业的运行情况
select owner_name owr,job_name jbn,operation ope,job_mode jbm,state,degree, attached_sessions atts,datapump_sessions dats from dba_datapump_jobs;select sid, serial#,session_type from v$session s, dba_datapump_sessions d where s.saddr = d.saddr;
2、监控数据泵的逻辑备份程度
SELECT sid, serial#, context, sofar, totalwork, ROUND(sofar/totalwork*100,2) "%_COMPLETE" FROM v$session_longops WHERE totalwork != 0 AND sofar <> totalwork; SID SERIAL# CONTEXT SOFAR TOTALWORK %_COMPLETE103 89 0 54 7 83.33
3、查看数据泵的详细进度
expdp \'\/ as sysdba\' attach= SYS_IMPORT_TABLE_01 Import> status Job: SYS_IMPORT_TABLE_01 Operation: IMPORT Mode: TABLE State: EXECUTING Bytes Processed: 1,364,791,288 Percent Done: 99 Current Parallelism: 2 Job Error Count: 0 Dump File: /opt/datadump/expdp_testdump.dmp
[转帖]超详细的EXPDP、IMPDP规范及常用技巧总结的更多相关文章
- [转帖]超详细的PostgreSQL体系结构总结,值得收藏
超详细的PostgreSQL体系结构总结,值得收藏 https://www.toutiao.com/i6715390855772897800/ 原创 波波说运维 2019-07-26 00:03:00 ...
- [转帖]超详细的Oracle数据库在不同损坏级别的恢复总结
超详细的Oracle数据库在不同损坏级别的恢复总结 原创 波波说运维 2019-07-20 00:02:00 概述 在 DBA 的日常工作中不可避免存在着数据库的损坏,今天主要介绍 Oracle 数据 ...
- expdp&impdp备份恢复常用命令
备份前准备 创建备份用户 create user backup identified by backup#2018 ; 授予导入导出角色 grant connect,resource to backu ...
- [转帖]拿小本本记下的Linux Shell常用技巧(一)
拿小本本记下的Linux Shell常用技巧(一) https://zhuanlan.zhihu.com/p/73361101 一. 特殊文件: /dev/null和/dev/tty Linux系统提 ...
- ORACLE 数据泵 expdp/impdp
ORACLE 数据泵 expdp/impdp 一.概念 Oracle Database 10g 引入了最新的数据泵(Data Dump)技术,数据泵导出导入 (EXPDP 和 IMPDP)的作用: 1 ...
- 通过expdp/impdp进行oracle数据库的备份恢复详细指导
假定导出oracle数据库home目录为/opt/oracle,数据库用户为exp_user/test,导入用户为imp_user/test,给出如下样例,具体使用时根据实际情况修改路径及用户名/密码 ...
- 转帖: 一份超全超详细的 ADB 用法大全
增加一句 连接 网易mumu模拟器的方法 adb connect 127.0.0.1:7555 一份超全超详细的 ADB 用法大全 2016年08月28日 10:49:41 阅读数:35890 原文 ...
- expdp/impdp 详细参数解释
任意可以使用expdp/impdp的环境,都可以通过help=y看到帮助文档. 1.expdp参数说明 2.impdp参数说明 3.expdp参数说明(中文) 4.impdp参数说明(中文) expd ...
- oracle 11g expdp impdp详细使用方法
11G中有个新特性,当表无数据时,不分配segment,以节省空间 解决方法如下图: 二.oracle10g以后提供了expdp/impdp工具,同样可以解决此问题 1.导出expdp工具使用方法: ...
随机推荐
- P4556 雨天的尾巴 线段树合并
使用线段树合并,每个节点维护一棵权值线段树,下标为救济粮种类,区间维护数量最多的救济粮编号(下标).所以每个节点答案即为\(tre[rot[x]]\). 然后运用树上点的差分思想,对于分发路径\(u, ...
- python 最小二乘 leastsq 函数实现
代码修改自 http://www.cnblogs.com/NanShan2016/p/5493429.html 网上百度了一下,主要是两个例子,一个利用了多项式函数,一个就是这个.有些细节没看懂,主要 ...
- 3、Web server 之httpd2.2 配置说明
http协议实现的程序 静态(httpd, nginx, lighttpd) 动态 (IIS, tomcat, jetty, jboss, resin, websphere, weblogic ...
- IdentityServer4入门三:授权模式
在入门一.入门二我们实现了一个完整的API保护的过程.需要保护的API只需在其Controler上应用[Authorize]特性,来显式指定受保护的资源.而我们实现的这个例子,所应用的模式叫“Clie ...
- git 删除目录及子目录下的同名文件
find . -name ".git" | xargs rm -Rf find . -name ".gitignore" | xargs rm -Rf
- 网络爬虫requests-bs4-re-1
最近了解了爬虫,嗯--------,有时候会搞得有点头晕. 跟着线上老师实现了两个实例.可以用python下载源代码玩玩,爬淘宝的很刺激,虽然违反了ROBOTS协议. GIT地址
- Microsoft Visual C++ Runtime library not enough space for thread data
Microsoft Visual C++ Runtime library not enough space for thread data 电脑最近一直在运行的时候,弹出提示框,如下: 解决办 ...
- mac下PHP安装mongo扩展
说明:mongo 和 mongodb是两个扩展,目前mongo扩展已经被废弃,建议使用mongodb扩展,但对于一些老项目还在使用mongo扩展的,请参考此文. mongodb和其他PHP扩展的安装方 ...
- JavaScript Functional Programming:声明式与命令式
函数式编程属于声明式编程(declarative programming)的范畴,经常跟声明式编程一块儿讨论的是命令式编程(imperative programming),因为它们是两种不太一样的风格 ...
- Angular 中的生命周期函数
一. Angular中的生命周期函数 官方文档:https://www.angular.cn/guide/lifecycle-hooks 生命周期函数通俗的讲就是组件创建.组件更新.组件销毁的时候会触 ...