今天创建索引的时候遇到了ORA-00603错误,提示:ORA-00603: ORACLE server session terminated by fatal error
查看告警日志,发现如下信息:
我们可以发现这是设备存储不足的原因:
到主机上清理出部分空间之后,恢复正常。出现这个错误还有可能是临时表空间不足,目录数过多:
下面是metalink上的一段话:
Hello,
The file number should appear in v$datafile. If 201 is higher than the number set for db_files, the file is a temp file and you can try the following:
SELECT name FROM v$tempfile WHERE file#=(<AFN> - <DB_FILES value>);
If your DB_FILES parameter is set to 100 within the init.ora and your error shows a problem with file 101, you will know the problem is with v$tempfile file# = 1.
This appears to be an operating system specific issue. You may be running into a OS file size limitation. You will want to check the event viewer for further error messages. You should post to the Microsoft Installation/OS: RDBMS for further information as to why this problem is occuring.
也就是说,总的数据文件数不能超过设置的值,我们可以参数查看设置的最大文件数:
或者show parameter db_files
如果临时表空间过大需要添加临时表空间,如果文件数过多,可以修改数据文件参数。
附:查看临时表空间使用情况:
SELECT ROUND((F.BYTES_FREE + F.BYTES_USED) / 1024 / 1024, 2) "total MB", ROUND(((F.BYTES_FREE + F.BYTES_USED) - NVL(P.BYTES_USED, 0)) / 1024 / 1024, 2) "Free MB", D.FILE_NAME "Datafile name", ROUND(NVL(P.BYTES_USED, 0) / 1024 / 1024, 2) "Used MB", ROUND((F.BYTES_FREE + F.BYTES_USED) / 1024, 2) "total KB", ROUND(((F.BYTES_FREE + F.BYTES_USED) - NVL(P.BYTES_USED, 0)) / 1024, 2) "Free KB", ROUND(NVL(P.BYTES_USED, 0) / 1024, 2) "Used KB", 0 "Fragmentation Index" FROM SYS.V_$TEMP_SPACE_HEADER F, DBA_TEMP_FILES D, SYS.V_$TEMP_EXTENT_POOL P WHERE F.TABLESPACE_NAME(+) = D.TABLESPACE_NAME AND F.FILE_ID(+) = D.FILE_ID AND P.FILE_ID(+) = D.FILE_ID