由於溝通問題,導致數據庫遷移過程中,目標服務器中的數據庫被卸載,頂替。萬幸的是,遷移數據庫的技術人員,沒有把數據文件刪除,還有機會對數據進行恢復。
數據庫是Oracle11G 版本是11.0.2.4 ,
數據庫恢復前,保證數據庫版本一致,這樣能減少很多麻煩,一開始我這邊的數據庫用的是11.0.2.0,導致數據庫還原工作進行的到一半的時候,還原失敗。11.0.2.4的數據庫安裝文件、補丁還不好找,耽誤很長時間。
安裝過程中 出現 權限不足的問題,根據提示內容進行問題處理。本文主要過程參考他人工作,過程中的遇到的各種問題進行匯總,以備后來人參考
下面進行數據庫的還原工作
1、裝相同的Oracle 11g數據庫並創建一個與要恢復的數據庫相同的實例; 版本要完全一致。
2,以sysdba身份登錄sqlplus;
>>sqlplus /nolog;
>>conn / as sysdba;
3、查詢版本號、字符集,在此進行查詢,主要是確定版本號和源數據庫一致。能確定一致,可省略這一步
select * from v$version;
select userenv('language') from dual;
4、對控制文件進行備份;備份控件文件到trace目錄的trace文件;
>> show parameter dump_dest
查看trace目錄
>>alter database backup controlfile to trace;
備份trace文件
找到oracle的安裝目錄:~\app\Administrator\diag\rdbms\orcl\orcl\trace文件夾下,按修改時間降序,找到最近的trace文件。備份好。
5、停止數據庫實例;
>>shutdown immediate
6、備份~\app\Administrator\oradata\orcl實例目錄下的所有文件,接着將該實例目錄下的所有文件刪除,把需恢復的數據庫的orcl實例目錄下的所有文件拷貝至此目錄下,存儲在其它位置的表空間數據文件也需要拷貝到對應位置或者也可以放到orcl實例目錄下。(重建控制文件可以更改表空間數據文件的存儲路徑)。理論上 只拷貝DBF文件就行
7、以sysdba進入並執行startup nomount。把數據庫啟動到nomount狀態。
>>startup nomount
8、從備份出來trace文件中拷貝CREATE CONTROLFILE部分語句來重建控制文件:
Log文件文件大小要和實際文件一致;
DATAFILE應根據實際情況增刪表空間數據文件記錄,別忘了添加源數據庫文件、最后一個數據庫文件,不要加‘,’。
9、>>recover database;
此處會報錯,基本不用管
10、增加臨時表空間
ALTER TABLESPACE &tablespace_name ADD DATAFILE 'TEMP01.DBF' SIZE 2G;
11、>>alter database open;
第10、11順序忘記了,執行看結果就行,沒有任何錯誤,這個順序是對的,有錯誤 10 11進行顛倒
12、恢復完成,登錄數據庫進行測試。
第13步,可不做
13、完成后,登錄 導出文件。可在其他庫上進行數據還原
針對此次還原,還是預防為主,定期進行異地備份,數據庫遷移前再備份。遇事不要慌,找補救措施,尋找解決方案。