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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 惠普m154a状态页_惠普m154a感叹号闪烁[通俗易懂]

    惠普m154a状态页_惠普m154a感叹号闪烁[通俗易懂]大家好,我是时间财富网智能客服时间君,上述问题将由我为大家进行解答。惠普m154a感叹号闪烁的解决方法如下:1、打开电脑管家,点击“工具箱”。2、在工具箱里找到“硬件检测”。3、在硬件检测里点击“驱动安装”。4、可以看到“安装状态”,如果是未安装可以直接点击安装。惠普公司(Hewlett-PackardDevelopmentCompany,L.P,简称HP)总部位于美国加利福尼亚州的帕罗奥多…

    2022年8月13日
    16
  • c语言return两个数_c语言里return0有什么用

    c语言return两个数_c语言里return0有什么用c语言return能不能有2个以上返回值c语言return能不能有2个返回值比如说return(a,b)更新时间:2019-05-1806:19最满意答案不是,要想返回2个以上返回值,建议返回值用数组或者参数用指针模式,直接改写2011-05-04回答其他回答如果你想返回多值的话,建议使用数组或指针(数组其实也是指针)2011-05-04回答不能的,除非你定义一个结构typedefstru…

    2025年7月13日
    2
  • java如果智慧小区物业系统,基于ssm\springboot智慧小区物业管理平台实现

    java如果智慧小区物业系统,基于ssm\springboot智慧小区物业管理平台实现手把手实现智慧小区物业平台

    2022年10月17日
    0
  • cocoapods最新版本_cocoapods使用

    cocoapods最新版本_cocoapods使用CocoaPods简介CocoaPods负责管理iOS项目中第三方框架。CocoaPods的项目源码在Github上管理。项目从2011年8月12日开始,CocoaPods的出现使得我们可以节省设置和更新第三方开源库的时间。(练习时为了速度一般我都是直接导入工程中,个人比较讨厌写纯代码在Podfile文件中)开始安装安装需要用到Ruby,虽然Mac自带了Ruby,不过版本有点老了,最好更新一…

    2025年5月23日
    0
  • 注解式elasticsearch+SpringBoot(附分布式配置)

    注解式elasticsearch+SpringBoot(附分布式配置)前言:以前使用的是RestHighLevelClient客户端,使用起来一大堆的类相互嵌套,特别是agg操作,代码十分惨烈。架构:使用方式与mybatis类似,采用xml的形式,将dsl与代码分离。示例用了swagger2和lombok。需知:必须学会DSL语法(看半小时差不多就会了吧)。依赖:<dependency><group…

    2025年7月15日
    3
  • UDP攻击是什么呢

    UDP攻击是什么呢用户数据报协议(UDP)是一个无连接协议。当数据包经由UDP协议发送时,发送双方无需通过三次握手建立连接,接收方必须接收处理该资料包。因此大量的发往受害主机UDP报文能使网络饱和。在一起UDP洪流攻击中,UDP报文发往受害系统的随机或指定端口。通常,UDP洪流攻击设定成指向目标的随机端口。这使得受害系统必须对流入数据进行分析以确定哪个应用服务请求了数据。如果受害系统在某个被攻击埠没有运行服务,它将用ICMP报文响应一个“目标端口不可达”消息。通常,攻击中的DDOS工具会伪造攻击包的源IP地址。这有助于隐藏

    2022年10月2日
    3

发表回复

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

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