ORA 01114 - IO将块写入文件时出错

时间:2014-01-07 00:23:43

标签: sql database oracle11g views tablespace

我正在研究Oracle 11g中的一些complex sql查询,它们具有SUM等聚合函数并连接多个表和视图。当我尝试查询大量数据时,我得到的IO错误和表空间空间不足。

错误1号是 ORA-01114:IO错误写入块到文件(块#) ORA-01114:将块写入文件201时出错(块#1343798) ORA-27063:读/写的字节数不正确

错误2有时候 加载日期时数据库用完临时空间> 12个月

这是我的DBA必须解决的Oracle特定错误,还是我的查询有问题?我如何微调查询的性能以避免表空间提示不足?我正在写一个我的查询看起来像

的虚拟样本
SELECT Sum(s.stock + s.accept + s.new)    AS result, 
       Floor(( s.sales / s.stock ) * 100) AS sales_per,, 
       f.load_date,, 
       u.user_id, 
       Sum(s.falsepos + s.realvio)        AS closed_ale, 
       Sum(f.nbrecords)                   AS nb_records 
FROM   stocks s, 
       facts f, 
       zones z, 
       users u 
WHERE  s.sid = f.fid 
       AND z.zoneid = f.zoneid 
       AND u.userid = z.userid 
       AND f.load_date BETWEEN '20081010' AND '20121030' 

2 个答案:

答案 0 :(得分:3)

是的,您可能需要让DBA修复一些问题。

根据this page

  

尝试写入文件和设备时发生ORA-01114   该文件是:

     

1)离线OR

     

2)空间不足,可能是因为它是暂时的   在创建时未分配的文件。

     

要解决ORA-01114,   你应该:

     

1)恢复对设备的访问权限

     

2)取出不需要的文件以获得更多空间

并提供此调试建议(我已插入您的块编号):

  

您可以通过在dba_extents上插入file_id和block_id到此查询来查明表空间和段以查找ORA-01444错误:

select 
   owner,
   tablespace_name, 
   segment_type, 
   segment_name 
from 
   dba_extents
where 
   file_id = 201
and 
   block_id = 1343798;

答案 1 :(得分:1)

这个命令可以拯救你们。

alter tablespace temp shrink space保持40m;

也许你的系统为临时预留空间太多了。所以我们只是释放这个空间,我们可以找回可用的资源来正常运作。