3

我正在处理 Oracle 11g 中的一些复杂的 sql 查询,这些查询具有 SUM 等聚合函数并连接多个表和视图。当我尝试查询大范围的数据时,出现 IO 错误和表空间空间不足错误。

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

错误 2 有时数据库在 loaddate > 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' 
4

2 回答 2

3

是的,您可能必须让您的 DBA 来修复某些问题。

根据这个页面

ORA-01114 当您尝试写入文件并且带有该文件的设备是:

1) 离线或

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

要解决 ORA-01114,您应该:

1) 恢复对设备的访问或

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

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

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

select 
   owner,
   tablespace_name, 
   segment_type, 
   segment_name 
from 
   dba_extents
where 
   file_id = 201
and 
   block_id = 1343798;
于 2014-01-07T03:12:08.973 回答
1

这个命令可能会拯救你们。

alter tablespace temp shrink space 保持40m;

也许您的系统为 temp 预留了太多空间。所以我们只是释放这个空间,我们可能会取回可用资源以正常运行。

于 2016-11-02T04:03:40.323 回答