(技能篇)双机热备之Oracle切换故障处理
背景:
以前做的的一個項目中使用了某國產雙機熱備產品,但是在數據庫做雙機熱備時出現了一些問題,沒辦法。不得不研究一番了!經過兩天的研究終于問題得以解決。將問題處理步驟記錄下來以備后用,也希望能幫助到需要的人。
首先介紹下我們的環境:
兩臺服務器
一個存儲
兩個雙機熱備軟件
一、雙擊熱備工作流程
在兩臺服務器上分別安裝一個雙機熱備軟件,并且兩臺服務器都掛載了存儲,雙機熱備軟件一直在監測兩臺服務器上配置的服務項是否正常,當監測到某臺服務器上雙機軟件中配置的服務啟動不了或者出現故障,雙機軟件自動切換另一臺服務器上并啟動雙機軟件配置的所有服務。
二、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 sysdbashutdown immediate
startup pfile=\'D:\\app\\mypfile\\init.ora\';
exit;
3、編寫批處理腳本test.bat,內容:
sqlplus /nolog @D:\\app\\mypfile\\test.sql4、這時候在雙機熱備軟件中在oracle啟動前添加test.bat,這樣問題解決了;
?
?轉載于:https://www.cnblogs.com/zhengjinsheng/p/11269570.html
總結
以上是生活随笔為你收集整理的(技能篇)双机热备之Oracle切换故障处理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何创建一个FeatureClass,I
- 下一篇: Json解析工具类