ORACLE重裝之后恢復數據庫,相當於sqlserver的附加數據庫


在開發機器上經常會遇到重裝系統的問題,重裝之前如果ORACLE沒有及時備份的話重裝之后就糾結了,數據還原很頭疼。

各種娘中只能找到一些ORACLE安裝與重裝系統前目錄相同的解決辦法,目錄不同就沒招了。

我用的是oracle11G。老版的應該相似。

經過我的嘗試,找到了幾個關鍵點,現在分享出來。

1、控制文件CONTROL01.CTL

oracle數據庫的控件文件有兩個,一個是在oradata\oradb中,名稱為CONTROL01.CTL

另外一個是在flash_recovery_area\SDMS_DEMO,名稱為CONTROL01.CTL 

控件文件也可能是CONTROL02.CTL 或CONTROL03.CTL

2、控制文件中的datafile,tempfile,logfile

原數據庫中的文件路徑如果和重裝后的路徑不一致,需要將這些路徑全部修改之后就可以了,具體步驟如下:

一:重新創建oracle數據庫后手動關閉oracle所有服務

二:將oradata中新創建的數據庫目錄改名,d:\app\user\oradata\oradb,改為d:\app\user\oradata\oradb_new

三:將原來的數據庫目錄復制到該目錄下,復制后的結果是oradata中有d:\app\user\oradata\oradb_new和d:\app\user\oradata\oradb兩個目錄

d:\app\user\oradata\oradb是重裝之前數據庫的數據文件夾。

四:啟動各項oracle服務

五:用sqlplus /nolog命令進入oracle命令符

六:用connect sys/change_on_install as sysdba;命令獲得系統管理權限並登錄。

七:用select instance_name from v$instance;確認當前的數據庫實例是否正確,如果不是oradb需要使用 set oracle_sid來修改默認的oracle實例(沒記錯的話應該是這個命令可以問度娘查一下)。

八:將d:\app\user\oradata\oradb\CONTROL02.CTL控制文件復制到d:\app\user\flash_recovery_area\oradb中,替換目錄中原有的控制文件,注意:名稱不一樣的話改一下名字。

九:使用startup nomount用無裝載模式啟動數據庫。

十: 設置數據庫為裝載模式:alter database mount;

十一:查看數據文件清單:select name from v$datafile;

查看臨時文件清單:select name from v$tempfile;
查看日志文件清單:select * from v$logfile;

會看到如下結果:

E:\APP\USER\ORADATA\ORADB\SYSTEM01.DBF
E:\APP\USER\ORADATA\ORADB\SYSAUX01.DBF
E:\APP\USER\ORADATA\ORADB\UNDOTBS01.DBF
E:\APP\USER\ORADATA\ORADB\USERS01.DBF
E:\APP\USER\ORADATA\ORADB\SDMS_DATA01.DBF

十二:修改數據文件路徑,依次執行如下命令:

SQL> alter database rename file 'E:\APP\USER\ORADATA\ORADB\SYSTEM01.DBF' to 'D:\APP\USER\ORADATA\ORADB\SYSTEM01.DBF'

注意日志文件修改的時候有點糾結 文件名是redo01,因為oracle默認為大寫,我看成了red001,一直修改不成,另外一個,如果用select * from v$logfile;看到的只有一條日志文件,建議把原數據庫中的幾個都修改一下。

SQL> alter database rename file 'E:\APP\USER\ORADATA\ORADB\REDO03.LOG' to'D:\APP\USER\ORADATA\ORADB\REDO03.LOG';

十三:啟動數據庫:alter database open;

好了,現在可以用客戶端連接這個數據庫了。

 


免責聲明!

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



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