Chinaunix首页 | 论坛 | 博客
  • 博客访问: 254798
  • 博文数量: 59
  • 博客积分: 1400
  • 博客等级: 上尉
  • 技术积分: 698
  • 用 户 组: 普通用户
  • 注册时间: 2008-10-19 21:17
文章分类

全部博文(59)

文章存档

2009年(14)

2008年(45)

我的朋友

分类: Oracle

2009-01-05 22:22:34

前台的一个应用报错,查询的时候直接就报错,ora-01114。
具体跟踪下这个应用执行的是一条sql,大致就是select * from tab order by.
直接显示的错误为: ora-01114 将块写入文件%s出现IO错误(块#%S)
 
我在远程支持的时候,说首先出现这个是否表有坏块呢?dbv检查以及alter table move都还正常,但是查询还是报错。
 
让我们再仔细看下该错误号信息
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可以重启。

不知道哪位兄弟姐妹遇到同样的问题!

阅读(1459) | 评论(0) | 转发(0) |
0

上一篇:ORA-01722: 无效数字

下一篇:JFS与JFS2的区别

给主人留下些什么吧!~~