ORA-01113: file xxxx needs media recovery


由於規范存儲位置以及存儲空間調整緣故需要移動表空間MRP_INDEX2的數據文件,如下所示,首先將表空間MRP_INDEX2脫機; 然后復制數據文件;接着重命名數據文件,最后將表空間MRP_INDEX2聯機.

在操作過后,最后一步將表空間MRP_INDEX2聯機上線時,出現了意外錯誤信息,如下所示:

SQL> ALTER TABLESPACE MRP_INDEX2 OFFLINE NORMAL;
 
Tablespace altered.
 
SQL> !cp /u03/flash_recovery_area/oradata/epps/mrp_index2_x01.dbf  /u04/epps/oradata/mrp_index2_x01.dbf
SQL> !cp /u03/flash_recovery_area/oradata/epps/mrp_index2_x02.dbf  /u04/epps/oradata/mrp_index2_x02.dbf
 
SQL> ALTER DATABASE RENAME FILE '/u03/flash_recovery_area/oradata/epps/mrp_index2_x01.dbf' TO '/u04/epps/oradata/mrp_index2_x01.dbf';
 
 
Database altered.

如下所示,在重命名文件時,其中一個文件路徑'u04/epps/oradata/mrp_index2_x02.dbf'弄錯了,當時一直沒有留意到這個錯誤,怕耽擱Tablespace的聯機上線時間。於是先將表空間MRP_INDEX2聯機上線

SQL> ALTER DATABASE RENAME FILE '/u03/flash_recovery_area/oradata/epps/mrp_index2_x02.dbf' TO 'u04/epps/oradata/mrp_index2_x02.dbf'
 
*
 
ERROR at line 1:
 
ORA-01511: error in renaming log/data files
 
ORA-01141: error renaming data file 86 - new file
 
'u04/epps/oradata/mrp_index2_x02.dbf' not found
 
ORA-01110: data file 86:
 
'/u03/flash_recovery_area/oradata/epps/mrp_index2_x02.dbf'
 
ORA-27037: unable to obtain file status
 
Linux Error: 2: No such file or directory
 
Additional information: 3
 
SQL> ALTER TABLESPACE MRP_INDEX2 ONLINE ;
 
Tablespace altered.
 

檢查過后發現了上面腳本錯誤,於是接着處理,但是將表空間MRP_INDEX2脫機后,沒有重新拷貝數據文件過去,直接重命名數據文件(SCN已經改變,導致下面ORA-01113錯誤),然后表空間聯機上線時,出現了下面錯誤

SQL> ALTER TABLESPACE MRP_INDEX2 OFFLINE NORMAL;
 
Tablespace altered.
 
SQL> ALTER DATABASE RENAME FILE '/u03/flash_recovery_area/oradata/epps/mrp_index2_x02.dbf' TO '/u04/epps/oradata/mrp_index2_x02.dbf';
 
Database altered.
 
SQL> 
 
SQL> ALTER TABLESPACE MRP_INDEX2 ONLINE ;
 
ALTER TABLESPACE MRP_INDEX2 ONLINE
 
*
 
ERROR at line 1:
 
ORA-01113: file 86 needs media recovery
 
ORA-01110: data file 86: '/u04/epps/oradata/mrp_index2_x02.dbf'

clip_image002

 

解決方法:

1:首先將對應報錯的數據文件脫機

SQL> alter database datafile '/u04/epps/oradata/mrp_index2_x02.dbf' offline;
 
Database altered.

2:其次recover這個數據文件

SQL> alter database recover datafile '/u04/epps/oradata/mrp_index2_x02.dbf';
 
Database altered.
 

3:然后將該數據文件聯機上線

SQL> alter database datafile '/u04/epps/oradata/mrp_index2_x02.dbf' online;
 
Database altered.

4:最后將該表空間MRP_INDEX2聯機上線。

SQL> ALTER TABLESPACE MRP_INDEX2 ONLINE ;

當然也可以使用RMAN還原,這里感覺使用SQL命令還原要簡單方便一點,最后刪除拷貝前的文件

rm /u03/flash_recovery_area/oradata/epps/mrp_index2_x01.dbf 
 
rm /u03/flash_recovery_area/oradata/epps/mrp_index2_x02.dbf 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM