ORACLE 實例及RAC


ORACLE 實例及RAC

一、問題

(1)現象

   部署一個sh腳本到生產oracle服務器上,該sh腳本負責讀取外系統提供的txt文件,然后用sql loader入庫,由oracle服務器的crontab定時調用這個sh腳本。腳本在測試庫上測試非常正常,數據能正常入庫,但是,生產上不能,報錯,

錯誤信息為:SQL*Loader-128: unable to begin a session
                ORA-01034: ORACLE not available
                ORA-27101: shared memory realm does not exist

檢查oracleORACLE_HOME等參數,發現正常。相同參數部署的其他sh腳本能在生產上正常運行。

 (2)分析

   測試環境是單數據庫實例環境,生產的oracle,是RAC環境。RAC環境一般包含兩台物理機器,一個存儲。兩個物理機器上每個機器部署一個oracle,同時訪問存儲上的數據庫文件。兩個實例擁有不同的SID。其他sh腳本能正常運行,是因為運行在正確的物理機器上。例如,如果有兩台機器,sid分別為A機器為resdb1B機器為resdb2。如果腳本里面定義的SID=resdb1,運行腳本的機器為B,就會報錯,運行腳本機器為A,則正常。以上錯誤是因為在錯誤的機器上運行了腳本導致的。

(3)解決

   保持兩者一致!根據腳本里面配置的sid,找到對應的機器運行腳本!

二、ORACLE實例和RAC介紹

   

     ORACLE_SID:即ORACLE System IDentifier,它是一個環境變量,oracle 用來唯一地標識一個Oracle實例。在我們使用在sqlplus工具中startup啟動數據庫時,OS就是利用這個環境變量來fork創建構成Oracle實例的各個進程,以及來命名一些文件的名字

      Oracle實例:實例是指操作系統中一系列的進程和進程所分配的內存塊。通俗的說,實例是訪問數據庫文件的通道。Oracle RAC 就是多個數據庫實例可以同時打開相同的數據庫,進行並發的操作。多實例數據庫是 Oracle高可用架構和高可擴展性架構的核心技術, 多個實例同時打開數據庫進行讀寫,可以避免某個實例故障導致的系統不可用,同時多實例實現負載分擔,也可以減輕某個實例的工作負載,從而提高整體吞吐能力。

   RAC是一種充分利用服務器資源的高可用性實現方案,RAC的並行模式實現方式與傳統的雙機熱備實現方式截然不同,如圖:

   兩個節點在傳統的雙機熱備環境中,始終有一台機器作為備用機,只有當主節點出現問題的時候才會切換到備用機上;如果主機一直沒有出現問題,那么備用機始終處於空閑狀態,這在資源的利用上以及成本方面都是巨大的浪費。但RAC是一種並行模式的架構,也就是說,兩個節點的集群節點間是一種並行運行的關系,當一台機器出現問題,請求會自動轉發到另一台機器,沒有任何一台機器作為備用機一直不被使用,這樣就充分利用了服務器資源。同時,傳統的雙機熱備構架在出現問題時,常常需要數分鍾的切換時間,而RAC在出現問題時,針對存在的會話只需要數十秒的時間就可以完成失敗切換過程,對新會話的創建不會產生影響,在切換時間上也有比較大的優勢。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM