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