问题描述:
ORACLE数据库登录或操作业务时报某个表空间无法读取。
常见以下的报错信息(其中报错信息中的文件号与数据文件的路径、数据文件名会存在不同,仅供参考):
报错信息一:
Caused exception message is: ORA-00376: file 202 cannot be read at this time
ORA-01110: data file 202: '/oradata/oradata/kingdee/EAS_T_NONFEMET11_STANDARD.DBF'
报错信息二:
ERROR at line 1:
ORA-01187: cannot read from file 201 because it failed verification tests
ORA-01110: data file 201: '/U01/app/oracle/oradata/extradb2/temp01.dbf'
通过查询表空间的状态(为OFFLINE)与类型(为TEMPORARY)定位到表空间已损坏,且损坏的表空间是ORACLE数据库临时表空间,如下所示:
select tablespace_name,status,contents from dba_tablespaces where tablespace_name='EAS_T_NONFEMET11_STANDARD'
tablespace_name status contents
------------------------------ ---------- ------------------
EAS_T_NONFEMET11_STANDARD.DBF OFFLINE TEMPORARY
原因分析:
1.ORACLE数据库临时表空间是系统表空间,主要存放操作数据库的一些时临时数据,此表空间必须为正常。否则数据库的相关操作无法进行,前台的业务操作也会报异常。
解决方法:
1.重建一个临时表空间,将新建的临时表空间重定向EAS账套用户,并将旧的临时表空间进行删除,具体操作步骤如下所示:
SQL>CREATE TEMPORARY TABLESPACE "EAS_T_NONFEMET11_STANDARD2" TEMPFILE '/oradata/oradata/kingdee/EAS_T_NONFEMET11_STANDARD2.DBF' SIZE 500M AUTOEXTEND ON NEXT 500M MAXSIZE UNLIMITED;
SQL>ALTER USER EASDB TEMPORARY TABLESPACE TEMP;
SQL>drop tablespace EAS_T_NONFEMET11_STANDARD including contents and datafiles;
说明:
以上方案中新建的临时表空间名为EAS_T_NONFEMET11_STANDARDN,
临时数据文件为EAS_T_NONFEMET11_STANDARD2.DBF,
临时数据文件存放的路径为/oradata/oradata/kingdee,EAS账套为EASDB,
旧的临时表空间名为EAS_T_NONFEMET11_STANDARD。以上指标的定义需根据现场的情况自行去调整
推荐阅读