ORA 01114 - 将块写入文件的 IO 错误
Posted
技术标签:
【中文标题】ORA 01114 - 将块写入文件的 IO 错误【英文标题】:ORA 01114 - IO Error writing block to file 【发布时间】:2014-01-07 00:23:43 【问题描述】:我正在 Oracle 11g 中处理一些复杂的 sql 查询,这些查询具有 SUM 等聚合函数并连接多个表和视图。当我尝试查询大跨度数据时,出现 IO 错误和 Tablespace 空间不足错误。
错误 1 是 ORA-01114: IO 错误将块写入文件(块 #) ORA-01114: 将块写入文件 201 的 IO 错误(块 #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'
【问题讨论】:
这很有可能与文件系统/磁盘有关(至少是 IO 错误) 【参考方案1】:是的,您可能需要让您的 DBA 来修复某些问题。
根据this page,
当您尝试写入文件和设备时发生 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;
【讨论】:
遗憾的是这对我不起作用。顺便说一句,您在原始网站上打错字了,上面写着 ORA-01444,应该写着 ORA-01114【参考方案2】:这个命令可能会救你们。
alter tablespace temp shrink space keep 40m;
也许您的系统为 temp 预留的空间过多。所以我们只是释放这个空间,我们可能会取回可用资源以正常运行。
【讨论】:
好!但是对于一个真正完整的解释,人们可能想检查这个***.com/a/1878732/3856754以上是关于ORA 01114 - 将块写入文件的 IO 错误的主要内容,如果未能解决你的问题,请参考以下文章
使用 rest api 将块 blob 列表放在 azure 存储上时,指定的 XML 不是语法上有效的错误
由于删除DBF文件报错 —— ORA-01033: ORACLE initialization or shutdown in progress