OCI8 FAN(Fast Application Notification) 지원

FAN 지원은 Oracle Database 고가용성 기능인 빠른 연결 장애 조치를 제공합니다. 이를 통해 데이터베이스 머신이나 데이터베이스 인스턴스를 사용할 수 없게 될 때 PHP OCI8 스크립트에 알림을 보낼 수 있습니다. FAN이 없으면 OCI8은 TCP 시간 초과가 발생하고 몇 분 정도 걸릴 수 있는 오류가 반환될 때까지 중단될 수 있습니다. OCI8에서 FAN을 활성화하면 웹 사용자가 중단을 인지하지 않고도 애플리케이션이 오류를 감지하고 사용 가능한 데이터베이스 인스턴스에 다시 연결할 수 있습니다.

FAN 지원은 PHP가 연결하는 Oracle 클라이언트 라이브러리와 Oracle Database가 버전 10gR2 이상일 때 사용할 수 있습니다.

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*Plus와 같은 프로그램을 사용하여 데이터베이스 서비스가 FAN 이벤트를 게시할 수 있도록 합니다. 예를 들면 다음과 같습니다.
    SQL> execute dbms_service.modify_service(
                   SERVICE_NAME        => 'sales',
                   AQ_HA_NOTIFICATIONS => TRUE);
                        
  • php.ini를 편집하고 추가하십시오.
    oci8.events = On
                        
  • 응용 프로그램이 아직 OCI8 오류 조건을 처리하지 않는 경우 오류를 감지하고 적절한 조치를 취하도록 수정하십시오. 여기에는 재연결 및 재실행 명령문이 포함될 수 있습니다.
  • Oracle Database 10gR2 이상에 연결하여 애플리케이션을 실행합니다.