Update to English taf.xml

This commit is contained in:
Mikhail Alferov
2024-05-09 14:14:51 +03:00
committed by GitHub
parent 7b8305f82e
commit 55b1b1b35e

View File

@ -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, . . .);
?>