配置 Oracle RAC 的兩段式確定分散式交易
當 Oracle 試圖回復跨越多重 Oracle RAC 節點的兩段式確定分散式交易時,Oracle 10g 的 Real Application Cluster (RAC) 配置會有一個內在的交易管理程式問題。 當某個節點失效時,可能會發生問題,在 Oracle RAC 針對失效的節點來完成必要的回復動作之前,Oracle 會開啟其他仍存活的節點來處理各項業務。 應用程式伺服器維護交易親緣性的能力,可讓您回避這個問題。
關於這項作業
ORA- 24756: transaction does not exist
如果發現這個錯誤,Oracle 資料庫管理者可能需要強制回復或確定程序來手動解析不確定的交易。
不過,如果您不想要人為介入,您可以配置自動而交易回復策略。
如果未涉及不確定的交易,任何後續的交易都會收到下列異常狀況:
ORA-01591 lock held by in-doubt distributed transaction
結果是資料庫的這個部分將無法使用。透通回復策略的關鍵是使廣域交易不可能通過多重 RAC 節點而跨越多個交易分支。 交易分支對應於參加廣域交易的資料庫連線。 如果廣域兩段式確定交易中的所有連線都起源於相同的節點,應該不會出現交易回復問題。 請搭配應用程式伺服器來配置 Oracle RAC,以防止出現兩段式交易的錯誤。
應用程式伺服器會維護送入連線的交易親緣性,您可以利用這個特性,以兩段式確定交易來配置 Oracle RAC 的自動回復。 如果您實作這個配置,會從相同的 Oracle 節點接收來自給定應用程式伺服器的所有連線,各連線會終止於相同的節點。 這個配置可以避免交易跨越多個節點的狀況,如果有一或多個 Oracle 節點停機,應該不會有回復問題。
程序
結果
srvctl start service -d -s
如果 RAC 節點停止運作,在 Oracle RAC 清理和回復完成之前,Oracle 不會進行 DTP 服務的失效接手。
即使 Oracle 節點重新運作,Oracle DTP 服務也不會返回到全新重新啟動的 RAC 節點。
相反地,您必須以手動方式,將服務移到重新啟動的 RAC 節點。
當您在 Oracle 服務上配置 DTP 時,您已將負載平衡從 Oracle JDBC 提供者傳送到應用程式伺服器。 工作量的分散將由應用程式伺服器,而不是 Oracle 來進行,正因為如此,您建立的服務並不實作負載平衡,只會使用單一主要節點。 這個配置可以防止交易程序跨越多個 RAC 節點的狀況,能夠緩和一或多個 RAC 節點失效時所可能產生的回復問題。