mirror of
https://github.com/php/doc-ru.git
synced 2025-07-24 09:59:46 +00:00
Update to English taf.xml
This commit is contained in:
@ -1,53 +1,54 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<!-- EN-Revision: 28529d3539b850e870e3aa97570f4db0e53daa03 Maintainer: rjhdby Status: ready -->
|
<!-- EN-Revision: f4c44b86948f70a7e89f582b500e2595452e00f0 Maintainer: rjhdby Status: ready -->
|
||||||
<!-- Reviewed: no -->
|
<!-- Reviewed: no -->
|
||||||
<chapter xml:id="oci8.taf" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
|
<chapter xml:id="oci8.taf" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||||
<title>Поддержка прозрачного для приложений восстановления после отказа (Transparent Application Failover или TAF) для OCI8</title>
|
<title>Поддержка прозрачного для приложений восстановления после отказа (Transparent Application Failover или TAF) для OCI8</title>
|
||||||
<section>
|
<para>
|
||||||
<para>
|
TAF — функция базы данных Oracle, которая обеспечивает высокую доступность.
|
||||||
TAF — это механизм базы данных Oracle обеспечивающий высокую доступность.
|
TAF позволяет OCI8-приложениям PHP автоматически переподключаться
|
||||||
Он позволяет приложениям PHP использующим OCI8 автоматически переподключаться
|
к предварительно настроенной базе данных при сбое подключения к базе данных
|
||||||
к резервной базе данных в случае сбоя на основной или при сетевых проблемах..
|
из-за сбоя экземпляра или сети.
|
||||||
</para>
|
</para>
|
||||||
<para>
|
<para>
|
||||||
В сконфигурированной системе базы данных Oracle, TAF происходит когда
|
В сконфигурированной системе базы данных Oracle TAF возникает, когда
|
||||||
приложение PHP определяет, что экземпляр базы данных недоступен.
|
PHP-приложение обнаруживает, что экземпляр базы данных не работает или недоступен.
|
||||||
В этом случае происходит соединение с другим узлом в
|
Он устанавливает соединение с другим узлом в конфигурации
|
||||||
Oracle <link xlink:href="&url.oracle.taf.rac;">RAC</link>. Это может быть горячий
|
Oracle <link xlink:href="&url.oracle.taf.rac;">RAC</link>, базой данных горячего
|
||||||
резерв или тот же самый экземпляр базы данных. Более подробно о OCI TAF
|
резерва или самим экземпляром базы данных. Подробнее об OCI TAF
|
||||||
читайте в <link xlink:href="&url.oracle.taf.ociguide;">Oracle
|
рассказывает краткое руководство <link xlink:href="&url.oracle.taf.ociguide;">Oracle
|
||||||
Call Interface Programmer's Guide</link>.
|
Call Interface Programmer's Guide</link>.
|
||||||
</para>
|
</para>
|
||||||
<para>
|
<para>
|
||||||
Функцию обратного вызова для приложения можно зарегистрировать с помощью
|
Callback-функцию приложения регистрируют функцией
|
||||||
<function>oci_register_taf_callback</function>. В процессе восстановления после
|
<function>oci_register_taf_callback</function>. В процессе восстановления после
|
||||||
отказа исполнение приложения будет приостановлено и будет вызвана зарегистрированная
|
отказа исполнение приложения приостанавливается и вызывается зарегистрированная
|
||||||
функция обратного вызова. Эта функция будет оповещать приложение о событиях
|
callback-функция. Эта функция будет оповещать приложение о событиях
|
||||||
процесса восстановления. Если восстановление завершилось успешно, управление будет
|
процесса восстановления. Если восстановление завершилось успешно, управление
|
||||||
возвращено приложению. Если восстановление завершилось неудачно, то все последующие
|
возвращается приложению. Если восстановление завершилось неудачно, то очередные
|
||||||
обращения к базе данных будут завершаться с ошибкой, так как отсутствует подключение.
|
обращения к базе данных завершаются с ошибкой, поскольку отсутствует подключение.
|
||||||
</para>
|
</para>
|
||||||
<para>
|
<para>
|
||||||
Когда соединение переходит к другой базе данных, обратный вызов может сбросить
|
Когда соединение переходит к другой базе данных, обратный вызов может сбросить
|
||||||
любое необходимое состояние соединения, к примеру перевыполнить любую
|
любое необходимое состояние соединения, например, перевыполнить
|
||||||
необходимую команду ALTER SESSION если для сервиса базы данных не включён
|
необходимую команду ALTER SESSION, если для сервиса базы данных не включили параметр
|
||||||
-failover_restore.
|
-failover_restore.
|
||||||
</para>
|
</para>
|
||||||
<para>
|
<para>
|
||||||
Регистрацию функции обратного вызова можно удалить с помощью <function>oci_unregister_taf_callback</function>.
|
Регистрацию callback-функции приложения удаляют вызовом функции <function>oci_unregister_taf_callback</function>.
|
||||||
</para>
|
</para>
|
||||||
</section>
|
|
||||||
<section>
|
<section>
|
||||||
<title>настройка TAF</title>
|
<title>настройка TAF</title>
|
||||||
<para>
|
<para>
|
||||||
TAF можно настроить на стороне PHP OCI8 или в конфигурации базы данных.
|
TAF можно настроить на стороне PHP-модуля OCI8 или в конфигурации базы данных.
|
||||||
Если настроено и там и там, то предпочтение отдаётся настройкам на стороне базы данных.
|
Если настроено и там, и там, то предпочтение отдаётся настройкам на стороне базы данных.
|
||||||
</para>
|
</para>
|
||||||
<para>
|
<para>
|
||||||
Настроить TAF в PHP OCI8 (на стороне клиента) можно добавив параметр
|
Настроить TAF в PHP-модуле OCI8 (на стороне клиента) можно через параметр
|
||||||
FAILOVER_MODE в часть CONNECT_DATA дескриптора соединения.
|
FAILOVER_MODE в части CONNECT_DATA дескриптора соединения.
|
||||||
Более подробно о настройке TAF на стороне клиента читайте в
|
Подробнее о настройке TAF на стороне клиента рассказывает секция
|
||||||
<link xlink:href="&url.oracle.taf.clientconfig;">
|
«Настройка прозрачного переключения приложений при отказе» (Configuring Transparent Application Failover)
|
||||||
|
краткого руководства <link xlink:href="&url.oracle.taf.clientconfig;">
|
||||||
Oracle Database Net Services Administrator's Guide</link>.
|
Oracle Database Net Services Administrator's Guide</link>.
|
||||||
</para>
|
</para>
|
||||||
<para>
|
<para>
|
||||||
@ -72,33 +73,33 @@
|
|||||||
</informalexample>
|
</informalexample>
|
||||||
</para>
|
</para>
|
||||||
<para>
|
<para>
|
||||||
Также можно настроить TAF на стороне базы данных путём модификации сервиса
|
Настроить TAF также можно на стороне базы данных, изменив целевую службу
|
||||||
с помощью <link xlink:href="&url.oracle.taf.srvctl;">srvctl</link>
|
утилитой <link xlink:href="&url.oracle.taf.srvctl;">srvctl</link>
|
||||||
(для RAC) или с помощью пакетной процедуры
|
(для RAC) или через пакетную процедуру
|
||||||
<link xlink:href="&url.oracle.taf.dbmsservice;">
|
<link xlink:href="&url.oracle.taf.dbmsservice;">
|
||||||
DBMS_SERVICE.MODIFY_SERVICE</link>
|
DBMS_SERVICE.MODIFY_SERVICE</link>
|
||||||
(для одиночных экземпляров баз данных).
|
(для одиночных экземпляров баз данных).
|
||||||
</para>
|
</para>
|
||||||
</section>
|
</section>
|
||||||
<section>
|
<section>
|
||||||
<title>Использование функций обратного вызова TAF в OCI8</title>
|
<title>Callback-функции TAF в OCI8</title>
|
||||||
<para>
|
<para>
|
||||||
Функция обратного вызова TAF являются функцией зарегистрированной из приложения
|
Callback-функция TAF — функция приложения, которую можно зарегистрировать для вызова
|
||||||
для запуска в процессе восстановления после сбоя. При восстановлении соединения она
|
во время аварийного переключения. При восстановлении соединения функция
|
||||||
вызывается несколько раз.
|
вызывается несколько раз.
|
||||||
</para>
|
</para>
|
||||||
<para>
|
<para>
|
||||||
Первый раз она запускается в момент обнаружения проблем с соединением.
|
Первый раз функция запускается в момент обнаружения проблем с соединением.
|
||||||
Это позволяет приложению корректно подготовиться к задержке выполнения
|
Это позволяет приложению корректно подготовиться к задержке выполнения
|
||||||
на время восстановления после сбоя. Если восстановление завершилось удачно,
|
на время восстановления после сбоя. Если восстановление завершилось успешно,
|
||||||
функция будет вызвана сразу после восстановления подключения. Этот запуск
|
функция вызывается сразу после восстановления подключения. Этот запуск
|
||||||
приложение может использовать для пересинхронизации настроек сессии и оповещения
|
приложение может использовать для пересинхронизации настроек сессии и оповещения
|
||||||
пользователя о том, что произошло восстановление после сбоя. Если восстановление
|
пользователя о восстановлении после сбоя. Если восстановление не удалось,
|
||||||
завершилось неудачно, функция запускается ещё раз для оповещения приложения о
|
callback-функция запускается ещё раз, чтобы сообщить приложению,
|
||||||
том, что восстановление завершилось с ошибкой и соединение с БД недоступно.
|
что восстановление не произошло и соединение невозможно использовать.
|
||||||
</para>
|
</para>
|
||||||
<para>
|
<para>
|
||||||
Интерфейс функции обратного вызова TAF:
|
Интерфейс callback-функции TAF:
|
||||||
</para>
|
</para>
|
||||||
<methodsynopsis>
|
<methodsynopsis>
|
||||||
<type>int</type><methodname>userCallbackFn</methodname>
|
<type>int</type><methodname>userCallbackFn</methodname>
|
||||||
@ -112,9 +113,9 @@
|
|||||||
<term><parameter>connection</parameter></term>
|
<term><parameter>connection</parameter></term>
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>
|
<para>
|
||||||
Идентификатор соединения Oracle для которого эта функция
|
Идентификатор соединения Oracle, на котором функцией <function>oci_register_taf_callback</function>
|
||||||
была зарегистрирована с помощью <function>oci_register_taf_callback</function>.
|
зарегистрировали callback-функцию TAF.
|
||||||
Соединение недоступно во время аварийного восстановления.
|
Соединение недействительно, пока восстановление не завершится успешно.
|
||||||
</para>
|
</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
</varlistentry>
|
</varlistentry>
|
||||||
@ -153,7 +154,7 @@
|
|||||||
<listitem>
|
<listitem>
|
||||||
<para>
|
<para>
|
||||||
<constant>OCI_FO_REAUTH</constant> означает, что пользователь
|
<constant>OCI_FO_REAUTH</constant> означает, что пользователь
|
||||||
Oracle был повторно аутентифицирован..
|
Oracle был повторно аутентифицирован.
|
||||||
</para>
|
</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
</itemizedlist>
|
</itemizedlist>
|
||||||
@ -195,7 +196,7 @@
|
|||||||
<itemizedlist>
|
<itemizedlist>
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>
|
<para>
|
||||||
<constant>0</constant> означает, что шаги восстановления после отказа должны
|
<literal>0</literal> означает, что шаги восстановления после отказа должны
|
||||||
продолжаться нормально.
|
продолжаться нормально.
|
||||||
</para>
|
</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
@ -214,16 +215,16 @@
|
|||||||
</variablelist>
|
</variablelist>
|
||||||
</para>
|
</para>
|
||||||
<example>
|
<example>
|
||||||
<para>
|
<title>Регистрация callback-функции TAF</title>
|
||||||
Пример регистрации функции обратного вызова TAF
|
|
||||||
</para>
|
|
||||||
<programlisting role="php">
|
<programlisting role="php">
|
||||||
<![CDATA[
|
<![CDATA[
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
// Определяем функцию обратного вызова в пространстве пользователя
|
// Определяем callback-функцию в пространстве пользователя
|
||||||
class MyClass {
|
class MyClass
|
||||||
|
{
|
||||||
public static $retry_count;
|
public static $retry_count;
|
||||||
|
|
||||||
public static function TAFCallback($conn, $event, $type)
|
public static function TAFCallback($conn, $event, $type)
|
||||||
{
|
{
|
||||||
switch ($event) {
|
switch ($event) {
|
||||||
@ -269,7 +270,7 @@ $fn_name = 'MyClass::TAFCallback';
|
|||||||
$conn = oci_connect('hr', 'welcome', 'orcl');
|
$conn = oci_connect('hr', 'welcome', 'orcl');
|
||||||
$sysconn = oci_connect('system', 'oracle', 'orcl');
|
$sysconn = oci_connect('system', 'oracle', 'orcl');
|
||||||
|
|
||||||
// Используйте привилегированное соединение для создания оператора SQL, который будет инициировать отработку отказа
|
// Используйте привилегированное соединение для создания SQL-запроса, который инициирует отработку отказа
|
||||||
$sql = <<< 'END'
|
$sql = <<< 'END'
|
||||||
select unique 'alter system disconnect session '''||sid||','||serial#||''''
|
select unique 'alter system disconnect session '''||sid||','||serial#||''''
|
||||||
from v$session_connect_info
|
from v$session_connect_info
|
||||||
@ -287,14 +288,14 @@ print "Разбор пользовательского запроса\n";
|
|||||||
$sql = "select systimestamp from dual";
|
$sql = "select systimestamp from dual";
|
||||||
$stmt = oci_parse($conn, $sql);
|
$stmt = oci_parse($conn, $sql);
|
||||||
|
|
||||||
// К примеру, если соединение было потеряно на этом шаге, oci_execute()
|
// Например, если соединение было потеряно на этом шаге, функция oci_execute()
|
||||||
// определит это и запустит процедуру восстановления. В процессе восстановления
|
// определит это и запустит процедуру восстановления. В процессе восстановления
|
||||||
// oci_execute() будет вызовать зарегистрированную функцию обратного вызова
|
// функция oci_execute() будет вызывать зарегистрированную callback-функцию
|
||||||
// несколько раз. Если восстановление пройдёт успешно, то будет создано новое соединение
|
// несколько раз. Если восстановление пройдёт успешно, callback-функция создаст новое соединение
|
||||||
// и выполнение oci_execute() будет продолжено в нормальном режиме.
|
// и выполнение функции oci_execute() продолжится в нормальном режиме.
|
||||||
// Настройки сессии могут быть сброшены в функции обратного вызова.
|
// Настройки сессии могут быть сброшены в callback-функции.
|
||||||
// Если восстановление завершится неудачно, oci_execute() вернёт ошибку, так как
|
// Если восстановление завершится неудачно, функция oci_execute() вернёт ошибку,
|
||||||
// будет отсутствовать соединение.
|
// поскольку будет отсутствовать соединение.
|
||||||
|
|
||||||
// Отключите пользователя, который инициирует аварийное переключение
|
// Отключите пользователя, который инициирует аварийное переключение
|
||||||
print "Отключение пользователя\n";
|
print "Отключение пользователя\n";
|
||||||
@ -310,7 +311,7 @@ if (!$e) {
|
|||||||
$row = oci_fetch_array($stmt);
|
$row = oci_fetch_array($stmt);
|
||||||
print $row[0] . "\n";
|
print $row[0] . "\n";
|
||||||
|
|
||||||
// выполняем другие SQL-запросы на новом подключении
|
// Выполняем другие SQL-запросы на новом подключении
|
||||||
// $stmt = oci_parse($conn, . . .);
|
// $stmt = oci_parse($conn, . . .);
|
||||||
|
|
||||||
?>
|
?>
|
||||||
|
Reference in New Issue
Block a user