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

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

大家好,又见面了,我是全栈君。

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的原因。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/116414.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • JavaScript如何判断一个值是不是数字?「建议收藏」

    JavaScript如何判断一个值是不是数字?「建议收藏」第一种方法:isNaN()使用js自带全局函数isNaN(),isNaN()返回一个Boolean值,如下:varc="hello";//字符串isNaN(c);//返回一个false;varc=10;//数字inNaN(c);//返回一个true如果以上c为一个空串或是一个空格,isNaN将把c当作数字0来处理,所以检查不严谨。第二种方法:正则表达式functioncheckNu…

    2022年4月20日
  • Futex系统调用,Futex机制,及具体案例分析[通俗易懂]

    Futex系统调用,Futex机制,及具体案例分析[通俗易懂]Futex1、背景1.1自己实现锁1.1.1自旋锁1.1.2sleep+自旋1.1.3小结1.2futex1.2.1什么是Futex1.2.2futex诞生之前1.2.3futex诞生之后2、Futex系统调用3、Futex机制4、具体案例分析4.1在Bionic中的实现4.2C语言实现5、参考及扩展阅读首先要区分一下futex系统调用和futex机制。futex系统调用是操作系统提供给上层的系统调用接口。而futex机制是使用futex接口实现的一种锁。1、背景线程同步可以说

    2022年9月21日
  • C语言飞机游戏

    C语言飞机游戏300行代码实现最简易的飞机小游戏,简单有趣,快来试试

    2022年5月12日
  • 淘宝装修代码大全(完整版)

    淘宝装修代码大全(完整版)1.公告栏的装修图片代码,帖到公告栏就行了.不过还是有好多人来问我公告栏的位置—–点我的淘宝—–管理我的店铺——基本设置,下面写着公告的位置。<imgsrc=&quot

    2022年7月4日
  • python处理xps文件_如何在Windows 10系统中处理XPS文件

    python处理xps文件_如何在Windows 10系统中处理XPS文件XPS(XMLPaperSpecification)文件是Microsoft的AdobePDF文件的竞争对手。也许这种类型的文件不像PDF那样受欢迎,但了解XPS及其工作方式可能会有所帮助。在本文中,我们将向您展示如何在Windows10中处理XPS文件。如何查看XPS文件窗口10微软正在。在Windows10,版本1709和更早版本中,该应用程序包含在安装映像中。当您更新到Window…

    2022年5月6日
  • 数仓搭建DWD层

    数仓搭建DWD层尚硅谷电商数仓DWD层

    2022年6月26日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号