关于DataPump工具引发OGG中断原因

一、问题描述
   根据业务需求,备份某表中一行数据,在执行完该备份命令后,造成OGG中断,造成中断语句如下:

ORA-06564: object DIR_DP does not exist SQL CREATE TABLE XXX."ET$017DB8C30001"

(  "ID",

..........--此处省略其他列信息

"ROLE"

) ORGANIZATION EXTERNAL

( TYPE ORACLE_DATAPUMP  DEFAULT DIRECTORY DMP_TEST ACCESS PARAMETERS (DEBUG =0 DATAPUMP INTERNAL TABLE  "FIRSOUL"."TEST"  JOB ( "FIRSOUL","FIRSOUL_TEST12301",1) WORKERID 1 PARALLEL 1 VERSION COMPATIBLE ENCRYPTPASSWORDISNULL ) LOCATION ('bogus.dat') )  PARALLEL 1 REJECT LIMIT UNLIMITED

AS SELECT "ID", ...... "ROLE"

FROM RELATIONAL("FIRSOUL"."TEST" ) KU$ where id=20141230;

从以上信息可以看出,在执行expdp时,Oracle数据库以创建外部表的方式导出数据,在创建外部表时,会指定一个目录(DIRECTORY),由于OGG目标端没有该目录造成此语句执行失败。此前一直使用expdp工具做相关备份、导出数据,并未发现此问题,问题出现后,在测试系统上分析引发该问题原因。

二、 问题分析过程
 导出语句如下:

---全表导出语句

expdp firsoul/firsoul DIRECTORY=dmp_test tables=test DUMPFILE=firsoul_table04.dmp logfile=exp_firsoul_table03.log
---导出表中一行数据语句
expdp firsoul/firsoul DIRECTORY=dmp_test tables=test query=test:"where id=520000188" DUMPFILE=firsoul_table04.dmp logfile=exp_firsoul_table04.log

此次导出,先执行一次全表导出,而后执行的导出表中一行数据,数据库中创建外部表语句是在执行第二条语句后出现的。
  查看相关资料,得知,DataPump可以通过直接路径和外部表路径这两种方法导出数据。
  1)直接路径方式避开了数据库高速缓存,当使用直接路径模式抽取数据时,DataPump从磁盘直接读取数据文件,抽取和格式化文件内容,最后将内容写出的转储文件。该种方式和SGA交互等待少,其导入导出速度直接取决于数据库所在磁盘速度和cpu,因此,直接路径极为快速。
  2)外部表路径模式将使用到数据库的告诉缓存buffer cache,通过外部表路径方式导出数据时,DataPump使用普通的SELECT操作将数据块从数据文件中读入BUFFER CACHE,为了写出转储文件,数据会在存储中备格式化。通过外部表路径导入时,DataPump根据转储文件的内容构造标准的插入语句,并且通过将数据块从数据文件读至缓存来执行这些语句,插入操作按照标准的样式在缓存中完成,如同普通DML操作一样,外部表路径也会同时产生撤销和重做。

DataPump工具会根据对象的复杂性自动选择使用直接路径还是外部表路径方式,对于复杂的对象,为了分解复杂性而必须同SGA进行交互,此情况下DataPump只能采用外部表模式。我们可以通过access_method参数来控制其行为。例如一下语句

[oracle@firsoul backup]$ expdp firsoul/firsoul DIRECTORY=dmp_test tables=t_pic_edit query=t_pic_edit:"where id=20141230" DUMPFILE=firsoul_table07.dmp logfile=exp_firsoul_table07.log access_method=direct_path

Export: Release 11.2.0.3.0 - Production on Wed Dec 31 11:10:10 2014

Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved.

Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - Production

With the Partitioning, OLAP, Data Mining and Real Application Testing options

ORA-39001: invalid argument value

ORA-39033: Data cannot be filtered under the direct path access method.

如以上信息得知,我们无法使用直接路径导出数据,也就是当expdp导出语句中存在参数query时,无法使用直接路径方式,即使我们通过access_method参数指定,DataPump也会报错。

注意事项:在做DataPump相关操作时,建议添加access_method参数,尤其在配有OGG、DG等灾备工具的系统上,以免出现创建外部表语句造成OGG、DG等灾备工具中断。

