由於規范存儲位置以及存儲空間調整緣故需要移動表空間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'
解決方法:
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

