在開發機器上常常會遇到重裝系統的問題,重裝以前若是ORACLE沒有及時備份的話重裝以後就糾結了,數據還原很頭疼。
各類娘中只能找到一些ORACLE安裝與重裝系統前目錄相同的解決辦法,目錄不一樣就沒招了。
我用的是oracle11G。老版的應該類似。
通過個人嘗試,找到了幾個關鍵點,如今分享出來。sql
一、控制文件CONTROL01.CTL
oracle數據庫的控件文件有兩個,一個是在oradata\oradb中,名稱爲CONTROL01.CTL
另一個是在flash_recovery_area\SDMS_DEMO,名稱爲CONTROL01.CTL
控件文件也多是CONTROL02.CTL 或CONTROL03.CTL數據庫
二、控制文件中的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
Sand:將以前的CONTROL02.CTL替換到新的安裝目錄中,我剛開始按照教程,沒作這一步,沒法登陸。
四:啓動各項oracle服務,到這裏,platadmin已經能夠登陸了,可是發現system、sys等帳號沒法登陸,報錯
在sqlplus裏執行startup mount;命令也是報這個錯
ORA-12514: TNS: 監聽程序當前沒法識別鏈接描述符中請求的服務
緣由應該就是listener.ora中沒有添加SID_NAME等東西(詳情見下方)
http://blog.csdn.net/haiross/article/details/18559659
五:用sqlplus /nolog命令進入oracle命令符
六:用connect sys/change_on_install as sysdba;命令得到系統管理權限並登陸。
在cmd中執行如下命令,gis32是32位的TNS名
sqlplus sys/hch408@gis32 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中,替換目錄中原有的控制文件,注意:名稱不同的話改一下名字。app
(二) 方法二:SQL修改數據文件位置ide
SQL> shutdown immediate;
數據庫已經關閉。
已經卸載數據庫。
ORACLE 例程已經關閉。.net
同方法一3d
SQL> startup mount
ORACLE 例程已經啓動。
Total System Global Area 167772160 bytes
Fixed Size 1247900 bytes
Variable Size 96470372 bytes
Database Buffers 67108864 bytes
Redo Buffers 2945024 bytes
數據庫裝載完畢。日誌
九:使用startup nomount用無裝載模式啓動數據庫。
十: 設置數據庫爲裝載模式:alter database mount;blog
十一:查看數據文件清單: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;
好了,如今能夠用客戶端鏈接這個數據庫了。
Sand:然而,我卻報這個錯
可是不行。
因而,我只好把全部的都改回來,就能啓動了。可是,我這時,去登陸system帳號,也能登陸了。教程