三、关于Datapump选择导出方式参考(参考文章:http://www.askmaclean.com/archives/%e5%85%b3%e4%ba%8edatapump%e7%9a%84external_table%e6%a8%a1%e5%bc%8f.html)

若满足右列条件EXPDP将采用direct_path即直接路径模式

表结构允许使用直接路径模式,举例而言:

表上没有启用针对SELECT操作的fine-grained access control

非队列表(queue table)

表上没有BFILE和opaque类型的列,或包含有opaque列的对象类型

表上没有加密列

表上没有被废弃的旧类型列

若表上存在LONG或LONG RAW类型列,则此列只能是最后一列
使用Expdp执行导出任务时没有为相关表指定QUERY, SAMPLE, or REMAP_DATA等参数

需要导出的表或分区相对较少(多达250M),亦或者表或分区其实很大,但导出任务无法工作在并行模式(未指定parallel参数,或parallel参数设置为1)

若满足右列条件EXPDP将采用external_table即外部表模式

数据结构不满足在直接路径模式下抽取的条件,举例而言:

表上启用了针对SELECT操作的精细粒度控制

队列表

表上包含了BFILE或opaque类型列,或者包含有opaque列的对象类型

表上存在加密列

表上存在被废弃的旧类型列

表上存在LONG或LONG RAW类型列,且不是最后列

数据结构满足使用直接路径模式的条件,但执行导出任务时相关表上指定了QUERY, SAMPLE, or REMAP_DATA等参数

数据结构满足使用直接路径模式的条件,但相关的表或分区相对较大(大于250M),此时并行SQL可以用来加速数据抽取

若满足右列条件IMPDP将采用direct_path即直接路径模式

数据结构满足使用直接路径模式的条件,举例而言:

当导入某单一表分区时该分区表上没有建立全局索引,这一点也包括分区的对象表

没有基于LOB列建立的域索引(domain index)

非cluster表

表上没有BFILE列或opaque类型列

表上没有嵌入了opaque类型的VARRAY列

表上没有加密列

没有启用补全日志(Supplemental logging)且表上没有LOB类型列

若导入表已预先建立了表建构,则需满足以下条件:

表上没有激活的触发器 并且 若是分区表则应有索引 并且 表上上没有启用针对INSERT操作的精细粒度控制 并且 表上除去check类型约束不存在其他类型约束 并且 表上没有unique的索引

执行导入任务时没有为相关表指定QUERY, REMAP_DATA等参数

需要导入的表或分区相对较小(少于250M),或者表或分区其实很大,但无法以并行模式导入(未指定parallel参数或指定其为1)

若满足右列条件IMPDP将采用external_table即外部表路径

当数据结构不满足在直接路径模式下导入的条件,举例而言:

当导入某单一表分区时该分区表上建有全局索引,这一点也包括分区的对象表

表上有基于LOB列建立的域索引(domain index)

cluster表

表上有BFILE列或opaque类型列

表上有嵌入了opaque类型的VARRAY列

表上有加密列

启用了补全日志且表上有至少一个LOB列

若导入表已预先建立了表建构,且满足以下条件:

表上有激活的触发器 或者

是分区表且没有任何索引 或者

表上启用了针对INSERT操作的精细粒度控制 或者

表上除去check类型约束还还有其他类型约束 或者

表上有unique的索引

执行导入任务时有为相关表指定QUERY, REMAP_DATA等参数

数据结构满足使用直接路径模式的条件,但相关的表或分区相对较大(大于250M),此时并行SQL可以用来加速数据导入

四、问题总结:

在执行第二条语句(导出表中某一行)时,由于语句复杂性(参数query),需要检索表中数据,进而必须与SGA进行交互,DataPump工具就会选择通过外部表方式导出数据,在导出时出现创建外部表语句,而造成OGG中断。如上述注意事项,在使用DataPump工具时,建议添加access_method参数(默认选择直接路径导出方式),当DataPump工具强行选择使用外部表方式导出时,DataPump语句会报错,以免造成OGG、DG等灾备工具中断及其他问题。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29487349/viewspace-1389858/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/29487349/viewspace-1389858/

关于DataPump工具引发OGG中断原因相关推荐

  1. 如何修复重编译Datapump工具expdp/impdp

    数据泵工具expdp/impdp是10g中引发的服务器端导入导出外部工具,虽然是外部的binary,但是实际expdp/impdp都依赖于内部的PL/SQL package主要是(dbms_datap ...

  2. impdp导入表结构和表数据_ORACLE数据库如何用datapump工具导出表结构然后导入到其它Schema下面...

    这里简单介绍一下如何使用ORACLE数据库的datapump工具导出.导入表结构定义.由于业务场景可能非常简单,你不会遇到任何问题,也有可能业务场景非常复杂,你就会遇到一些杂七杂八的问题.下面我简单介 ...

  3. Oracle JOB异常中断原因分析

    链接:http://blog.itpub.net/28602568/viewspace-1731805/ 标题: Oracle JOB异常中断原因分析 作者:lōττéry©版权所有[文章允许转载,但 ...

  4. oracle 断电 瞬间 同步,Oracle 11g 测试ogg中断之后,重新同步操作

    1.测试ogg中断之后,重新同步操作 1.1.关闭源端抽取进程 GGSCI (cndba) 65> info all Program Status Group Lag at Chkpt Time ...

  5. vos3000 对接网关中断原因

    对接网关中断分析 中断分析可完成对网关的中断情况分析,可分别对主叫网关或者被叫网关的中断情况进 行分析,获得各类中断原因的百分比情况. 操作入口 ⚫ 双击"导航 > 话单分析 > ...

  6. oracle12c没有单库口令,ORA-01017:无效的用户名/密码;登录被Oracle 12c“数据库配置助手”工具引发被拒绝...

    在使用Oracle 12c尝试在容器数据库中创建可插拔数据库时遇到"无效用户名/密码"错误. "数据库配置助手"尝试加载容器数据库ORCL的信息时发生此错误.请 ...

  7. oracle 作业 断开原因,解惑 | Oracle JOB 异常中断原因分析

    注释 今天研发同事找我确认 PKG_WMS.proc_TaskMain 存储的 job 是否还在运行,竟发现 dba_jobs.NEXT_DATE=4000/1/1. 如下看看究竟原因吧~ JOB 信 ...

  8. ORACLE JOB 失败 查看,Oracle JOB异常中断原因分析

    注释 今天研发同事找我确认 PKG_WMS.proc_TaskMain 存储的 job 是否还在运行,竟发现 dba_jobs.NEXT_DATE=4000/1/1,如下看看究竟原因吧~ JOB 信息 ...

  9. mysql主从中断原因_MySQL 主从同步中断常见问题

    Error_code: 1032 [现象] Last_Error: Could not execute Update_rows event on table kebao.t1; Can't find ...

最新文章

  1. 权威预测:2018年这十大数字化转型趋势要火!
  2. 使用xslt将.xml,转换成一个html网页时中文显示乱码怎么办,用dom将数据写到xml中 设置xml文件gbk编码时中文会出现乱码...
  3. 关于python的全局变量和局部变量、以下描述错误的是_Python:全局变量与局部变量的问题...
  4. redis集成spring_将Redis集成到您的Spring项目中
  5. java 中的流_Java中的流(IO
  6. reids的持久化 RDB和AOF
  7. 微信一年“扫码”约占我国GDP 9%,带动近三千万个就业机会
  8. win32 ——定时器消息 小程序:打印时间
  9. 冲动是魔鬼——4.25
  10. 培训loadrunner感受
  11. 编译NVIDIA之Video_Codec_SDK_9.1.23之Sample
  12. 学生端极域课堂万能密码
  13. Excel堆积柱形图制作过程
  14. cwtvc工况_C-WTVC循环数据.xls
  15. java 多文字水印_Java如何给Word文档添加多行文字水印
  16. 项目经理的工具箱---走出软件作坊:三五个人十来条枪 如何成为开发正规军(三)...
  17. https请求百度share分享报错问题
  18. 通过几道CTF题学习yii2框架
  19. Unity引擎与Cocos引擎的区别
  20. 德州仪器(TI)3D机器视觉参考设计

热门文章

  1. Python实战采集全球疫情数据
  2. 房产领域共享公司分析(共享经济专题)2/7
  3. STC8A,STC8G,STC8H系列的IRC内部振荡源频率调节
  4. PL/SQL Developer 登录报错(ORA-12547)解决方案
  5. Hdu 1878 欧拉回路[判断是否存在欧拉回路]
  6. 非域环境下搭建文件服务器,非域环境下SQL Server搭建Mirror(镜像)的详细步骤...
  7. oracle报错信息乱码,Oracle乱码的问题
  8. linux磁盘配额限制方式
  9. 超星电子图书的阅读技巧提示
  10. 2020华数杯全国大学生数学建模竞赛C题-脱贫帮扶绩效评价体系的构建与探究(二)(附MATLAB和Python代码)