④内部公开请勿外传1/2删除TMP临时表遇上ORA-01555错误的原因分析及应对方法1定时作业JOB_PURGE_TMPTABLE,每晚7点运行,最近发现,该作业运行屡次报错误:ORA-01555错误。2查看数据库的后台日志,发现日志记录下作业的这些信息:意思大概是语句:SELECTA.OWNER,A.TABLE_NAMEFROMDBA_TABLESA,DBA_OBJECTSBWHEREA.OWNERIN(:B1)ANDA.TABLE_NAMELIKE'TMP%'ANDLENGTH(A.TABLE_NAME)=30ANDB.OWNERIN(:B1)ANDB.OBJECT_TYPE='TABLE'ANDB.OBJECT_NAMELIKE'TMP%'ANDB.CREATED<(SYSDATE-1)AND(A.OWNER=B.OWNERANDA.TABLE_NAME=B.OBJECT_NAME),运行了2081秒,之后遇上快照太老错误,④内部公开请勿外传2/23我测试过,上面的SELECT语句,查询反馈9万条记录(也就是9万个TMP表要被删除),耗时大概11秒左右。因此,运行2081秒的时间,应该是程序里,打开此查询游标后,对查询出来的每个表,都做了DROPTABLE操作,如下截图,箭头所指脚本:才导致的这个耗时时长,,,4基于此,可以考虑分批查询,也就是,先查出一小部分表(新脚本里每次查询5000个表),删除后,再查询另外一批,再删除,,,如此循环下去,直到结束。这样可以避免原始语句一次性查询出太多的表,并删除这些表,迫使游标长期打开,引发的快照太老操作。5原因是不是这个,得观察新脚本的运行情况,看看该故障是否再出现?