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