FAN 支援提供快速連線故障移轉,這是一項 Oracle 資料庫高可用性功能。 它允許 PHP OCI8 腳本在資料庫機器或資料庫實例不可用時收到通知。 如果沒有 FAN,OCI8 可能會掛起,直到發生 TCP 超時並返回錯誤,這可能需要幾分鐘的時間。 在 OCI8 中啟用 FAN 可以讓應用程式偵測錯誤並重新連線到可用的資料庫實例,而網頁使用者不會察覺到中斷。
當 PHP 連結的 Oracle 用戶端程式庫和 Oracle 資料庫版本為 10gR2 或更高版本時,可以使用 FAN 支援。
FAN 讓 Oracle 叢集技術 (RAC) 的使用者受益,因為可以立即連線到倖存的資料庫實例。 使用 Oracle Data Guard 和代理程式的使用者將會在備用資料庫上線時看到產生的 FAN 事件。 獨立資料庫將在資料庫重新啟動時發送 FAN 事件。
對於活動連線,當機器或資料庫實例不可用時,目前正在呼叫的 OCI8 擴充功能會返回連線失敗錯誤。 在後續的 PHP 腳本重新連線時,將會建立與倖存資料庫實例的連線。 OCI8 擴充功能還會透明地清除受資料庫機器或實例故障影響的所有閒置連線,因此 PHP 連線呼叫將建立新的連線,而腳本不會察覺到任何服務中斷。
當 oci8.events 為 On
時,建議將 oci8.ping_interval 設定為 -1 以停用 ping,因為啟用 FAN 事件會針對因服務中斷而失效的閒置連線提供主動連線管理。
要在 PHP OCI8 中啟用 FAN 支援,請使用 Oracle 10gR2 或更高版本的程式庫建置 PHP OCI8,然後執行以下步驟
SQL> execute dbms_service.modify_service( SERVICE_NAME => 'sales', AQ_HA_NOTIFICATIONS => TRUE);
oci8.events = On