Сайт Игоря Гаршина Главная страница
Письмо автору сайта garchine@mail.ru
Опыт орадмина: 1. Инсталляция 2. Генерация 3. Миграция 4. ODBC 5. Администрация 6. Утилиты 7. Netware 8. RedHat 9. NT
Синхронизация: 1. Механизмы 2. Архитектуры 3а. Снапшоты 3б. Мастер-сайт 4. Сравнение ОС 5. RepMan Пр1. Файлы ORA Пр2. CONFIG.ORA Пр3. API Пр4. Словарь данных
Практика работы с Oracle - книга о репликации распределенной базы данных Oracle 8
Вся книга: Практика работы с Oracle: генерация, администрирование, репликация. И.К.Гаршин.
ISBN 5-901314-02-6 (рус.). УДК 004.42Oracle. ББК 32.973.26-018.2. Г21.

В 1999-2000 г. программисты «Нефтегазсистемы» разработали и внедрили в большинство ОАО МН «Транснефти Информационную систему паспортизации магистральных нефтепроводов «СКУТОР». Сначала он был создан на базе MS Access, затем переведен на Oracle 8 с поддкржкой асинхронной репликации с помощью программы Oracle Multimaster. В книге подробно описан авторский опыт перевода и внедрения этой базы данных.

Автор признателен руководителям и сотрудникам ЗАО «Нефтегазсистемы», начальникам и персоналу вычислительных центров региональных управлений ОАО «Транснефть», c чьей помощью был разработан и внедрен данный Oracle-проект.

Приложение 3. Описание API для репликации

            Здесь дано описание синтаксиса (взятое из [8]), в основном, тех модулей и процедур, которые участвуют в примерах и скриптах. Для некоторых из них приведены также примеры. Значение параметров не описывается, поскольку ясно из их названия.

 

Пакет DBMS_DEFER_SYS

      Процедуры модуля DBMS_DEFER_SYS предназначены для регистрации пропагатора (Часть 2, Глава 1: Корректируемые (updatable) снимки, Мультимастер), управления транзакциями (Часть 2, Глава 3: Наблюдение за транзакциями, Разбор ошибочных транзакций) Полный их состав и подробное описание см. в [8] в пункте Replication Management API Reference главы Oracle8 Replication, Release 8.0 раздела Oracle8 Database.

 

1.      Удаление ошибки выполнения транзакции:

 

DBMS_DEFER_SYS.DELETE_ERROR(

 deferred_tran_id in varchar2,

 destination in varchar2)

 

2.      Перезапуск неудачной транзакции:

 

DBMS_DEFER_SYS.EXECUTE_ERROR(

 deferred_tran_id in varchar2,

 destination in varchar2)

 

3.      Удаление транзакции из очереди:

 

DBMS_DEFER_SYS.DELETE_TRAN(

  deferred_tran_id in varchar2,

  destination in varchar2)

 

4.      Регистрация REPADMIN как Распространителя транзакций (пропагатора):

 

DBMS_DEFER_SYS.REGISTER_PROPAGATOR(username in varchar2)

 

5.      Настройка PURGE (периодический процесс очистки системного журнала от выполненных задач):

 

DBMS_DEFER_SYS.SCHEDULE_PURGE(

  interval in varchar2,

  next_date in date,

  reset in boolean := NULL,

  purge_method in binary_integer := NULL,

  rollback_segment in varchar2 := NULL,

  startup_seconds in binary_integer := NULL,

  execution_seconds in binary_integer := NULL,

  delay_seconds in binary_integer := NULL,

  transaction_count in binary_integer := NULL,

  write_trace in boolean := NULL)

 

6.      Настройка PUSH (периодический процесс возобновления связи и проталкивания транзакций):

 

DBMS_DEFER_SYS.SCHEDULE_PUSH(

  destination in varchar2,

  interval in varchar2,

  next_date in date,

  reset in boolean := FALSE,

  parallelism in binary_integer := NULL,

  heap_size in binary_integer := NULL,

  stop_on_error in boolean := NULL,

  write_trace in boolean := NULL,

  startup_seconds in binary_integer := NULL,

  execution_seconds in binary_integer := NULL,

  delay_seconds in binary_integer := NULL,

  transaction_count in binary_integer := NULL)

 

 

