1. 程式人生 > >Oracle之雙機熱備部署+切換故障問題解決

Oracle之雙機熱備部署+切換故障問題解決

str 但是 雙機切換 流程 star 運行 需要 har 問題處理

最近實施的一個項目中使用了某國產雙機熱備產品,但是在數據庫做雙機熱備時出現了一些問題,沒辦法。不得不研究一番了!經過兩天的研究終於問題得以解決。將問題處理步驟記錄下來以備後用,也希望能幫助到需要的人。
一、首先介紹下我們的環境:兩臺服務器+一個存儲+兩個雙機熱備軟件
二、雙機熱備工作流程:在兩臺服務器上分別安裝一個雙機熱備軟件,並且兩臺服務器都掛載了存儲,雙機熱備軟件一直在監測兩臺服務器上配置的服務項是否正常,當監測到某臺服務器上雙機軟件中配置的服務啟動不了或者出現故障,雙機軟件自動切換另一臺服務器上並啟動雙機軟件配置的所有服務。
三、當然本片文章是以數據庫的雙機熱備為主,我就將oracle數據庫的雙機搭建過程和問題處理做一總結
第一步:掛載存儲至兩臺服務器上(例如兩臺服務器的掛載盤符為E盤);
第二步:在服務器A上安裝oracle:將oracle安裝文件安裝在D盤下,數據文件安裝在存儲E盤上,安裝完成後並將Oracle服務設置為手動;
第三步:關掉服務器A並進入服務器B:將服務器A安裝在存儲E盤的oracle的數據文件更改其他名稱;
第四步:按照第二步的步驟在服務器B上安裝oracle(需要註意的是B和A服務器安裝Oracle的安裝文件和數據文件路徑必須完全一樣);
第五步:在雙機熱備軟件上配置oracle服務,並配置一個虛擬IP供外部訪問,到時候應用軟件只需連接該虛擬IP和端口就可以訪問數據庫了;
以上是oracle雙機的安裝步驟,那樣只是安裝完成但是實際上是有隱患的,我這邊就真正出現了,
四、

問題現象:只要雙機熱備軟件切換數據庫那麽整個數據庫就宕了!無法啟動;
五、問題原因:因為最初一個服務器A上Oracle正常運行的時候,Oracle控制文件已經記錄下了該數據庫運行的所有狀態,當oracle雙機切換到服務器B的時候,oracle監測到控制文件保存的狀態和存儲上的數據文件真實狀態一不一致,那麽自然數據庫就不會切換到B上了。
六、解決方法:自定義初始化文件,並修改自定義的初始文件的配置內容,使得控制文件都加載的是存儲上的控制文件用以保持兩臺服務器的控制文件和數據文件狀態一致,並使兩臺服務器的數據庫啟動時都加載自定義的初始化文件,具體方法如下:
1、使用pl/sql dev 執行CREATE PFILE=‘C:\INIT.ORA‘ FROM SPFILE;語句,並且修改*.control_files參數到E盤下的控制文件,將生成的INIT.ORA復制到D:\app\mypfile\;

orcl.__db_cache_size=1946157056
orcl.__java_pool_size=67108864
orcl.__large_pool_size=16777216
orcl.__oracle_base=\d:\\app\\Administrator\#ORACLE_BASE set from environment
orcl.__pga_aggregate_target=1811939328
orcl.__sga_target=2717908992
orcl.__shared_io_pool_size=0
orcl.__shared_pool_size=654311424
orcl.__streams_pool_size=0 *.audit_file_dest=\d:\\app\\Administrator\\admin\\orcl\\adump\ *.audit_trail=\db\ *.compatible=\11.2.0.0.0\ *.control_files=\e:\\app\\Administrator\\oradata\\orcl\\control01.ctl\,\e:\\app\\Administrator\\oradata\\orcl\\control02.ctl\ *.db_block_size=8192 *.db_domain=\\ *.db_name=\orcl\ *.db_recovery_file_dest=\d:\\app\\Administrator\\flash_recovery_area\ *.db_recovery_file_dest_size=4102029312 *.diagnostic_dest=\d:\\app\\Administrator\ *.dispatchers=\(PROTOCOL=TCP) (SERVICE=orclXDB)\ *.memory_target=4518313984 *.open_cursors=300 *.processes=150 *.remote_login_passwordfile=\EXCLUSIVE\ *.undo_tablespace=\UNDOTBS1\

2、編寫sql腳本test.sql並將腳本放置到D:\app\mypfile\,內容:

connect / as sysdba
shutdown immediate
startup pfile=\D:\\app\\mypfile\\init.ora\;
exit;

3、編寫批處理腳本test.bat,內容:

sqlplus /nolog @D:\\app\\mypfile\\test.sql

4、這時候在雙機熱備軟件中在oracle啟動前添加test.bat,這樣問題解決了;

Oracle之雙機熱備部署+切換故障問題解決