我正在研究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'
答案 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;
也许你的系统为临时预留空间太多了。所以我们只是释放这个空间,我们可以找回可用的资源来正常运作。