创建EAS数据中心报Get tablespace actual size error及ORA-01157: 无法标识/锁定数据文件处理
问题描述
创建EAS数据中心前台显示获取数据中心实际大小错误,即Get tablespace actual size error。
后台admin.log日志中报ORA-01157: 无法标识/锁定数据文件的错误:
com.kingdee.eas.tools.admin.framework.AdminException: Get tablespace actual size error
cause by com.kingdee.eas.tools.admin.framework.database.exception.DBSQLProviderException: Execute provider[DefaultSQLProviderExecutor], sql[select bytes, file_id from dba_temp_files where tablespace_name='EAS_T_WJXXXX_TEMP2'] failed, sqlcode[1157] sqlstat[64000],Causedby[ORA-01157: 无法标识/锁定数据文件 205 - 请参阅 DBWR 跟踪文件
ORA-01110: 数据文件 205: 'E:\WJ0320\EAS_T_WJ0320_STANDARD.DBF'
解决方案
原因分析:
1、EAS数据库中发现E:\WJ0320\EAS_T_WJ0320_STANDARD.DBF这个数据文件损坏不可用,对这个数据文件在数据库mount状态下,将异常的数据文件进行下线删除(offline drop)。删除后新建WJXXXX数据中心就报了获取数据中心实际大小错误。
2、查看admin.log日志发现'E:\WJ0320\EAS_T_WJ0320_STANDARD.DBF'数据文件无法标识,了解到建数据中心报错前管理人员用了以下命令删除了报错的数据文件:alter database datafile 'file_name' offline drop ,该命令不会删除数据文件,只是将数据文件的状态更改为recover。 offline drop命令相当于把一个数据文件至于离线状态,并且需要恢复,并非删除数据文件。 数据文件的相关信息还会存在数据字典和控制文件。之后管理人员在操作系统级别又把EAS_T_WJ0320_STANDARD.DBF这个文件给物理手动删除了,导致查询dba_temp_files这个视图的信息会报删除的文件无法标识的错误。
3、EAS创建数据中心时会建临时表空间,且在建临时表空间前会先在dba_temp_files这个视图中查下要建的临时数据文件是否存在,从而执行了这个SQL语句:select bytes, file_id from dba_temp_files where tablespace_name='EAS_T_WJXXXX_TEMP2',由于只要查dba_temp_files这个视图就会报EAS_T_WJ0320_STANDARD.DBF这个文件无法标识的错误,从而出现在dba_temp_files这个视图中查新建的EAS_T_WJXXXX_TEMP2表空间也会报错。
解决方法:
1、查询报错的临时数据文件名称对应哪个表空间(不能用dba_temp_files开头的视图查):
select s.NAME,s.TS#,d.STATUS ,d.NAME from v$tablespace s , v$tempfile d where s.TS#=d.TS# and d.NAME='E:\WJ0320\EAS_T_WJ0320_STANDARD.DBF';
查到E:\WJ0320\EAS_T_WJ0320_STANDARD.DBF数据文件对应的表空间名是:EAS_T_WJ0320_STANDARD。
2、删除EAS_T_WJ0320_STANDARD这个表空间及相关的文件:
SQL> drop tablespace EAS_T_WJ0320_STANDARD including contents and datafiles;
创建EAS数据中心报Get tablespace actual size error及ORA-01157: 无法标识/锁定数据文件处理
本文2024-09-22 20:21:15发表“eas cloud知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-eas-113084.html