Пакет DBMS_REPCAT

            Процедуры модуля DBMS_REPCAT предназначены для работы с мастер-группами. Полный их состав и подробное описание см. в [8] в пункте Replication Management API Reference главы Oracle8 Replication, Release 8.0 раздела Oracle8 Database. Применение данных процедур - см.: Часть 2, Глава 1; Глава 3.

 

1.      Указание группы полей для метода разрешения конфликтов для таблицы:

 

DBMS_REPCAT.ADD_GROUPED_COLUMN(

  sname in varchar2,

  oname in varchar2,

  column_group in varchar2,

  list_of_column_names in varchar2 | DBMS_REPCAT.VARCHAR2S)

 

Пример:

 

DBMS_REPCAT.ADD_GROUPED_COLUMN(

  sname => '"PLIPEKN"',

  oname => '"BRANCH"',

  column_group => '"DL"',

  list_of_column_names =>

    'NAME,ID,CSCHEM,CORDATE,USERNAME');

 

2.      Указание для мастер-группы нового сайта:

 

DBMS_REPCAT.ADD_MASTER_DATABASE(

  gname in varchar2,

  master in varchar2,

  use_existing_objects in boolean := TRUE,

  copy_rows in boolean := TRUE,

  comment in varchar2 := '',

  propagation_mode in varchar2 := 'ASYNCHRONOUS')

 

3.      Указание метода разрешения конфликтов на изменение для таблицы:

 

DBMS_REPCAT.ADD_UPDATE_RESOLUTION(

  sname in varchar2,

  oname in varchar2,

  column_group in varchar2,

  sequence_no in number,

  method in varchar2,

  parameter_column_name in varchar2 | DBMS_REPCAT.VARCHAR2S,

  priority_group in varchar2 := NULL,

  function_name in varchar2 := NULL,

  comment in varchar2 := NULL)

 

Пример:

 

DBMS_REPCAT.ADD_UPDATE_RESOLUTION(

  sname => '"PLIPEKN"',

  oname =>'"BRANCH"',

  column_group => '"DL"',

  sequence_no => 0 + 1,

  method => 'Latest Timestamp',

  parameter_column_name => '"CORDATE"');

 

4.      Изменение свойств объекта, включенного в мастер-группу:

 

DBMS_REPCAT.ALTER_MASTER_REPOBJECT(

  sname in varchar2,

  oname in varchar2,

  type in varchar2,

  ddl_text in varchar2,

  comment in varchar2 := '',

  retry in boolean := FALSE)

 

5.      Создание мастер-группы:

 

DBMS_REPCAT.CREATE_MASTER_REPGROUP(

 gname in varchar2,

 group_comment in varchar2 := '',

 master_comment in varchar2 := ''),

 qualifier in varchar2 := '')

 

6.      Добавление объекта (таблицы) в мастер-группу:

 

DBMS_REPCAT.CREATE_MASTER_REPOBJECT(

  sname in varchar2,

  oname in varchar2,

  type in varchar2,

 use_existing_object in boolean := TRUE,

  ddl_text in varchar2 := NULL,

  comment in varchar2 := '',

  retry in boolean := FALSE

  copy_rows in boolean := TRUE,

  gname in varchar2 := '')

 

7.      Наименование группы полей для метода разрешения конфликтов:

 

DBMS_REPCAT.DEFINE_COLUMN_GROUP(

  sname in varchar2,

  oname in varchar2,

  column_group in varchar2,

  comment in varchar2 := NULL)

 

8.      Проталкивание всех админ-запросов по мастер-группе:

 

DBMS_REPCAT.DO_DEFERRED_REPCAT_ADMIN(

  gname in varchar2,

  all_sites in boolean := FALSE)

 

9.      Удаление группы полей для метода разрешения конфликтов:

 

DBMS_REPCAT.DROP_COLUMN_GROUP(

  sname in varchar2,

  oname in varchar2,

  column_group in varchar2)

 

10.  Удаление мастер-группы:

 

DBMS_REPCAT.DROP_MASTER_REPGROUP(

  gname in varchar2,

  drop_contents in boolean := FALSE,

  all_sites in boolean := FALSE)

 

11.  Удаление объекта из мастер-группы:

 

DBMS_REPCAT.DROP_MASTER_REPOBJECT(

  sname in varchar2,

  oname in varchar2,

  type in varchar2,

  drop_objects in boolean := FALSE)

 

