csdn上的朋友遇到了這樣的問(wèn)題,莫名的系統(tǒng)壞掉了,恢復(fù)了系統(tǒng)后,datafile找不到了,不過(guò)在壞之前剛剛做了備份
問(wèn)題如下
1.前幾天裝有ORACLE數(shù)據(jù)庫(kù)的機(jī)子癱瘓重裝了系統(tǒng),里面有一些正在使用的數(shù)據(jù).
2.之前在關(guān)掉服務(wù)的情況下拷貝ORADATA下的數(shù)據(jù),但丟失了表空間文件(不知道為啥,我把表空間放在E盤(pán)我的名字下,
找不到了).原有的數(shù)據(jù)庫(kù)安裝在E盤(pán),在恢復(fù)過(guò)程中 alter database open; log出現(xiàn)以下問(wèn)題:
*** SERVICE NAME:() 2009-06-09 18:23:19.913
*** SESSION ID:(167.1) 2009-06-09 18:23:19.913
ORA-01157: cannot identify/lock data file 1 - see DBWR trace file
ORA-01110: data file 1: ‘G:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSTEM01.DBF’
ORA-27041: unable to open file
OSD-04002: 無(wú)法打開(kāi)文件
O/S-Error: (OS 21) 設(shè)備未就緒。
ORA-01157: cannot identify/lock data file 2 - see DBWR trace file
ORA-01110: data file 2: ‘G:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\UNDOTBS01.DBF’
ORA-27041: unable to open file
OSD-04002: 無(wú)法打開(kāi)文件
O/S-Error: (OS 21) 設(shè)備未就緒。
ORA-01157: cannot identify/lock data file 3 - see DBWR trace file
ORA-01110: data file 3: ‘G:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSAUX01.DBF’
ORA-27041: unable to open file
OSD-04002: 無(wú)法打開(kāi)文件
O/S-Error: (OS 21) 設(shè)備未就緒。
ORA-01157: cannot identify/lock data file 4 - see DBWR trace file
ORA-01110: data file 4: ‘G:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\USERS01.DBF’
ORA-27041: unable to open file
OSD-04002: 無(wú)法打開(kāi)文件
O/S-Error: (OS 21) 設(shè)備未就緒。
ORA-01157: cannot identify/lock data file 5 - see DBWR trace file
ORA-01110: data file 5: ‘G:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\EXAMPLE01.DBF’
ORA-27041: unable to open file
OSD-04002: 無(wú)法打開(kāi)文件
O/S-Error: (OS 21) 設(shè)備未就緒。
ORA-01157: cannot identify/lock data file 6 - see DBWR trace file
ORA-01110: data file 6: ‘E:\ZHANGMICHUAN\ORACL_TABLESPACE\QTY_TSPACE.ORA’
ORA-27047: unable to read the header block of file
OSD-04006: ReadFile() 失敗, 無(wú)法讀取文件
dbf 文件在E盤(pán)\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\ 目錄下,能有辦法將G盤(pán)改為E盤(pán)嗎?還有辦法恢復(fù)嗎?
我給他的解決方案
直接通過(guò)alter database rename file 來(lái)重新指定每個(gè)datafile的文件路徑,
首先是到mount狀態(tài)
SQL>startup mount;
如果不能到mount狀態(tài),就先修復(fù)spfile和control file,不夠根據(jù)你的信息,很幸運(yùn)你沒(méi)有中招,這兩個(gè)你都沒(méi)有問(wèn)題。
不知道你的歸檔是否完善和正確,最好還是基于非歸檔的模式吧
SQL>alter database noarchivelog;
修改datafile路徑
例如如果現(xiàn)在的備份路徑在E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\的話
SQL>alter database rename file ‘G:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\USERS01.DBF’ to ‘E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\USERS01.DBF’;
依次對(duì)所有的datefile做以上處理
啟動(dòng)到open模式
SQL> alter database open;
檢查datefile路徑
SQL> select name from v$datafile;
以上這樣的恢復(fù)方法,是確認(rèn)你的E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORADATA下有原來(lái)的datafile的備份喲,如果不是的話,就要用別的方法。
注意操作前,一定要冷備份好你原來(lái)數(shù)據(jù)庫(kù)。
如對(duì)本文有疑問(wèn),請(qǐng)?zhí)峤坏浇涣髡搲瑥V大熱心網(wǎng)友會(huì)為你解答??! 點(diǎn)擊進(jìn)入論壇