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


相关推荐

  • java加入md5_javamd5加密解密

    java加入md5_javamd5加密解密方法二、importjava.security.spec.*;classMD5_test{publicfinalstaticStringMD5(Strings){charhexDigits[]={‘0′,’1′,’2′,’3′,’4′,’5′,’6′,’7′,’8′,’9′,’a’,’b’,’c’,’d’,’e’,’f’};try{byte…

    2022年7月14日
    35
  • 强大易用的Excel转Json工具「建议收藏」

    强大易用的Excel转Json工具「建议收藏」好久没更新了,最近配置json文件的时候发现以前用的excel转json转换器不好用了,上网找了几个都不能满足需求,于是自己用python写了一个。工具不复杂,使用简单,但能满足几乎所有excel转json的要求了,包括多层嵌套,每一层定制为列表或者字典的输出格式,复杂单元格的定制。转载请注明出处:https://blog.csdn.net/ylbs110/article/details/506…

    2022年6月13日
    57
  • ORACLE存储过程的分支语法(IF语句)

    ORACLE存储过程的分支语法(IF语句)基本语法1.if条件then语句1;语句2;endif;2.if条件then语句序列1;esle语句序列;endif;3.if条件then语句;elsif语句then语句;else语句;endif;…

    2022年7月17日
    14
  • Asp.net web.config customErrors 如何设置

    Asp.net web.config customErrors 如何设置<customErrorsmode=”Off”/>On:服务器开发的最安全选项,因为它总是隐藏错误提示信息。 RemoteOnly:向大多数用户展示一般的错误信息,但向拥有服务器访问权限的用户展示完整的错误提示信息。换句话说,仅向远程客户端端显示自定义错误,并向本地主机显示ASP.NET错误。默认值。 Off:最容易受到攻击的选项,它向访问网站的每个用户展示详细的错误提…

    2022年7月16日
    13
  • Proxy实现mysql读写分离

    1.mysql实现读写分离的方式mysql实现读写分离的方式有以下几种:程序修改mysql操作,直接和数据库通信,简单快捷的读写分离和随机的方式实现的负载均衡,权限独立分配,需要开发人员协助。amoeba,直接实现读写分离和负载均衡,不用修改代码,有很灵活的数据解决方案,自己分配账户,和后端数据库权限管理独立,权限处理不够灵活。mysql-proxy,直接实现读写分离和负载均衡,不用…

    2022年4月10日
    41
  • java 基本类型 引用_语法重点

    java 基本类型 引用_语法重点Java引用类型引用数据类型:数组,类,接口。class作为成员变量类作为成员变量时,对它进行赋值的操作,实际上,是赋给它该类的一个对象。在这里插入代码片interface作为成员变量在这里插入代码片interface作为方法参数和返回值类型接口作为参数时,传递它的子类对象。接口作为返回值类型时,返回它的子类对象。在这里插入代码片…

    2022年10月19日
    2

发表回复

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

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