|
Вся книга: Практика работы с Oracle: генерация, администрирование, репликация. И.К.Гаршин.
ISBN 5-901314-02-6 (рус.). УДК 004.42Oracle. ББК 32.973.26-018.2. Г21. В 1999-2000 г. программисты «Нефтегазсистемы» разработали и внедрили в большинство ОАО МН «Транснефти Информационную систему паспортизации магистральных нефтепроводов «СКУТОР». Сначала он был создан на базе MS Access, затем переведен на Oracle 8 с поддкржкой асинхронной репликации с помощью программы Oracle Multimaster. В книге подробно описан авторский опыт перевода и внедрения этой базы данных. |
Автор признателен руководителям и сотрудникам ЗАО «Нефтегазсистемы», начальникам и персоналу вычислительных центров региональных управлений ОАО «Транснефть», c чьей помощью был разработан и внедрен данный Oracle-проект.
Глава 4
В этой главе…
· ОС Novell Netware 5.0
· Узкие места
· Оптимизация
· Технические требования
· ОС MS Windows NT 4.0
· ОС Linux RedHat 6.0
Самым узким местом ОС Novell Netware является память. Особенность этой ОС в том, что при запуске каких-либо процессов выделяется часть кэш-памяти (Cache buffer memory - см. рис. 4.1), а при их окончании не вся кэш-память освобождается. А поскольку для нормальной работы Novell Netware требуется не менее 20% памяти под кэш, то через некоторое время после интенсивной работы (а это в первую очередь относится к обмену транзакциями) доля кэш-памяти снижается до 1% и работа ОС становится невозможной (в БД Oracle при этом нельзя выполнить даже простейшую DDL-операцию). И вообще сама ОС для загрузки модулей требует много памяти. Т.о. построение механизма репликации в Oracle на базе Novell Netware возможно лишь при наличии большого объема оперативной памяти (не менее 256 Мбайт для БД с дест-сайтом и не менее 512 Мбайт для БД с деф-сайтом).
Рис. 4.1. Просмотр Cache buffer memory с помощью утилиты MONITOR.
Вторым узким местом ОС Novell Netware является поддержка многозадачности. Более 1 БД Oracle могут существовать на Netware-сервере, но стабильная работа при этом не гарантирована. Иногда БД становятся недоступными и сервер приходится перезагружать. Если одна из БД участвует в репликации, то перезагрузку сервера приходится выполнять примерно раз в месяц. Если в репликации участвуют две БД, то сервер становится неработоспособными несколько раз в месяц, причем одной перезагрузкой ситуация не всегда исправляется. Иногда даже приходится восстанавливать протоколы. Уровень нестабильности, конечно, зависит от оперативной памяти сервера, оптимальности его настройки, конфигурационных параметров БД Oracle, интенсивности и общего кол-ва транзакций или других операций в Oracle.
Есть определенные методы оптимизации ОС Novell Netware (см. Часть 2, Глава 4: ОС Novell Netware 5.0, Оптимизация), и их нужно применять для ускорения работы БД Oracle, но даже это не позволяет осуществлять репликацию данных при ограниченном объеме памяти Netware-сервера.
Имеется только одно видимое удобство в использовании Novell Netware – возможность работы с Oracle с помощью удаленной консоли (эта возможность существует также в UNIX).
Ниже приведены примеры из практики внедрения репликационного механизма на Netware-серверах с оперативной памятью 512 Мбайт на сервере с деф-сайтом (при наличии на сервере также другой БД с репликацией) и 128 Мбайт на серверах с дест-сайтами:
· При генерации 3-й мастер-группы (самой большой по кол-ву таблиц и кол-ву записей) у Netware-сервера с памятью 128 Мбайт размер Cache buffer memory уменьшался до 1.2 Мбайт (1%), в результате чего Oracle становился недоступным и нужно было перегружать как БД, так и сервер.
· При отключении Netware-сервера Предприятия (дест-сайт) на 2-3 дня (проводилась замена винчестера для создания нового сайта, но такое может реально происходить и при потере связи), на деф-сайте Объединения накапливалось до 1500-2000 транзакций, и при последующем подключении эти транзакции порождали на сервере Предприятия 2 ошибки (критическую ошибку ORA-00600 или нехватку памяти), а также часто делали недоступным Oracle на деф-сайте Объединения (а с ним и другая БД, хотя у сервера Объединения память 512 Мб).
· При попытке пересоздать обновляемый снимок на сервере Предприятия (дест-сайт) (например, при изменении структуры таблиц) команда drop snapshot зависала и делала иногда сервер Предприятия также недоступным.
ПРИМЕЧАНИЕ.
Чтобы посмотреть распределение памяти введите команду MONITOR и выберите пункт меню System resources. После этого в верхней части экрана в окне Server memory statistics будут отображены разделы памяти и их объем в байтах и %:
· Allocated memory pool
· Cache buffer memory
· Cache movable memory
· Cache non-movable mem
· Code and data memory
· Total server work memory
Для оптимизации распределения памяти Netware-сервера были проделаны следующие операции:
· Отключена криптография (естесственно, что еще раньше была отключена графическая JAVA-оболочка).
· Пакет сетевого обмена уменьшен до минимального уровня + 10 байт и составил 1526 байт (это зависит от конфигурации сервера и версии NW и Service Pack), что дало 4 Мбайт.
· Увеличен кэш для директория и другие кэши.
· Уменьшено время выделения блоков для кэш.
Данная настройка привела к увеличению Cache buffer memory до 20-30 Мб (17% до запуска БД Oracle и 15% после), что явилось приемлемой величиной, хотя для нормальной работы Novell Netware 5 требуется не меньше 20%.
Кроме того, для ликвидации вышеназванной (п. Узкие места данного раздела) ошибки ORA-00600, фирма Oracle рекомендует переход на протокол IPC. Т.е. в данном случае можно соединяться с Oracle через IPC-сервис.
После оптимизации Novell Netware наблюдалось следующее:
· Создание 3-й мастер-группы проходит успешно, но после запуска транзакций кэш опять уменьшается до 1% и запуск скриптов в БД становится невозможным.
· Это фрагментирует память на сервере Объединения и приводит в нерабочее состояние все имеющиеся на сервере БД.
· Экспорт полной БД с помощью BAT-файла (на клиенте) также прерывается, хотя успешно проходит на сервере после запуска NCF-файла.
Создание репликации на серверах Novell Netware возможно, только если на выделенном сервере деф-сайта (в Объединении) не менее 512 Мб, а на серверах с дест-сайтами (на Предприятиях) - не менее 256 Мб. Это связано с "пороком" Novell Netware - не полным освобождением кэша после окончания процесса.
При отсутствии этих возможностей (если на серверах Предприятия не более 128 Мб) репликацию нужно создавать на других платформах: MS Windows NT, Linux RedHat, Sun Solaris.
Но, даже создав дест-сайты на серверах Предприятий, полностью не решается проблема стабильной работы Oracle в Объединении. Решения может быть 2:
1) Перенос Oracle на отдельный Netware-сервер с памятью не менее 512 Мбайт.
2) Перенос на сервер NT, Linux или Solaris с памятью не менее 256 Мбайт.
Второй вариант наиболее предпочтителен, но его основное неудобство - при этом может нарушится репликация (т.к. таблицы пользователя SYS не переносятся) и репликационную поддержку по всем дест-сайтам придется проводить заново.
Следует также иметь ввиду, что большой поток транзакций может также сделать неработоспособным Netware-сервер Компании, где установлена Ваша система, если он имеет память менее 256 Мб.
При работе БД Oracle в MS Windows NT с созданной с системой репликации ни одна из проблем, описанных для ОС Novell Netware (см. Часть 2, Глава 4: ОС Novell Netware 5.0, Узкие места), не возникала. Т.е., в этой ОС работа Oracle устойчивая.
Кроме того, работа Oracle в MS Windows NT требует в 2 раза меньше оперативной памяти, чем в Novell Netware. Например на сервере с памятью 64 Мбайт приемлемо работают 2 БД Oracle, а с памятью 128 Мбайт – 3.
Пока обнаружен лишь один недостаток этой ОС: если БД участвует в репликации Мультимастер (т.е. является дест-сайтом), то ее не всегда удается перезапустить (через Apply после изменения конфигурационных параметров в Oracle Instance Manager) удаленно с помощью локального конфигурационного файла. При этом выдается одно из следующих сообщений:
MGR-03514: unable to start the database
ORA-00444: background process name failed while starting
ORA-00600:internal error code, arguments: [num],[?],[?],[?],[?],[?]
MGR-03514: unable to start the database
ORA-27102: out of memory
OSDC-426499680: …
Т.е., останов выполняется, но для запуска вдруг не хватает памяти. Это может говорить о том, что после останова не вся память в NT освобождается, либо освобожденная тут же занимается имеющимися сервисами. В этом случае необходимо делать рестарт сервера, что, к сожалению, также нельзя сделать удаленно.
Так же определенным неудобством является отсутствие удаленной консоли.
Инструкцию по установке ОС MS Windows NT 4.0 см. выше (Часть 1, Глава 9: Установка и настройка Windows NT).
ОС Linux является версией Unix, предназначенной для настольных компьютеров. Разработка ведется Линусом Торвальдсом.
Это бесплатная система (распространяется под лицензией GNU) и по оценкам многих - сверхнадежная и полностью многозадачная.
ОС Linux RedHat 6.0 (как и MS Windows NT 4.0), экономнее по памяти, чем Novell Netware 5.0, в 2 раза. Особенно Linux удобен возможностью удаленного администрирования (вплоть до перезагрузки сервера, что, кстати, выполняется очень быстро). Например, с помощью утилиты Telnet можно войти в консоль сервера Linux (через меню Подключить - см. рис. 4.2) и делать все, что нужно в режиме командной строки (рис. 4.3). Для более привычного интерфейса в меню Терминал можно настроить форму курсора, шрифт, цвет шрифта, цвет фона и т.д. (рис. 4.4). Кроме того, в этом случае можно также загружать некоторые графические утилиты («нортоновскую» оболочку Midnight Commander - см. рис. 9.1, редакторы текстов vi и др.), что очень непроизводительно делать с помощью похожего средства MS Windows NT.
Рис. 4.2. Подключение к серверу Linux через утилиту Telnet.
Рис. 4.3. Утилита Telnet. Работа в Linux в режиме командной строки.
Рис. 4.4. Утилита Telnet. Окно настройки параметров работы.
Приятным сюрпризом является более быстрая работа утилит Oracle и процессов Oracle по сравнению даже с достаточно «быстрой» MS Windows NT (в несколько раз), например:
· Прогон скрипта (CDb2.sql) по созданию табличных пространств, сегментов отката и словаря составляет в Novell Netware 40-60 мин, в MS Windows NT – 20-30 мин, в Linux RedHat – 9 мин;
· Импорт 2 больших таблиц общим объемом 900 000 записей в Novell Netware занимает от 40 мин до 2 ч, в MS Windows NT – от 15 мин до 40 мин, в Linux RedHat – 9 мин;
· Создание на сайте локальной сети мастер-группы из 57 таблиц общим объемом около 5000 записей выполняется в Novell Netware за 40 мин, в MS Windows NT – за 30 мин, в Linux RedHat – за 10-12 мин (за 2 мин все таблицы с записями реплицировались, через следующие 8-10 мин создалась репликационная поддержка).
Работа в БД Oracle в ОС Linux также устойчива.
Главная проблема – сложная предварительная настройка (корректировка скрипта предзагрузки, установка переменных памяти перед инсталляция сервера Oracle и др.).
Инструкцию по установке ОС Linux RedHat 6.0 см. выше (Часть 1, Глава 8: Установка и настройка Linux).