12.  Формирование метода разрешения конфликтов:

 

DBMS_REPCAT.DROP_UPDATE_RESOLUTION(

  sname in varchar2,

  oname in varchar2,

  column_group in varchar2,

  sequence_no in number)

 

13.  Запуск DDL-операции для объекта, включенного в мастер-группу:

 

DBMS_REPCAT.EXECUTE_DDL(

  gname in varchar2,

  { master_list in varchar2 := NULL,

  | master_table in DBMS_UTILITY.DBLINK_ARRAY,}

  ddl_text in varchar2)

 

14.  Генерация репликационной поддержки для объекта в мастер-группе:

 

DBMS_REPCAT.GENERATE_REPLICATION_SUPPORT(

  sname in varchar2,

  oname in varchar2,

  type in varchar2,

  package_prefix in varchar2 := NULL,

  procedure_prefix in varchar2 := NULL,

  distributed in boolean := TRUE,

  gen_objs_owner in varchar2 := NULL,

  min_communication in boolean := TRUE )

 

15.  Очистка всех админ-запросов по мастер-группе:

 

DBMS_REPCAT.PURGE_MASTER_LOG(

  id in natural,

  source in varchar2,

  gname in varchar2)

 

16.  Удаление сайта из мастер-группы:

 

DBMS_REPCAT.REMOVE_MASTER_DATABASES(

  gname in varchar2,

  master_list in varchar2 |

  master_table in DBMS_UTILITY.DBLINK_ARRAY)

 

17.  Восстановление активности мастер-группы:

 

DBMS_REPCAT.RESUME_MASTER_ACTIVITY(

  gname in varchar2,

  override in boolean := FALSE)

 

18.  Приостановление активности мастер-группы:

 

DBMS_REPCAT.SUSPEND_MASTER_ACTIVITY(gname in varchar2)

 

Пример:

 

DBMS_REPCAT.SUSPEND_MASTER_ACTIVITY(gname => '"PLIPEKN0"');

 

 

Пакет DBMS_REPCAT_ADMIN

            Процедуры модуля DBMS_REPCAT_ADMIN предназначены для предоставления либо изъятия прав у администратора репликаций (REPADMIN). Полный их состав и подробное описание см. в [8] в пункте Replication Management API Reference главы Oracle8 Replication, Release 8.0 раздела Oracle8 Database. Применение данных процедур - см.: Часть 2, Глава 1: Корректируемые (updatable) снимки, Мультимастер.

 

1.      Предоставление административных прав для пользователя REPADMIN:

 

DBMS_REPCAT_ADMIN.GRANT_ADMIN_ANY_SCHEMA(username in varchar2)

 

Пример:

 

DBMS_REPCAT_ADMIN.GRANT_ADMIN_ANY_SCHEMA(username => 'REPADMIN');

 

 

Пакет DBMS_JOB

            Процедуры модуля DBMS_JOB предназначены для управлениями задачами. Полный их состав и подробное описание см. в [8] в главе Oracle8 Administrator's Guide, Release 8.0 раздела Oracle8 Database. Применение данных процедур - см.: Часть 2, Глава 3: Администрирование задач.

 

1.      Прерывание задачи:

 

DBMS_JOB.BROKEN(

  job in binary_integer,

  broken in boolean,

  next_date in date default SYSDATE)

 

Пример:

 

DBMS_JOB.BROKEN(

  job => 204,

  broken => TRUE);

 

2.      Изменение свойств задачи:

 

DBMS_JOB.CHANGE( job in binary_integer,

  what in varchar2,

  next_date in date,

  interval IN VARCHAR2)

 

Пример:

 

DBMS_JOB.CHANGE(

  job => 204,

  next_date => NULL,

  interval => '/*10:Hours*/ SYSDATE + 10/24',

  what => NULL);

 

3.      Запуск задачи:

 

DBMS_JOB.RUN( job in binary_integer)

 

Пример:

 

DBMS_JOB.RUN(job => 204);


Игорь Гаршин, E-mail: garchine@mail.ru, URL: garshin.ru.

Страницы со статьей: Репликация Oracle | Все статьи
Я.Метрика: просмотры, визиты и хиты сегодня
На правах рекламы (см. условия):