本文共 2271 字,大约阅读时间需要 7 分钟。
年假还没休完,就接到一个工作。某客户数据库异常,无法读取数据,大概了解了下原因,早上就坐车来到了生命之环,确实是比较有气势,天气也不错,心情也很好。
一、环境
11g rac rhel 6.8二、报错信息
SQL> select file_name from dba_data_files;ERROR:ORA-01157: cannot identify/lock data file 6 - see DBWR trace fileORA-01110: data file 6:'/u01/app/oracle/product/11.2.0/dbhome_1/dbs/DATAfsczracdatafilefinance.DBF'三、处理过程
花了几分钟,清理了一下思路,写好脚本就开始整。1、默认归档已打开SQL> archive log list;Database log mode Archive ModeAutomatic archival EnabledArchive destination +DATA/archOldest online log sequence 20Next log sequence to archive 22Current log sequence 22SQL> SQL> 2、offline 表空间SQL> alter tablespace FINANCE offline;Tablespace altered.3、cp 数据文件ASMCMD [+data/FSCZRAC/datafile] > cp /u01/app/oracle/product/11.2.0/dbhome_1/dbs/DATAfsczracdatafilefinance.DBF +data/fsczrac/datafile/DATAfsczracdatafilefinance.DBFcopying /u01/app/oracle/product/11.2.0/dbhome_1/dbs/DATAfsczracdatafilefinance.DBF -> +data/fsczrac/datafile/DATAfsczracdatafilefinance.DBFASMCMD [+data/FSCZRAC/datafile] > 4、修改控制文件中的数据文件路径SQL> alter database rename file '/u01/app/oracle/product/11.2.0/dbhome_1/dbs/DATAfsczracdatafilefinance.DBF' to '+data/fsczrac/datafile/DATAfsczracdatafilefinance.DBF';Database altered.5、恢复表空间SQL> recover tablespace finance;Media recovery complete.6、表空间onlineSQL> alter tablespace finance online;Tablespace altered.7、验证SQL> col file_name for a60SQL> select file_name, file_id, online_status from dba_data_files;FILE_NAME FILE_ID ONLINE_------------------------------------------------------------ ---------- -------+DATA/fsczrac/datafile/users.259.967475641 4 ONLINE+DATA/fsczrac/datafile/undotbs1.258.967475641 3 ONLINE+DATA/fsczrac/datafile/sysaux.257.967475641 2 ONLINE+DATA/fsczrac/datafile/system.256.967475641 1 SYSTEM+DATA/fsczrac/datafile/undotbs2.269.967475831 5 ONLINE+DATA/fsczrac/datafile/datafsczracdatafilefinance.dbf 6 ONLINE6 rows selected.SQL>
四、小结
案例是真实案例,之前也遇到过很多次,一般开发的测试环境都是单机环境,生产变为rac,创建表空间按照单机的方式肯定是有问题的啊。这个问题其实还可以扩展为非归档模式下的数据文件修改路径,使用cp方式和rman方式都可以。大家可以自己做测试。转载于:https://blog.51cto.com/roidba/2072540