expdp时遇到ORA-31693&ORA-02354&ORA-01466

对一个schema运行expdp导出,expdp命令:

nohup expdp HQ_X1/HQ_X1 DUMPFILE=HQ_X1.DMP DIRECTORY=DIR1 parallel=8  flashback_scn=10838324803 &

ORA-39095: Dump file space has been exhausted: Unable to allocate 8192 bytes

这一般是由于使用了parallel參数导致。官方文档的解释是parallel io server processes写文件不能同一时候写一个,

而且当一个io server process在写其余io server process在等待的时候就会报ORA-39095。

所以解决的方法:(1).取消parallel。但这样会影响expdp的性能;

(2)在写导出语句的时候指定dumpfile中使用变量 %u(大写和小写均可)。让其自由分配转储文件就可以。

于是我使用了变量又一次导出:

nohup expdp HQ_X1/HQ_X1 DUMPFILE=HQ_X1%u.DMP DIRECTORY=DIR1 parallel=8  flashback_scn=10838324803 &

之前的问题已经攻克了,但遇到了新的报错:

ORA-31693: Table data object "HQ_X1"."TBL_BILL":"SYS_P109" failed to load/unload and is being skipped due to error:

ORA-02354: error in exporting/importing data

ORA-01466: unable to read data - table definition has changed

查看下dba_objects,果然在那个时间点有DDL操作:

LAST_DDL_TIME

2015-06-23/17:32:19

2015/1/12 22:57:10





怀疑是GRANT之类的可能性最大, 查下v$sql,果然有以下的SQL,时间也全然相应得上:

