Сайт Игоря Гаршина Главная страница
Письмо автору сайта 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-проект.

Об авторе

Игорь Константинович Гаршин работает в фирме, специализирующейся на разработке информационных систем для предприятий нефтяной и газовой промышленности. Имеет 13-летний опыт разработки и внедрения более 20 программ и баз данных для организаций различных отраслей: судостроение (программное обеспечение для бортовых управляющих комплексов), банки (Нацбанк Республики Казахстан и др.), арбитражные суды (Высший Арбитражный Суд РФ и все филиалы по регионам), газификация населения и предприятий, торговля, медицина, почта, средние школы, землеустройство.

 

В 1998-2000 г.г. занимался переводом баз данных из Access 97 в Oracle 8 и настройкой репликации распределенных БД в нефтепроводных управлениях ОАО «Транснефть» будучи сотрудником московского отделения ОАО «Нефтегазсистемы», г. Гомель, Республика Беларусь (http://www.ogs.gomel.by/ ). Затем продолжал выполнять заказы ОАО «Транснефть» и ОАО «Транснефтепродукт» как сотрудник ЗАО «Терна-СИС».

 

В последнее время работает бизнес-аналитиком в Каспийском Трубопроводном Консорциуме на Морском терминале КТК в Южной Озерейке (г. Новороссийск). Связаться с ним можно по электронной почте garchine@mail.ru или мобильному телефону +7 (8617) 701-210. Изменения указанных контактов можно увидеть внизу главной страницы персонального сайта Игоря Гаршина https://www.garshin.ru/ . При измененеи URL сайта его можно найти по поисковому слову «Сайт Игоря Гаршина».

 

Благодарности

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

Особые благодарности:

 

Предисловие

            Цель книги – помощь в реальном внедрении Oracle-проектов. Академическая литература и техническая документация дает только часть сведений, которых недостаточно для бизнеса. Существует множество нюансов, которые постигаются только «в бою», и только знание этих деталей способно привести к успеху. Некоторые необходимые этапы работ в документации бывают не описаны (например, изменение структуры БД перед репликацией), либо описаны не полностью, реализация чего может привести БД к неработоспособности (например, при переводе на новую версию). Не описаны в документации также синтаксис некоторых процедур DBMS-модулей. Незнание особенностей применения утилит (даже таких «основных», как SVRMGR30, Oracle SQL Worksheet) может привести к большой потере времени на восстановление предыдущей ситуации и т.д.

Вообще, практика работы с Oracle для нетривиальных проектов наполнена «волшебными» ситуациями. Например, можно создать механизм репликации по документации, но в одну сторону русские символы передаваться будут, а в обратную   будет идти псевдографика. И решение здесь не зависит от национальных установок, а находится в совершенно другой области, на обнаружение чего может уйти много месяцев, пока не помогут интуиция и случай. Oracle оправдывает свое название, но не в плане прогнозирования («Оракул»), а как система, требующая знания «магических» действий. Однажды разработчики внедряемого автором проекта так «заколдовали» Oracle, что стали в него заходить без пароля (пароль был указан только один раз при привязке клиентской части), причем пароль владельца таблиц неоднократно менялся администратором (этот опыт многократно повторялся на компьютерах заказчика, но на других компьютерах его повторить не всегда удавалось). Читатель в это, конечно, не поверит, также как не поверили мои друзья-физики, когда расскзал, что видел в горах арык, по которому вода поднималась вверх. Но.согласитесь, что такого результата можно добиться только при интенсивном опыте привязки клиентской и серверной частей системы в различных комбинациях.

Вышесказанное никак не является упреком в адрес Oracle (как и другие описанные в книге нюансы). Ненастроенная БД Oracle работает медленно, но настроенная работает быстрее, чем, например, MS Access  в локальной сети (при одинаковых технических условиях). Кроме того, качественный скачок при работе с Oracle проявляется именно при эксплуатации очень больших баз данных, которых уже не в состоянии «перемесить» другие SQL-серверы. Сервер Oracle действительно не имеет конкурентов в области больших БД, мощен по своим функциям и чрезвычайно настраиваем. Тем не менее, некоторые приложения и компоненты фирмы Oracle, к сожалению, не всегда работают корректно и устойчиво. Например, Oracle Replication Manager 1.4.1.0.0 из Oracle Client 8.0.4 «ломается» при попытке посмотреть содержимое полей транзакции (причем, предыдущая версия 1.4.0.0.0 из 8.0.3 и последующая 1.6 из 8.0.5 не имеют этой ошибки); Oracle ODBC-драйвер из Oracle Client 8.0.3 не правильно обрбатывает запись с пустым (NULL) полем типа DATE, а из версии 8.0.4 неправильно интерпретирует LEFT / RIGHT JOIN в запросах MS Access.

            Эта книга не является академическим трудом с исчерпывающим описанием работы с распределенными базами данных Oracle всех последних версий. Здесь описаны детали для решения некоторых наиболее частых проблем и касающиеся использования Oracle версий 8.0.3-8.0.5. Поскольку при внедрении сложных Oracle-проектов приходится сталкиваться с необычными проблемами, то чаще помогает интуиция, а не логика. Нужно внедрить проект, подписать акт и принести в свою фирму деньги, и поэтому важнее знать как решать проблемы, а не почему они возникли  (на раздумывание не всегда есть время). Если исправить ситуацию нужно за 2 минуты, то ценится именно правильное действие, даже если трудно объяснить, почему нужно делать именно так. Если когда-то для решения проблемы помогла последовательность ряда действий, то описывается вся эта последовательность, хотя, быть может, необходима только часть описанных действий (и наоборот - если проблема возникла из-за ряда действий). Этой установкой также объясняется краткость описания малосущественных деталей и употребление некоторых профессионализмов в данной книге.

            Что касается репликации (или, иначе, синхронизации данных между БД), то подробной литературы по данному вопросу не существует вообще. Приводятся  некоторые сведения о создании снимков (в основном, для простейших снимков «только-для-чтения», причем эти сведения перекочевывают из книги в книгу), в одной-двух книгах был небольшой обзор о системе Мультимастер (синхронизация зеркальных копий БД Oracle) - вот и вся литература. Что касается реального внедрения механизма асинхронной репликации, то как в России, так и в мире эти достижения можно посчитать по пальцам.

Часть специалистов твердо считает репликацию практически необходимым механизмом, который должен существенно ускорить работу приложений. Другая часть специалистов, столкнувшись с трудностями практического ее воплощения и потерь данных из-за ошибок распределенных транзакций или некорректных внутренних алгоритмов, придерживается мнения о работе только средствами удаленного доступа, либо осуществляют репликацию путем пересылки и преобразования текстовых файлов.

Однако на практике (по крайней мере, для российских линий связи) удаленный доступ чаще всего практически непригоден, т.к. приложения при этом работают крайне медленно. Что касается алгоритмов репликации, то абсолютно корректных алгоритмов, по мнению автора, не может существовать в принципе (из-за сложности проблемы), чему, например, является свидетельством репликация между базами данных MS Access 97. Поэтому репликация данных и удаленный доступ являются одинаково важными и сложными проблемами.

Книга состоит из 2-х частей. Первая предназначена для SQL программистов, которые решили заняться генерацией и администрированием БД Oracle, но в ней также содержатся сведения, представляющие интерес и для опытных администраторов Oracle (особенно работающих на базе Novell Netware 5). Вторая часть предназначена для опытных программистов и администраторов Oracle, внедряющих и сопровождающих синхронизацию данных между серверами Oracle.

Материал книги основан на опыте реального внедрения распределенной БД Oracle в филиалы одной из крупнейших российских компаний с 3 организационными уровнями:

Компания - высший уровень

Объединение - средний уровень (в обозначениях таблиц и полей - BRANCH)

Предприятие - нижний уровень (в именах таблиц и полей - OPF: Oil Pipeline Firm).

 

Соглашения

Внедряемый Oracle-проект далее будет обозначатся словом PLIS (Pipeline Information System) или просто СИСТЕМА.

В книге, кроме основного текста, используются дополнительные блоки: примечания, рекомендации, предупреждения (озаглавленных словом «Внимание!»), примеры, листинги… Этот текст напечатан шрифтом Times New Roman. Кроме того, различными шрифтами выделяются следующие элементы текста:

·         Статус, режим - шрифт Times New Roman, полужирно (при этом регистр букв сохраняется таким, каким выводится утилитой на экран): Ready, AWAIT_CALLBACK, QUIESCED

·         Названия утилит (в т.ч. аббревиатуры), названия методов, термины на английском языке, сообщения на экране (последние также в кавычках) - шрифт Times New Roman, курсивом: Oracle Schema Manager, ORM; Latest Timestamp; destination

·         Имена файлов, команды, SQL-выражения и опции SQL-команд, объекты БД (таблицы, поля, модули, роли, пользователи…), наименования административных запросов, параметры (параметры конфигурационного файла выделенно) - шрифт Courier New, прописью: CONFIG.ORA, SVRMGR30; ORASTOP; ALTER DATABASE OPEN, OPTIMAL; EDITIONS, USERNAME, DBMS_JOB, DBA, REPADMIN; SHARED_POOL_SIZE

·         Сообщение об ошибке - шрифт Courier New, курсивом: ORA-00600: internal error code

·         Элементы интерфейса (кнопки, опции, пункты меню…) - шрифт Arial: Next, None, Run Now

 

Оформление скриптов выполнено по следующим правилам:

·         Большинство описываемых скриптов (и командных файлов) имеют собственное имя, но не для поиска данного файла, а как рекомендация по его наименованию: ExpUsUfa.sql, CDb.bat

·         Текст набран шрифтом Courier New размером 11 пт

·         Программный текст (команды, операторы и выражения SQL и PL/SQL) выполнен строчными буквами: create table, select * from, alter trigger, create or replace procedure, update; in, and; declare, variable, execute; char(); begin, end; :new., .nextval

·         Имена функций Oracle выполнены строчными буквами: max(), count(), nvl(), trunc(), substr(), decode()

·         Константы, имена модулей и процедур выполнены заглавными буквами:  SYSDATE, NULL, TRUE, TOO_MANY_ROW, INSERTING; DBMS_JOB.RUN()

·         Наименования объектов БД (таблицы, индексы, пользователи, роли и т.д.) и полей таблиц и представлений выполнены заглавными буквами: USER_TABLES, BRANCH_PK0, REPADMIN, CONNECT; ID, NAME, LONGNAME, CORDATE, USERNAME

·         Имена переменных указаны в различном регистре и имеют префикс, указывающий на их тип (сокращенная венгерская нотация: n - NUMBER, INTEGER, FLOAT; c - CHARVARCHAR2, d - DATE): nCnt, cTabNam, cUser, dLastTime

·         Структура запросов и команд отображена с помощью табуляции (в различных вариантах); табуляция выполнена через 2 символа:

 

begin

  DBMS_DEFER_SYS.DELETE_TRAN(

    deferred_tran_id => '6.19.11941',

    destination => NULL);

end;

 

select NAME,GETS,MISSES,SLEEPS,IMMEDIATE_GETS,IMMEDIATE_MISSES

     from V$LATCH where NAME in ('REDO ALLOCATION', 'REDO COPY')

 

либо:

 

select

  NAME, GETS, MISSES, SLEEPS,

  IMMEDIATE_GETS, IMMEDIATE_MISSES

   from

     V$LATCH

   where

     NAME in ('REDO ALLOCATION', 'REDO COPY')

 

Автор просит прощение за намеренное использование профессиональных «жаргонов», поскольку уверен, что таким образом читателю будет удобнее осваивать приводимый материал (иначе объем текста увеличится раза в два и в конце предложений будет забыто их начало). Автор не использовал профессиональное простонаречие типа «администрить», «генерить», «компилять», «сидюк», «сервак», «юзание» и т.д., но активно использовал выражения, сокращающих неправомерно длинные высказывания, например:

·         «Выполните (операцию) Resume» - вместо: «Возобновите репликационную активность мастер-группы»

 

Кроме того, автор не совсем согласен с переводом некоторых терминов на русский язык, используемых в некоторых книгах по Oracle. В данной книге используются, например, следующие термины:

·         «Репликация» - вместо «тиражирование» (зачем один интернационализм или латинское название заменять другим интернационализмом?)

·         «Снимок» - вместо «моментальный снимок» (неоправданный «архаический» перевод слова «snapshot», который даже в нетехнической литературе переводится просто как «снимок»)

·         «Корректируемый/некорректируемый снимок» - вместо «обновляемый/необновляемый моментальный снимок» (все снимки обновляются, т.е. выполняется операция refresh).

 


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

Страницы со статьей: Репликация Oracle | Все статьи
Яндекс.Метрика
На правах рекламы (см. условия): [an error occurred while processing this directive]