一、问题回顾
小张接到客户反馈在Oracle数据库查询视图出现报错,提示
ORA-01187: 由于验证测试失败而无法从文件读取
ORA-01110: 数据文件 201: '/u01/app/oracle/oradata/orcl/temp01.dbf'
经排查,问题与临时表空间文件(temp01.dbf)相关,可能是文件损坏或权限异常导致。
二、问题分析
1、错误原因:临时表空间文件(temp01.dbf)损坏或无法访问。
2、影响范围:临时表空间仅用于排序、哈希等临时操作,不涉及永久数据,因此修复风险较低
3、排查确认:
①检查文件路径存在且权限正常;
②通过MOS(My Oracle Support)验证解决方案可行性。
三、解决方案。
在MOS上确实查询到相关报错的处理,小张照着以下步骤操作,问题也成功处理。
1)查询临时文件信息
SQL> select FILE#,NAME from v$tempfile;
FILE# NAME
------ --------------------------------
201 /u01/app/oracle/oradata/orcl/temp01.dbf
2)确认临时表空间
SQL> SELECT PROPERTY_VALUE FROM DATABASE_PROPERTIES WHERE PROPERTY_NAME ='DEFAULT_TEMP_TABLESPACE';
PROPERTY_VALUE
----------------
TEMP
3)创建新的临时文件
SQL> ALTER TABLESPACE temp ADD TEMPFILE '/u01/oracle/oradata/temp02.dbf' SIZE 512M ;
Tablespace altered.
4)删除异常的临时文件
SQL> ALTER DATABASE TEMPFILE '/u01/oracle/oradata/temp01.dbf' DROP INCLUDING DATAFILES;
Database altered.
5) 验证结果
SQL> SELECT tablespace_name, file_name, bytes FROM dba_temp_files WHERE tablespace_name = 'TEMP';
TABLESPACE_NAME FILE_NAME
---------------- -------------------------------
TEMP /u01/app/oracle/oradata/orcl/temp02.dbf
四、小结
1、遇到ORA-01187和ORA-01110这种关于临时文件报错,可以通过增加新临时文件,删除原临时文件处理
2、这里小张其实还有个疑惑,有没有办法确认临时文件就是损坏或报错的根因,是否有更好的解决方案,欢迎有知道的大佬,评论区留言,先谢谢了!
参考文档
-
My Oracle Support Document: Doc ID 2381382.1 - 提供了针对ORA-01187和ORA-01110错误的官方解决方案和详细说明。