insert into objauth$(obj#, grantor#, grantee#, privilege#, sequence#, option$, col#) values(:1,:2,:3,:4,:5,:6,:7)  2015-06-23/17:32:19

--insert into objauth$(option$,grantor#,obj#,privilege#,grantee#,col#,sequence#) values(decode(:1,0,null,:1),:2,:3,:4,:5,decode(:6,0,null,:6),object_grant.nextval);

Oracle的一篇note是这样说的:

The issue is discussed in

Bug 8534161 - ORA-1466 REPORTED BY EXPDP WHEN USING FLASHBACK_SCN AND PRIVILEGES WERE GRANTED

Oracle Development confirmed this is expected behavior and not a bug.

而且给出给解决方法:

WORKAROUND

Do not grant any privileges to any object while Expdp is running with FLASHBACK_SCN.





另附一个我自己做的測试:

开2个session,

session1先open一个游标:

SQL> exec open :x for select * from b where user_id=100;

PL/SQL procedure successfully completed.

session2运行一个grant:

SQL>  grant select on b to mine;

Grant succeeded.

session1打印游标:

SQL> print x

USERNAME                          USER_ID CREATED

------------------------------ ---------- --------------

HQ_X2                              100 12-9月 -14

HQ_X2                              100 12-9月 -14

能够看出对于SELECT操作,当运行期间在还有一个session运行grant时没有问题的,但在expdp下却不行,这就是一開始Oracle觉得这是一个BUG的原因。

expdp时遇到ORA-31693&ORA-02354&ORA-01466的更多相关文章

  1. 使用expdp时遇到ORA-39002、ORA-39070错误

    使用expdp时,遇到”ORA-39002.ORA-39070......”连续报错. 1.  遇到的问题 expdp yguo/dbimp@botnet schemas=yguo dumpfile= ...

  2. Oracle的tnsnames.ora配置(PLSQL Developer)

    首先打开tnsnames.ora的存放目录,一般为D:\app\Administrator\product\11.2.0\client_1\network\admin,就看安装具体位置了. 步骤阅读 ...

  3. oracle的sqlnet.ora,tnsnames.ora,listener.ora三个配置文件

    总结: 1 .三个配置文件都是放在$ORACLE_HOME\network\admin目录下. 2 .sqlnet.ora确定解析方式 3 .listener.ora上设SID_NAME,通常用于JD ...

  4. ORACLE RAC 下非缺省端口监听配置(listener.ora tnsnames.ora)

    不论是单实例还是RAC,对于非缺省端口下(1521)的监听器,pmon进程不会将service/instance注册到监听器,即不会实现动态注册.与单实例相同,RAC非缺省端口的监听器也是通过设置参数 ...

  5. PL/SQL Developer 与tnsnames.ora

    PL/SQL Developer 是一款流行的oracle开发与管理的IDE. 在登录PL/SQL Developer时所选择的数据库依赖于tnsnames.ora文件中的信息. 如果我们安装了多个o ...

  6. 转载《Oracle的tnsnames.ora配置(PLSQL Developer)》

    源地址:https://www.cnblogs.com/qq3245792286/p/6212617.html. 首先打开tnsnames.ora的存放目录,一般为D:\app\Administrat ...

  7. oracle: listener.ora 、sqlnet.ora 、tnsnames.ora的配置及例子

    1.解决问题:TNS或者数据库不能登录.      最简单有效方法:使用oracle系统提供的工具 netca 配置(把原来的删除掉重新配置)     $netca  2.然而,仍有疑问:如何指定'l ...

  8. CRS-2800: Cannot start resource 'ora.asm' as it is already in the INTERMEDIATE state on server ‘RAC02’

    在安装ORACLE RAC的Grid Infrastructure时,在节点1运行/u01/app/11.2.0/grid/root.sh正常,当在节点2运行/u01/app/11.2.0/grid/ ...

  9. [20191108]内核参数tcp_keepalive与sqlnet.ora expire_time的一些总结.txt

    [20191108]内核参数tcp_keepalive与sqlnet.ora expire_time的一些总结.txt --//前几天在做12c DCD SQLNET.EXPIRE_TIME相关测试时 ...

随机推荐

  1. WM_PAINT消息在窗口重绘的时候产生,那什么时候窗口会重绘(异步工作方式效率高、灵活性强,还有UpdateWindow和RedrawWindow帮忙)

    Q:wm_paint消息在窗口重绘的时候产生,那什么时候窗口会重绘?? A: 严格地说,只有当收到WM_PAINT消息后窗口会重绘 但是引起这个消息的事件有很多, 比如:1.首次创建 2.移动 3.改 ...

  2. <context-param>与<init-param>的区别与作用(转)

    <context-param>的作用:web.xml的配置中<context-param>配置作用1. 启动一个WEB项目的时候,容器(如:Tomcat)会去读它的配置文件we ...

  3. [Cocos2d-x开发问题-3] cocos2dx动画Animation介绍

    Cocos2d-x为了减少开发难度,对于动画的实现採用的帧动画的方案.这也就是说Cocos2d-x中的动画是帧动画. 帧动画的原理相信大家都不陌生,就是多张图片循环播放以实现动画的效果. 一个简单的动 ...

  4. 用jQuery实现鼠标在table上移动进行样式变化

    1.定义样式 <style type="text/css"> .striped        {            background-color:red;    ...

  5. 实现浏览器遗漏的原件 jQuery.selectCheckbox

    工作中遇到了一个下拉需要实现checkbox的效果,如下图 或许网上已经有实现了,但简单的功能自己实现就好了, 结构 <div class="form-control-wrap&quo ...

  6. QString与char*的相互转换

    原地址:http://blog.sina.com.cn/s/blog_5c70dfc80100r0nh.html 一.QString转char*   QString str; int num=0; s ...

  7. Appium Server 传递iOS参数

    Appium  server  iOS Capabilities 参数 iOS Only Capability Description Values calendarFormat (Sim-only) ...

  8. 管道是如何处理HTTP请求的?

    管道是如何处理HTTP请求的? 我们知道ASP.NET Core请求处理管道由一个服务器和一组有序的中间件组成,所以从总体设计来讲是非常简单的,但是就具体的实现来说,由于其中涉及很多对象的交互,我想很 ...

  9. HDU 4865 Peter's Hobby(2014 多校联合第一场 E)(概率dp)

    题意:已知昨天天气与今天天气状况的概率关系(wePro),和今天天气状态和叶子湿度的概率关系(lePro)第一天为sunny 概率为 0.63,cloudy 概率 0.17,rainny 概率 0.2 ...

  10. Shell 文件包含

    和其他语言一样,Shell 也可以包含外部脚本.这样可以很方便的封装一些公用的代码作为一个独立的文件. Shell 文件包含的语法格式如下: . filename # 注意点号(.)和文件名中间有一空 ...