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的原因。
expdp时遇到ORA-31693&ORA-02354&ORA-01466的更多相关文章
- 使用expdp时遇到ORA-39002、ORA-39070错误
使用expdp时,遇到”ORA-39002.ORA-39070......”连续报错. 1. 遇到的问题 expdp yguo/dbimp@botnet schemas=yguo dumpfile= ...
- Oracle的tnsnames.ora配置(PLSQL Developer)
首先打开tnsnames.ora的存放目录,一般为D:\app\Administrator\product\11.2.0\client_1\network\admin,就看安装具体位置了. 步骤阅读 ...
- oracle的sqlnet.ora,tnsnames.ora,listener.ora三个配置文件
总结: 1 .三个配置文件都是放在$ORACLE_HOME\network\admin目录下. 2 .sqlnet.ora确定解析方式 3 .listener.ora上设SID_NAME,通常用于JD ...
- ORACLE RAC 下非缺省端口监听配置(listener.ora tnsnames.ora)
不论是单实例还是RAC,对于非缺省端口下(1521)的监听器,pmon进程不会将service/instance注册到监听器,即不会实现动态注册.与单实例相同,RAC非缺省端口的监听器也是通过设置参数 ...
- PL/SQL Developer 与tnsnames.ora
PL/SQL Developer 是一款流行的oracle开发与管理的IDE. 在登录PL/SQL Developer时所选择的数据库依赖于tnsnames.ora文件中的信息. 如果我们安装了多个o ...
- 转载《Oracle的tnsnames.ora配置(PLSQL Developer)》
源地址:https://www.cnblogs.com/qq3245792286/p/6212617.html. 首先打开tnsnames.ora的存放目录,一般为D:\app\Administrat ...
- oracle: listener.ora 、sqlnet.ora 、tnsnames.ora的配置及例子
1.解决问题:TNS或者数据库不能登录. 最简单有效方法:使用oracle系统提供的工具 netca 配置(把原来的删除掉重新配置) $netca 2.然而,仍有疑问:如何指定'l ...
- 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/ ...
- [20191108]内核参数tcp_keepalive与sqlnet.ora expire_time的一些总结.txt
[20191108]内核参数tcp_keepalive与sqlnet.ora expire_time的一些总结.txt --//前几天在做12c DCD SQLNET.EXPIRE_TIME相关测试时 ...
随机推荐
- QObject,有一个生存线程(慢慢体会)
moveToThread本来就是操作QObject的 比如把当前对象移到主线程里: myObject->moveToThread(QApplication::instance()-> ...
- java BigDecimal的使用和四舍五入及格式规范(精准数据)
• Java中的简单浮点数类型float和double不能够进行运算.不光是Java,在其它很多编程语言中也有这样的问题. 如果我们编译运行下面这个程序会看到什么? public class T ...
- js遍历对象的数组
遍历数组: 1.js关键for遍历 2.jquery提供each功能 ----------------------------------- $.each(array, function(){ ...
- How to search a table in a store proc and open the store proc
1. select*fromdba_dependencieswherereferenced_name='CNTL_ISSUE'andTYPE='PROCEDURE' 2. selecttextfrom ...
- PHP之验证码代码
<?php session_start(); $checkcode=""; /*for($i=0;$i<4;$i++) { $checkcode.=dechex(ran ...
- SpringMVC记住密码功能
CookieTool (Cookie帮助类): package com.utcsoft.common.cookie; import java.util.HashMap; import java.uti ...
- ajax表单提交全路径
//ajax提交form表单的方式 $(document).ready(function() { $('#shopping-submit').click(function() { alert(&quo ...
- Theano学习笔记(二)——逻辑回归函数解析
有了前面的准备,能够用Theano实现一个逻辑回归程序.逻辑回归是典型的有监督学习. 为了形象.这里我们如果分类任务是区分人与狗的照片. 首先是生成随机数对象 importnumpy importth ...
- Swift - 做一个简单的无线U盘(手机端Http服务器搭建)
由于iOS系统的封闭性,在数据传输方面十分不方便.不像安卓设备,直接连接电脑就能当U盘使用.所以一般我们如果用iPhone临时存取个东西,要么使用数据线连接iTunes,要么手机电脑都登上QQ,使用Q ...
- 有关java中的final关键字
在java中,可能使用到final关键字修饰的有数据.方法和类. 一.final 修饰数据 有final修饰的数据是用来告诉编译器一块数据是恒定不变的,有时数据恒定不变是很有用的,比如: 1.一个永不 ...