一、问题描述
开发单位反馈数据库出现ORA-01157和ORA-01110错误。从错误信息可以初步判断是临时数据文件读取异常。原因有可能是数据文件只建在RAC集群的某个本地节点或数据文件实际就不存在。


二、问题排查
1、登录数据库,查看dba_temp_files视图信息,发现问题可以重现。
select FILE_NAME, TABLESPACE_NAME from dba_temp_files*ERROR at line 1:ORA-01157: cannot identify/lock data file 201 - see DBWR trace fileORA-01110: data file 201: '/data/oracle/oradata/orcl/temp01.dbf'
2、通过Linux命令检查,确认文件/data/oracle/oradata/orcl/temp01.dbf不存在。
!ls data/oracle/oradata/orcl/temp01.dbfls: cannot access data/oracle/oradata/orcl/temp01.dbf: No such file or directory
3、查看数据库的默认临时表空间为TEMP102,查询所有用户默认临时表空间为TEMP102。查看每个临时数据文件路径信息以及对应的表空间。
SELECT PROPERTY_VALUE FROM database_propertiesWHERE property_name = 'DEFAULT_TEMP_TABLESPACE';-->TEMP102select distinct TEMPORARY_TABLESPACE from dba_users;-->TEMP102select TS#,FILE#,NAME from v$tempfile;TS# FILE# NAME---------- ---------- --------------------------------------------------------------------------------3 1 data/oracle/oradata/orcl/temp01.dbf7 2 /data/oracle/product/11.2.0/db_1/dbs/dataoradataapexbpm_temp.dbf8 3 /data/oracle/oradata/orcl/aas_temp.DBF12 4 +DATA/orcl/tempfile/temp102.dbfselect TS#,NAME from v$tablespace where ts# in (3,7,8,12);TS# NAME---------- ------------------------------3 TEMP7 APEXBPM_TEMP8 AAS_TEMP12 TEMP102
三、解决办法
1、首先对数据文件路径不正确的临时表空间添加新的数据文件。
alter tablespace AAS_TEMP add tempfile '+DATA' size 10m;alter tablespace TEMP add tempfile '+DATA' size 10m;alter tablespace APEXBPM_TEMP add tempfile '+DATA' size 10m;
2、其次删除异常的数据文件,对应的文件编号要核实清楚。
alter tablespace AAS_TEMP drop tempfile 3;alter tablespace TEMP drop tempfile 1;alter tablespace APEXBPM_TEMP drop tempfile 2;
3、检查数据库的告警日志,可以看到异常的数据文件已经被成功删除。
Sun Dec 01 16:44:49 2024alter tablespace TEMP drop tempfile 1Errors in file /u01/app/oracle/diag/rdbms/orcl/orcl1/trace/orcl1_ora_24382.trc:ORA-01122: database file 201 failed verification checkORA-01110: data file 201: '/data/oracle/oradata/orcl/temp01.dbf'ORA-01565: error in identifying file '/data/oracle/oradata/orcl/temp01.dbf'ORA-27037: unable to obtain file statusLinux-x86_64 Error: 2: No such file or directoryAdditional information: 3Errors in file /u01/app/oracle/diag/rdbms/orcl/orcl1/trace/orcl1_ora_24382.trc:ORA-01258: unable to delete temporary file /data/oracle/oradata/orcl/temp01.dbfCompleted: alter tablespace TEMP drop tempfile 1
4、查看临时表空间的数据文件路径已经正常了。
select TS#,FILE#,NAME from v$tempfile;
5、RAC数据库集群的数据文件存在ASM共享磁盘。其中ASM磁盘组由多个ASM磁盘组成。

文章转载自数据库运维之道,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




