Oracle数据库中出现ORA-01157: 无法标识/锁定数据文件

2014-11-24 17:15:55 · 作者: · 浏览: 0

环境:SLES 11 sp1 + RAC 11.2.0.3.7


于是检查数据文件的状态,结果发现这个数据文件在节点2上查不到的。
再到节点1检查时,发现这个数据文件被创建在本地目录中了:
TABLESPACE_NAME FILE_ID FILE_NAME
MB STATUS AUT
----------------------- ---------- ----------------------------------------------------------- ---------- --------- ---
SRPTSP 54 /oracle/app/oracle/product/11.2.0/dbhome_1/dbs/DATADG
32500 AVAILABLE NO
SRPTSP 55 +DATADG/ispace/datafile/srptsp.4718.845812309
32500 AVAILABLE NO


郁闷,怎么会把数据文件创建在本地目录中呢?

经检查,发现是有一个新来的DBA创建数据文件时将"+DATADG"错误写成了"DATADG",相当于漏掉了"+",数据库根据OMF格式,默认将数据文件创建在本地目录的$ORACLE_HOME/dbs下面。更重要的是,刚刚好监控系统出现了故障,不然这个问题有就有警告了。幸好,这个是存放转存的历史数据,对业务没有产生影响,真是不幸中的万幸呀....


解决办法:
再创建一个表空间,然后将54号数据文件上的所有对象move到新的表空间中,索引rebuild到新的表空间中,最后再:
alter table xxxx move tablespace yyyyy;
alter tablesapce SRPTSP drop datafile 54;
再重新加数据文件到DATADG磁盘组中,将数据移回原表空间中。


--------------------------------------------------------------------------------


--------------------------------------------------------------------------------