错误现象:
执行如下查询语句时:
1 SELECT EI_GUID,EI_SBBSH,EI_TBNY,EI_JJDWMC,EI_EJDWMC,EI_SJDWMC,EI_SIJDWMC,EI_SBJB,EI_SBMC,EI_SBBSH,FF_SBLX FROM EM_EQUIPMENTINFO
2 left join EM_EIREFERORGCODE on EM_EIREFERORGCODE.EIO_SBBSH = EM_EQUIPMENTINFO.EI_SBBSH
3 left join EM_FLEXIBLEFIELDS on EM_FLEXIBLEFIELDS.FF_SBBSH = EM_EQUIPMENTINFO.EI_SBBSH
2 left join EM_EIREFERORGCODE on EM_EIREFERORGCODE.EIO_SBBSH = EM_EQUIPMENTINFO.EI_SBBSH
3 left join EM_FLEXIBLEFIELDS on EM_FLEXIBLEFIELDS.FF_SBBSH = EM_EQUIPMENTINFO.EI_SBBSH
4 WHERE EIO_JJDWDM = 10200000
报错,错误信息如下:
ORA-01114: 将块写入文件 201 时出现 IO 错误 (块 # 523145)
ORA-27069: skgfdisp: 尝试在文件范围外执行 I/O
OSD-04026: 传递的参数无效。 (OS 523151)
注意,这时如果把红色部分标识的FF_SBLX列去掉,就不会报错了。 (EI开头的字段属于EM_EQUIPMENTINFO表,FF开头的字段属于EM_FLEXIBLEFIELDS表,EIO开头的字段属于EM_EIREFERORGCODE表)。
解决方法:
通过查看Oracle的存储情况发现临时表空间被分配了8192MB的空间,已经用了8191,所以导致查询语句时,临时表空间容量不够。所以我的解决方法就是增大临时表空间的容量。