分类: Oracle
2009-01-05 22:22:34
ORA-01114 IO error writing block to file string (block # string) |
Cause | The device on which the file resides is probably off line. |
Action | Restore access to the device, then retry the operation. |
unix系统上查看了下错误号:oerr ora 1114
01114, 00000, "IO error writing block to file %s (block # %s)"
// *Cause: The device on which the file resides is probably offline. If the file is a temporary file, then it is also possible that the device has run out of space. This could happen because disk space of temporary files is not necessarily allocated at file creation time.
// *Action: Restore access to the device or remove unnecessary files to free up space.
当时就询问过,临时表空间文件已经达到12G,而且使用率很高。于是在紧急情况下,让他们加入了一个临时数据文件,查询还是报同样的错。让他们把bdump下的日志发过来,无任何的错误报告。
最后到现场后发现,system表空间满了,99.8%使用率,其实同样的道理,我们知道当我们执行排序查询的时候,当排序内存不够的时候,那么就会使用磁盘排序,而磁盘排序需要创建临时段,当临时表空间不足的时候就会报错,而同时临时表空间空间够大的时候,而写临时段的时候,也需要在系统表空间记录一些元数据,当系统表空间空间不足的时候,也会报错。但是这个错误,后台为什么不记录,而只是体现在前台的应用上呢?
此外,我们还发现,在windows系统的系统事件查看器中可以看到Instance xxxx has been terminated.但是其实oracle的实例是运行正常的。我个人估计是该查询相关的oracle服务器进程遇到一个错误了。
总结:该错误,在现场的解决办法是,我重新起了db,重新启动了监听,查询也就不报错了,增加了系统表空间文件,我也知道这不是最好的解决办法,而现场正好db可以重启。
不知道哪位兄弟姐妹遇到同样的问题!