談談WINDOWS下重灌系統後oracle的恢復

space6212發表於2019-07-20

WINDOWS是很脆弱的系統,可能裝完沒幾天就會崩潰,如果你在WINDOWS下裝有oracle,那怎麼來恢復這個資料庫呢?


一種方法是重灌資料庫後用IMP來匯入原來的資料,但使用這種方法的前提是你有以前資料的備份,並且這種方法還有許多不足的地方,如備份過舊,可能會丟失許多資料、匯入資料太長等。


一般情況下我們可以採用重用原來的資料庫的方法來恢復。在講步驟前先說說這種方法的原理。

資料庫與例項對應,當資料庫服務啟動後,我們可以用SQLPLUS "/AS SYSDBA"方法連線到一個空閒的例程,當執行startup啟動資料庫時,首先會在%ORACLE_HOME%/database下找當前SID對應的引數檔案(PFILE或者SPFILE)和密碼檔案,然後啟動例程;接著根據引數檔案記錄的資訊找到控制檔案,讀取控制檔案的資訊,這就是mount資料庫了;最終根據控制檔案的資訊開啟資料庫。這個過程相當於對資料庫著了一次冷備份的恢復。

下面的具體步驟:(我們假設原庫的所有相關檔案都存在)
1、安裝資料庫軟體
只需安裝同版本的資料庫軟體即可,不需要建立資料庫。最好安裝在和原來資料庫同樣的%ORACLE_HOME%下,省得還要修改引數檔案路徑等。(直接覆蓋原來的oracle即可)
再次強調,只安裝軟體,不建立資料庫,否則將資料庫軟體安裝在同樣的目錄下舊的部分資料檔案會被覆蓋,這樣資料庫也不能被恢復了。

2、新建一個例項
在cmd視窗執行
oradim -new -sid oracle9i
注意,這個SID名稱最好與你以前的SID一樣,否則在啟動的資料需要指明pfile,並且需要重建密碼檔案,比較麻煩。(當然,如果你就不想用原來的SID也可以,把引數檔案、密碼檔案的名稱都改成與新SID對應的名稱)。

3、啟動資料庫
做完以上兩步,就可以啟動資料庫了。
用net start 檢查oracle服務是否已經啟動,如果oracle服務沒有啟動,則在cmd下執行如下命令:
net start oracleserviceoracle9i
然後設定必要的環境變數,在cmd視窗執行
set ORACLE_SID=oracle9i

接著連線資料庫
sqlplus "/as sysdba"
startup

如果正常的話,資料庫應該就能起來了

4、啟動監聽
lsnrctl start

5、後續工作
經過以上幾步後,基本上就可以使用oracle了,但是使用起來有點不方便,如每次在cmd中啟動資料庫都需要先SET ORACLE_SID、在本機連線資料庫也都需要加上@TNSNAME等。我們可以修改登錄檔,新增ORACLE_SID的資訊,避免這些麻煩。

在登錄檔的HKEY_LOCAL_MACHINESOFTWAREORACLE下新建字串值,名稱為ORACLE_SID,值為oracle9i。
也可以將以下內容保持成一個字尾名為reg的檔案(檔名隨便起),然後雙擊,即可將資訊匯入到登錄檔中。

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINESOFTWAREORACLE]
"ORACLE_SID"="oracle9i"


注意,以上步驟都是在%ORACLE_HOME%、%ORACLE_SID%都與原庫一樣的情況下討論的,雖然%ORACLE_HOME%和%ORACLE_SID%可以與原庫不一樣,但為了減少麻煩和出錯的機率,建議不要改變則兩個值。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/231499/viewspace-63722/,如需轉載,請註明出處,否則將追究法律責任。

相關文章