摘自:http://space./231499/viewspace-63722
WINDOWS是很脆弱的系統(tǒng),可能裝完沒幾天就會崩潰,,如果你在WINDOWS下裝有oracle,那怎么來恢復(fù)這個(gè)數(shù)據(jù)庫呢,?
一種方法是重裝數(shù)據(jù)庫后用IMP來導(dǎo)入原來的數(shù)據(jù),,但使用這種方法的前提是你有以前數(shù)據(jù)的備份,并且這種方法還有許多不足的地方,,如備份過舊,,可能會丟失許多數(shù)據(jù),、導(dǎo)入數(shù)據(jù)太長等。
一般情況下我們可以采用重用原來的數(shù)據(jù)庫的方法來恢復(fù),。在講步驟前先說說這種方法的原理,。
數(shù) 據(jù)庫與實(shí)例對應(yīng),當(dāng)數(shù)據(jù)庫服務(wù)啟動(dòng)后,,我們可以用SQLPLUS "/AS SYSDBA"方法連接到一個(gè)空閑的例程,,當(dāng)執(zhí)行startup啟動(dòng)數(shù)據(jù)庫時(shí),首先會在%ORACLE_HOME%/database下找當(dāng)前SID對應(yīng) 的參數(shù)文件(PFILE或者SPFILE)和密碼文件,,然后啟動(dòng)例程,;接著根據(jù)參數(shù)文件記錄的信息找到控制文件,讀取控制文件的信息,,這就是mount數(shù) 據(jù)庫了,;最終根據(jù)控制文件的信息打開數(shù)據(jù)庫。這個(gè)過程相當(dāng)于對數(shù)據(jù)庫著了一次冷備份的恢復(fù),。
下面的具體步驟:(我們假設(shè)原庫的所有相關(guān)文件都存在)
1,、安裝數(shù)據(jù)庫軟件
只需安裝同版本的數(shù)據(jù)庫軟件即可,不需要?jiǎng)?chuàng)建數(shù)據(jù)庫,。最好安裝在和原來數(shù)據(jù)庫同樣的%ORACLE_HOME%下,,省得還要修改參數(shù)文件路徑等。(直接覆蓋原來的oracle即可)
再次強(qiáng)調(diào),,只安裝軟件,,不創(chuàng)建數(shù)據(jù)庫,否則將數(shù)據(jù)庫軟件安裝在同樣的目錄下舊的部分?jǐn)?shù)據(jù)文件會被覆蓋,,這樣數(shù)據(jù)庫也不能被恢復(fù)了,。
2、新建一個(gè)實(shí)例
在cmd窗口執(zhí)行
oradim -new -sid oracle9i
注意,,這個(gè)SID名稱最好與你以前的SID一樣,,否則在啟動(dòng)的數(shù)據(jù)需要指明pfile,并且需要重建密碼文件,,比較麻煩,。(當(dāng)然,如果你就不想用原來的SID也可以,,把參數(shù)文件,、密碼文件的名稱都改成與新SID對應(yīng)的名稱)。
3,、啟動(dòng)數(shù)據(jù)庫
做完以上兩步,,就可以啟動(dòng)數(shù)據(jù)庫了,。
用net start 檢查oracle服務(wù)是否已經(jīng)啟動(dòng),,如果oracle服務(wù)沒有啟動(dòng),則在cmd下運(yùn)行如下命令:
net start oracleserviceoracle9i
然后設(shè)定必要的環(huán)境變量,,在cmd窗口運(yùn)行
set ORACLE_SID=oracle9i
接著連接數(shù)據(jù)庫
sqlplus "/as sysdba"
startup
如果正常的話,,數(shù)據(jù)庫應(yīng)該就能起來了
4、啟動(dòng)監(jiān)聽
lsnrctl start
5,、后續(xù)工作
經(jīng)過以上幾步后,基本上就可以使用oracle了,但是使用起來有點(diǎn)不方便,如每次在cmd中啟動(dòng)數(shù)據(jù)庫都需要先SET ORACLE_SID,、在本機(jī)連接數(shù)據(jù)庫也都需要加上@TNSNAME等,。我們可以修改注冊表,,添加ORACLE_SID的信息,避免這些麻煩,。
在注冊表的HKEY_LOCAL_MACHINESOFTWAREORACLE下新建字符串值,名稱為ORACLE_SID,值為oracle9i,。
也可以將以下內(nèi)容保持成一個(gè)后綴名為reg的文件(文件名隨便起),然后雙擊,,即可將信息導(dǎo)入到注冊表中,。
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINESOFTWAREORACLE]
"ORACLE_SID"="oracle9i"
注意,以上步驟都是在%ORACLE_HOME%,、%ORACLE_SID%都與原庫一樣的情況下討論的,,雖然%ORACLE_HOME%和%ORACLE_SID%可以與原庫不一樣,但為了減少麻煩和出錯(cuò)的幾率,,建議不要改變則兩個(gè)值,。