Модуль сегментирования архива почтовых сообщений СМАП Дозор-Джет
Методика внедрения и эксплуатации
Оглавление
1. Введение........................................................................................................................................... 3
2. Системные требования...................................................................................................... 3
3. Архитектура модуля............................................................................................................. 4
3.1 Логическая архитектура.............................................................................................. 4
3.2 Физическая архитектура.............................................................................................. 4
4. Порядок эксплуатации....................................................................................................... 6
4.1 Планирование....................................................................................................................... 6
4.2 Выбор метода работы с архивом............................................................................ 6
4.3 Типовые операции при работе с архивом......................................................... 7
4.3.1 Подключение новой партиции......................................................................................... 8
4.3.2 Отключение старой партиции..................................................................................... 10
4.3.3 Перевод табличных пространств в состояние OFFLINE.................................... 12
4.3.4 Перевод табличных пространств в состояние ONLINE....................................... 13
4.3.5 Подключение ранее отключенной партиции............................................................. 14
5. Возможные проблемы и методы их решения............................................. 15
6. Резервное копирование СУБД ORACLE при использовании модуля 16
7. Список литературы.............................................................................................................. 16
8. Приложение 1. Вспомогательные скрипты модуля.............................. 17
8.1 Precheck. sql......................................................................................................................... 17
8.2 Pstatus. sql............................................................................................................................. 17
8.3 Postcheck. sql...................................................................................................................... 18
9. Приложение 2. Список всех скриптов модуля............................................ 19
Модуль сегментирования архива почтовых сообщений СМАП Дозор-Джет
Дмитрий Волков (*****@***msk. su)
1. Введение
В настоящие время почтовые потоки организацией достигают 1 Гб информации в день, а иногда и нескольких Гб в день. Хранение же подобной информации требуется, как правило, на протяжении нескольких месяцев. Таким образом, мы приходим к необходимости поддерживать архив объемом несколько сот Гб, что требует значительных аппаратных ресурсов.
Модуль сегментирования архива обеспечивает возможность разбить весь архив на две части:
- Оперативный архив Исторический архив
При этом поиск и сохранение вновь поступающих сообщений происходят только в оперативном архиве, объем которого может быть в несколько раз меньше объема всего архива.
По истечении времени, информация из оперативного архива попадает в исторический архив.
Исторический архив может храниться в виде отдельных файлов на файловом сервере, или магнитной ленте, освобождая, таким образом, ресурсы сервера СУБД. Что позволяет снизить требования к аппаратным ресурсам.
При необходимости поиска по историческому архиву, его части подключаются к оперативному архиву, позволяя производить поиск необходимой информации
Операции с частями исторического архива производятся администратором безопасности или сервисным инженером.
2. Системные требования
Для того, чтобы воспользоваться возможностями модуля необходимо использовать в качестве хранилища данных архива СУБД Oracle версии 8.1.7.4 (или выше), Enterprise Edition c установленной опцией Partition option.
Установка схемы данным СМАП Дозор-Джет должна быть выполнена с указанием следующих флагов:
use_partiton=Y
maxnum=<число>
warm_len =<число>
alter_sequence=Y|N
в конфигурационном файле config. sql. Описание файла config. sql смотри “Описание файла конфигурации СМАП ДОЗОР-ДЖЕТ”.
Правила установки параметров описаны ниже в разделе “Порядок эксплуатации”
Сама установка производиться штатным образом системным инженером в соответствии с документом “Руководство по установке СМАП Дозор–Джет”.
3. Архитектура модуля
Логическая архитектура
Логически, весь архив сообщений разбивается на несколько частей, соответствующих временным диапазонам, скажем, месяцев. Таким образом, за год мы получаем 12 отдельных частей архива. Принятая практика определения размера одной части описана ниже в разделе “Порядок эксплуатации”.
В любой момент времени только одна часть архива является текущей, и в нее поступают новые сообщения.
Поиск может производиться по любому кол-ву частей, подключенных к архиву. Кол-во одновременно подключенных частей ограничено только аппаратными возможностями сервера СУБД.
Таким образом, после заполнения оперативной части архива, она становиться архивной, и может быть в любое время перемещена на другой носитель, а при необходимости подключена к архиву. В тоже время создается и заполняется новая оперативная часть архива.
Можно представлять себе любую часть архива в виде отдельного файла, который при необходимости добавляется в общую директорию архива (подключение к архиву), или перемещается из нее (отключение из архива).
Физическая архитектура
Модуль основан на опции сервера Oracle partition option. При этом, все данные архива разбиты на:
Условно постоянную часть – справочники. Справочники хранятся в табличном пространстве SMAP_DICT. Индексы (кроме полнотекстового индекса) – хранятся в табличном пространстве SMAP_INDEXES Тела писем – хранятся в табличном пространстве SMAP_MESSAGES Учетная информация – храниться в табличном пространстве SMAP Полнотекстовый индекс (если используется). Храниться в табличном пространстве SMAP_MESSAGES[1]С помощью partition option сегментированы следующие части архива:
1. Учетная информация
2. Тела писем
3. Полнотекстовый индекс
При добавлении новой части архива (партиции), создаются новые табличные пространства, и соответственно, новые физические файлы. Это позволяет переместить работать с исторической частью архива как с обычными файлами (правда, переводя табличные пространства в соответствующее состояние)
На рисунке ниже изображена физическая организация табличных пространств модуля.
![]() |
Как вино из рисунка, части архива, находящиеся в состоянии OFFLINE могут быть перемещены на другой носитель.
В модуле принято следующие соглашение по табличных пространств:
· Имя табличного пространства<номер партиции>
Например smap_message1
В модуле принято следующие соглашение по именованию файлов табличных пространств:
- <Имя файла><номер_партиции>_<номер файла по порядку>.dbf,
например, smap_message1_01.dbf
В качестве ключа разбиения (ключа партиционирования) используется id почтового сообщения. Это соответствует полю id таблицы message.
Ограничением partiton options является необходимость при создании партиции задать верную границу вновь создаваемой партиции. Верхняя граница для вновь создаваемой партиции определяется как кол-во уже существующих партиций * параметр maxnum. Поэтому важно установить параметр maxnum с запасом (см ниже)
4. Порядок эксплуатации
Перед началом эксплуатации необходимо определить порядок использования модуля и типовой размер одной части архива.
Планирование
Как правило, после заполнения оперативной части архива, требуется какое-то время оставить ее в составе архива для поиска. В тоже время требуется место для создания новой оперативной части. Таким образом, мы приходим к выводу, что одна часть архива не должна занимать более половины физического пространства, отведенного под архив. Необходимо также учесть возможную неравномерность поступления почтового потока (в конце квартала поток может увеличиваться)
Из опыта тестовых эксплуатации, следует, что в тоже время, может потребоваться подключить одну из ранее перемещенных частей архива.
Таким образом, общая формула такова – одна часть архива не должна быть более чем 1/n от объема физического проcтрантства, где n >= 2. Рекомендуется в качестве n использовать число из ряда 3, 4, 5, 6. Однако стоит понимать, что это логическое ограничение, а физическое n >= 1.
Выбранное значение n следует установить как значение параметра warm_len в config. sql
Другим фактором, определяющим размер одной части архива является объем поступающих почтовых сообщений. Удобно, что каждая часть архива занимала, скажем, один месяц, или одну неделю. Тогда вы легко сможете определить какую часть архива вам необходимо подключить.
Итак, скажем, выбрано, что одна часть архива – это месяц.
Теперь необходимо примерно понять, сколько писем может поступить к вам за выбранный период. Скажем 10-15 тысяч. Тогда рекомендуется установить параметр maxnum в 100,000. Это, правда, приведет к тому, что письма второго месяца начнут нумероваться с числа 100,000, но так как это внутренний номер письма, то это не должно вас волновать. С другой стороны, при внезапном увеличении почтового потока не произойдет переполнения партиции.
Выбор метода работы с архивом
Существуют две возможности работы с архивом:
- Заранее создать необходимое кол-во партиций, скажем 6 (на 6 месяцев) и автоматически переключаться между ними.
- В этом случае, установите флаг alter_sequence = N. Для автоматического переключения потока в новую партицию скажем каждого 1 числа новго месяца, Вам также понадобиться скрипт auto_switch. sql, получить который можно в службе технической поддержки Дозор-Джет.
По заполнению этих 6 партиций, вы должны будете выгрузить хотя бы одну из них и создать одну или несколько партиций вручную.
Данные метод автоматизирует операции с партициями, но из-за неравномерности почтового потока может не оптимально использовать дисковое пространство. Так, переключение произойдет вне зависимости от объема партиции. Но, если поток уменьшился, по сравнению с прошлыми периодами, это всего лишь неоптимальное использование. Но если поток возрастет, одна партиция может занять существенное место, и затруднить дальнейшие перемещения файлов. Действительно, один партиция может вырасти до нескольких десятков гб!
Данные способ рекомендуется использовать при стабильном потоке почтовых сообщений
- Создавать новые партии по требованию.
- Так администратор безопасности, следит за объемом текущей партиции, и когда она достигает объема 1/n объема физического проcтрантства (см пред раздел) выполняет переключение партиции. В этом случае, установите флаг alter_sequence = Y.
Данные метод оптимален при большом почтовом трафике (~2-4 Гб в день)
Сбор статистики для работы оптимизатора Oracle
В состав СМАП Дозор-Джет входит модуль переоценки статистики для работы Cost Based Optimizer(CBO) СУБД Oracle.
Но, так как, изменяемой частью архива является только последняя партиция, рекомендуется использовать набор скриптов из директории DOZOR_ROOT/schema/oracle/dba/dba_utils. Данные скрипты обеспечивают автоматический сбор статистки с помощью механизма Oracle jobs.
где DOZOR_ROOT - директория, где развернуты скрипты схемы данных Дозор-Джет (DOZOR_ROOT).
Для установки сбора статистики необходимо создать две процедуры, analyze_dict (analyze_dict. sql) и analyze_part (analyze_part. sql). Они позволяют проанализировать, соответственно, медленно изменяющиеся справочные таблицы и быстро растущую активную партицию.
Для установки автоматического запуска выполните скрипт analyze_auto. sql. Он устанавливает выполнение analyze_dict по понедельникам в 10 утра, а запуск analyze_part ежедневно, по рабочим дням в 9 утра.
Для просмотра установленного расписания удобно воспользоваться сриптом jobы. sql. Он также же показывает активные на момент запуска задачи.
SQL> @jobs
no rows selected
JOB WHAT NEXT_DATE NEXT_SEC
42 analyze_dict; 01/03/2004 19:06:22
43 analyze_part; 01/03/2004 19:04:50
В приведенном экране нет активных задач. Для того, чтобы исключить задачу из расписания можно воспользоваться синтаксисом:
SQL> exec dbms_job. remove (42);
PL/SQL procedure successfully completed.
Где 42 – номер задачи из предыдущего листинга
.
Просмотреть дату последнего анализа таблиц можно с помощью скрипта last_analyzed. sql.
Типовые операции при работе с архивом
При любом методе работы с архивом существуют следующие базовые операции с архивом:
Подключение новой партиции Отключение старой (исторической) партиции Перевод табличных пространств СУБД Oracle в состояние ONLINE или OFFLINE Подключение к архиву старой (исторической) партицииВсе операции с архивом производятся с помощью sql скриптов и утилиты sqlplus. Этот набор называется комадной строкой модуля (CLI)
Предположим, что DOZOR_ROOT – директория, где развернуты скрипты схемы данных Дозор-Джет.
Каждый из скриптов работает по следующим правилам:
- Перед запуском любого скрипта необходимо перейти в директорию DOZOR_ROOT/schema/oracle и запускать, находясь в указанной директории. Каждый скрипт следует запускать следующим образом:
sqlplus /nolog @<имя скрипта> Сразу после запуска, скрипт выводит свое название, коротко цель, и ожидает нажатия любой клавиши:
bear% sqlplus /nolog @add_next_partition. sql
SQL*Plus: Release 8.1.5.0.0 - Production on Wed Oct 1 18:37:08 2003
(c) Copyright 1999 Oracle Corporation. All rights reserved.
DOC> Add next partiton
DOC>
DOC> Usage sqlplus /nolog @add_next_partiton from dozor_root/oracle directory
DOC>
DOC> IF you NOT see '-- THE END--' message - check spool file in spool_dir/add_partitions. lst
DOC>#
Press any key to add next partiton
Если вы ошиблись в имени скрипта, нажмите CTRL-С и затем выйдите из sqlplus.
· Если во время выполнения скрипта происходит какая-либо ошибка, скрипт прекращает свою работу
· Протокол выполнения каждого скрипта ведется в директории spool_dir/<имя скрипта>.lst, где spool_dir – переменная из файла config. sql. Обязательно просмотри этот файл, даже есть не произошло ошибок во время выполнения!
· Если ошибок во время выполнения скрипта не происходит, скрипт выводит сообщение
----- THE END -----
Перед (или после) некоторых скриптов требуется также запускать вспомогательные скрипты precheck. sql, pstatus. sql, postcheck. sql. Эти скрипты обеспечивают контроль состояния архива почтовых сообщений. Эти скрипты описаны в приложении 1.
Важно!
- До выполнения операций с партициями выполните полный backup СУБД! Перед выполнением операций отключите почтовый поток (т. е. опустите mailfilter и http иттерфейсы!
В штатном режиме последовательность действий выглядит как
Отключить самую старую партицию (она уже находиться в состоянии READONLY) Перевести ее табличные пространства в offline Переместить файлы этих табличных пространтсв Подключить новую партицию (предыдущая партиция автоматически перейдет в состояние READONLYДля обеспечения поиска по исторической части архива:
1. Развернуть физические файлы требуемых табличных пространств
2. Перевести табличное пространство в ONLINE
3. Подключить партицию
4. Выполнить поиск
5. Отключить партицию
6. Перевести табличные пространства в OFFLINE
Далее рассматриваются утилиты командной строки модуля|.
4.1.1 Подключение новой партиции
Подключение новой партиции создает новую online часть архива с помощью команд alter table.. add partition.
Новые партиции должны быть размещены во вновь созданных пространств на сервере СУБД. Поэтому, перед подключением убедитесь:
В разделе, выделенном для хранения данных СУБД достаточно свободного места. Почтовый поток отключенЭти проверки собраны в скрипт precheck. sql. Ниже показаны только существенные для данной операции проверки.
bear% sqlplus /nolog @precheck
SQL*Plus: Release 8.1.5.0.0 - Production on Thu Oct 2 12:49:13 2003
(c) Copyright 1999 Oracle Corporation. All rights reserved.
Check_for_current_sessions
Check
-----
OK
Please check free space with df - k
Directory Free space must be more than Mb
-
/jet2/DVP/oradata 1,430.51
------- THE END
oracle@alpha:~} df - k | grep /jet2 | awk '{print $4}'
4465100
Выполните подключение с помощью add_next_partition. sql
sqlplus /nolog @add_next_partition
Скрипт:
- Выполняет создание новых табличных пространств smap<n> и smap_message<n>, где <n> номер следующей партиции по порядку; Устанавливает статус предыдущей партиции в READ ONLY и переводит ее табличные пространства в состояние READ ONLY
bear% sqlplus /nolog @add_next_partition. sql
SQL*Plus: Release 8.1.5.0.0 - Production on Thu Oct 2 18:20:58 2003
(c) Copyright 1999 Oracle Corporation. All rights reserved.
DOC> Add next partiton
DOC>
DOC> Usage sqlplus /nolog @add_next_partiton from dozor_root/oracle directory
DOC>
DOC> IF you NOT see '-- THE END--' message - check spool file in spool_dir/add_partitions. lst
DOC>#
Press any key to add next partiton
CONNECT as smap owner. get partiton info
CONNECT as smap-dba. CREATE new tablespaces. Please wait
CONNECT as smap owner. CREATE new partitons (except message AND text_part)
BODY_OWNER
LABEL2RECIPIENT
MAIL_ADDR_HDR
MAIL_STR_HDR
MESSAGE_ACL
MESSAGE_LABEL
RFC822_BODY
RFC822_BODY_HEADER
RFC822_BODY_MSG
RFC822_BODY_PARAM
RFC822_BODY_PART
RFC822_MESSAGE
MESSAGE
TEXT_PART
Save in dozor_options
Recreate message_seq
Save part_manager_part status
------- THE END
После выполнения срипта выполните проверку успешности подключения партиции:
Убедитесь что в лог-файле команды нет ошибок Просмотрите результаты скрипта post_check4.1.2 Отключение старой партиции
Отключение партиции подразумевает выполнение “зеркальных” таблиц в табличном пространстве smap dict и выдаче команд alter table … swap partiton
Поэтому, перед отключением убедитесь:
В табличном пространстве SMAP_DICT достаточно свободного места. Почтовый поток отключенЭти проверки собраны в скрипт precheck. sql. Ниже показаны только существенные для данной операции проверки.
sqlplus /nolog @precheck. sql
bear% sqlplus /nolog @precheck. sql
SQL*Plus: Release 8.1.5.0.0 - Production on Thu Oct 2 10:21:06 2003
(c) Copyright 1999 Oracle Corporation. All rights reserved.
Check_for_current_sessions
Check
-----
OK
Free space in smap dict
Free
-----
OK
Выполните отключение партиции с помощью сrрипта swap_partition. Скрип сам определяет номер партиции для отключения. Номер определяется следующим образом: выбирается минимальный номер партиции со статусом READONLY.
sqlplus /nolog @swap_last_partition
Скрипт:
Отключает ограничения целостности Создает зеркальные таблицы в табличном пространстве SMAP_DICT. Производит операцию swap Включает ограничения целостности Перестраивает индексы, находящиеся в состоянии ‘UNUSABLE’ Выполняет компиляцию объектов БД, находящихся в состоянии ‘INVALID’bear% sqlplus /nolog @swap_last_partition. sql
SQL*Plus: Release 8.1.5.0.0 - Production on Fri Oct 3 18:09:09 2003
(c) Copyright 1999 Oracle Corporation. All rights reserved.
DOC> sawp last partiton
DOC>
DOC> Usage sqlplus /nolog @swap_last_partiton from dozor_root/oracle directory
DOC>
DOC> IF you NOT see '-- THE END--' message - check spool file in spool_dir/swap_last_partition. lst
DOC> you may also WITH TO enable ALL constraints
DOC>#
Press any key to swap last partiton
Connected.
CONNECT as smap owner. Disable all constraints
CONNECT as smap owner. get partiton info
CREATE tables for exchange (except message AND text_part)
MESSAGE
Exchange tables
Rebuild text_part
Update part_manager_part
Rebuild indexes
Enable all constraints
ENABLED
IF you see only 'enabled' word ALL will be ok
------- THE END
Процессы перестройки индексов и включения ограничений целостности может занимать некоторое время, в зависимости от размера БД, и доходит до 30 мин. Наблюдать за состоянием процесса можно следующим образом:
1. Определите pid серверного процесса на сервере СУБД, потребляющего наибольшее кол-во ресурсов процессора, и имеющего в названии подстроку oracleSMAP
2. Выполните скрипт sinner. sql
3. Sqlplus sys/manager @sinner 1234
4. В выводе вы увидете имя индекса, который сейчас перестраивается.
5. В файле журнала перестройки индексов (или ограничений целостности), &spool_dir/rebuild_indexes. sqlplus (&spool_dir/enable_all_constraints. sqlplus) можно видеть все имена индексов в порядке, в котором они будут перестраиваться.
После выполнения скрипта выполните проверку успешности отключения партиций:
Убедитесь что в лог-файле команды нет ошибок Выполните скрипт post_check. Просмотрите результаты его работы.Если Вы используете механизм переоценки статистики оптимизатора, основанный на использовании Oracle jobs, то после отключения партиции рекомендуется выполнить переоценку статистики вручную. Перейдите в директорию DOZOR_ROOT/schema/oracle/dba/dba_utils и выполните команду:
Sqlplus smap/smap @analyze N, где N номер партиции который вы отключили.
4.1.3 Перевод табличных пространств в состояние OFFLINE
Перевод табличных пространств в состояние OFFLINE уведомляет СУБД, что далее с этим табличным пространством не будет производиться никаких операций через СУБД. Это позволяет далее переместить файлы табличного пространства на другой сервер или ленточное устройство.
Перевод табличного пространства в состояние OFFLINE производиться с помощью скрипта off_tablespace. Скрипт, запросит номер партиции, для который выполнить данную операцию.
bear% sqlplus /nolog @off_tablespace. sql
SQL*Plus: Release 8.1.5.0.0 - Production on Thu Oct 2 20:45:39 2003
(c) Copyright 1999 Oracle Corporation. All rights reserved.
DOC> offline tablespace FOR some partition
DOC>
DOC> Usage sqlplus /nolog @off_tablespace <n> from dozor_root/oracle directory
DOC> WHERE <n> - NUMBER OF partiton you want TO offline
DOC>
DOC> IF you NOT see '-- THE END--' message - check spool file in spool_dir/off_tablespace. lst
DOC>#
Press any key to offline tablespaces
Connected.
PART_NUM SMAP_TBLSP SMAP_MESSAGE_TB
1 smapd1 smapd_message1
Choose partition num
Enter value for partition_num: 1
work with partition 1
connect as sys
Bring tablespace offline
FILE_NAME
---
/jet2/DVP/oradata/smapd1_01.dbf
/jet2/DVP/oradata/smapd_message1_01.dbf
------- THE END
4.1.4 Перевод табличных пространств в состояние ONLINE
Перевод табличных пространств в состояние ONLINE уведомляет СУБД, что далее с этим табличным пространством будет производиться операции (такие как чтение в нашем случае) через СУБД.
Перевод табличного пространства в состояние ONLINE производиться с помощью скрипта off_tablespace. Скрипт, запросит номер партиции, для который выполнить данную операцию. После этого, он покажет имена файлов табличных пространтсв и полный путь к ним. Вы обязаны самостоятельно восстановить эти файлы в требуемую директорию с удаленного сервера или ленточного устройства (см. пред главу)!. После восстановления нажмите любую клавишу, скрипт переведет табличные пространства в состояние ONLINE.
bear% sqlplus /nolog @on_tablespace
SQL*Plus: Release 8.1.5.0.0 - Production on Thu Oct 2 21:26:44 2003
(c) Copyright 1999 Oracle Corporation. All rights reserved.
DOC> online tablespace FOR some partition
DOC>
DOC> Usage sqlplus /nolog @on_tablespace <n> from dozor_root/oracle directory
DOC> WHERE <n> - NUMBER OF partiton you want TO online
DOC>
DOC> IF you NOT see '-- THE END--' message - check spool file in spool_dir/on_tablespace. lst
DOC>#
Press any key to online tablespaces
Connected.
PART_NUM SMAP_TBLSP SMAP_MESSAGE_TB
1 smapd1 smapd_message1
Choose partition num
Enter value for partition_num: 1
work with partition 1
connect as sys
FILE_NAME
---
/jet2/DVP/oradata/smapd1_01.dbf
/jet2/DVP/oradata/smapd_message1_01.dbf
This files mus te be available. press ANY key TO bring tablespace online
Bring tablespace online
------- THE END
4.1.5 Подключение ранее отключенной партиции
Для возможности поиска по одной из ранее отключенных партиций ее следует подключить с помощью скрипта restore_partition. Внимание!. Перед выполнением этого скрипта Вы обязаны выполнить восстановление файлов данных и перевод табличных пространств в состояние ONLINE. Во время выполнения скрипт запросит у вас номер партиции для восстановления.
Поэтому, перед восстановлением убедитесь:
В табличном пространстве SMAP_DICT достаточно свободного места. Почтовый поток отключенЭти проверки собраны в скрипт precheck. sql.
bear% sqlplus /nolog @restore_partition
SQL*Plus: Release 8.1.5.0.0 - Production on Fri Oct 3 19:08:13 2003
(c) Copyright 1999 Oracle Corporation. All rights reserved.
DOC> Restore partiton
DOC>
DOC> Usage sqlplus /nolog @restore_partiton from dozor_root/oracle directory
DOC>
DOC> IF you NOT see '-- THE END--' message - check spool file in spool_dir/restore_partition. lst
DOC> you may also WITH TO enable ALL constraints
DOC>#
Press any key TO restore partition
CONNECT as smap owner. Disable all constraints
1 smapd1 smapd_message1
Choose partition num
Enter value for partition_num: 1
work with partition 1
Exchange tables
Rebuild text_part
Update part_manager_part
------- THE END
Rebuild indexes
Enable all constraints
ENABLED
IF you see only 'enabled' word ALL will be ok
После выполнения скрипта выполните проверку успешности подключения партиции:
Убедитесь что в лог-файле команды нет ошибок Просмотрите результаты скрипта post_check5. Возможные проблемы и методы их решения
Один из скриптов CLI завершился неудачно
Пришлите протокол работы в службу поддержки. Причины возникновения проблем будут устранены и выполнение скрипта можно будет продолжить с места возникновения ошибки.
Неверные табличные пространства для тел писем
Переместить тела писем можно с помощью команды:
alter table message move partition p3 tablespace SMAP_MESSAGE3 lob
(value) store as message_l3 (tablespace SMAP_MESSAGE3);
Неверна граница партиции
Разбить существующую партицию на 2:
alter table message split partition p2 at () into
(partition p2_1 tablespace smap_message2,
partition p3 tablespace smap_message3
);
6. Резервное копирование СУБД ORACLE при использовании модуля
Рекомендуется производить резервное копирование СУБД с помощью стандартной утилиты резервного копирования RMAN. При этом СУБД должна находиться в состоянии ‘archive log’, что позволяет производить резервное копирование без остановки СУБД.
В состав СМАП Дозор-Джет входят 2 скрипта RMAN:
Hot_database_backup. rmn. Обеспечивает горячее копирование СУБД Backup_archivelog. rmn. Обеспечивает копирование архивных логов СУБДСкрипт hot_database_backup. rmn должен выполняться ежедневно. Скрипт backup_archivelogs. rmn – каждые несколько часов. Периодичность запуска последнего скрипта напрямую связана с возможностью максимально полного восстановления БД в случае аварии и нарушении целостности устройства, на которое помещаются архивные логи.
Крайне рекомендуется использовать при резервном копировании опцию catalog RMAN. Эта опция позволяет выполнять расширенное управление резервными копиями СУБД. Схему данных этой опции, в принципе, можно разместить на том же сервере СУБД, что и схему данных Дозор-Джет, но при этом требуется выполнять ее отдельное резервирование. В состав Дозор-Джет входит утилита exp_rman. sh выполняющая такое резервирование[2].
7. Список литературы
- Руководство администратора СМАП Дозор-Джет Методика тестирования модуля сегментирования архива почтовых сообщений. Описание файла конфигурации СМАП Дозор-Джет
8. Приложение 1. Вспомогательные скрипты модуля
Precheck.sql
Назначение: Скрипт выполняет важнейшие проверки, перед выполнением операций с партициями, такими как добавление, подключение и отключение партиций. К таким проверкам относятся:
Скрипт необходимо запускать из директории DOZOR_ROOT/oracle. Пример работы скрипта:
sqlplus /nolog @precheck. sql
bear% sqlplus /nolog @precheck. sql
SQL*Plus: Release 8.1.5.0.0 - Production on Thu Oct 2 10:21:06 2003
(c) Copyright 1999 Oracle Corporation. All rights reserved.
Check_for_current_sessions
Check
-----
OK
Free space in smap dict
Free
-----
OK
Please check free space with df - k
Directory Free space must be more than
/jet2/DVP/oradata 1464843.75
------- THE END
Pstatus. sql
Назначение: cкрипт выводит:
Текущие состояние партиций Размещение объектов по табличным пространстсвамbear% sqlplus /nolog @pstatus
SQL*Plus: Release 8.1.5.0.0 - Production on Thu Oct 2 10:35:24 2003
(c) Copyright 1999 Oracle Corporation. All rights reserved.
KEY VALUE COMMENTS
last_partiton_date 15/09/2003 Дата последней операции с партициями
last_partiton_num 2 Номер последней партиции
PART_NUM SMAP_TBLSP SMAP_MESSAGE_TBLSP STATUS DATE_CREAT DATE_MODIF
-----
1 SMAPD1 SMAPD_MESSAGE1 OFFLINE 15/09/2003 15/09/2003
2 SMAPD2 SMAPD_MESSAGE2 ONLINE 15/09/2003 15/09/2003
PAR TABLESPACE_NAME TABLE_NAME STATUS
-
P1 SMAPD_DICT BODY_OWNER OFFLINE
P1 LABEL2RECIPIENT OFFLINE
P1 MAIL_ADDR_HDR OFFLINE
P1 MAIL_STR_HDR OFFLINE
P1 MESSAGE OFFLINE
P1 MESSAGE_ACL OFFLINE
P1 MESSAGE_LABEL OFFLINE
P1 RFC822_BODY OFFLINE
P1 RFC822_BODY_HEADER OFFLINE
P1 RFC822_BODY_MSG OFFLINE
P1 RFC822_BODY_PARAM OFFLINE
P1 RFC822_BODY_PART OFFLINE
P1 RFC822_MESSAGE OFFLINE
P1 SYS_LOBC00006$ OFFLINE
P2 SMAPD2 BODY_OWNER ONLINE
P2 LABEL2RECIPIENT ONLINE
P2 MAIL_ADDR_HDR ONLINE
P2 MAIL_STR_HDR ONLINE
P2 MESSAGE ONLINE
P2 MESSAGE_ACL ONLINE
P2 MESSAGE_LABEL ONLINE
P2 RFC822_BODY ONLINE
P2 RFC822_BODY_HEADER ONLINE
P2 RFC822_BODY_MSG ONLINE
P2 RFC822_BODY_PARAM ONLINE
P2 RFC822_BODY_PART ONLINE
P2 RFC822_MESSAGE ONLINE
P2 SMAPD_MESSAGE2 SYS_LOBC00006$ ONLINE
Postcheck.sql
Назначение: скрипт проверяет состояние индексов и ограничений целостности (constraint). Нормальным, счтается отсутвие вывода скрипта после фраз Check constraints и Check indexes. Если обнаружены ошибки, следует такой вывод:
bear% sqlplus /nolog @postcheck. sql | more
SQL*Plus: Release 8.1.5.0.0 - Production on Thu Oct 2 11:23:06 2003
(c) Copyright 1999 Oracle Corporation. All rights reserved.
Check constraints
Need enabled!
SYS_C0034942
ACTION_PK
SYS_C0034944
APP_GROUP_PK
APP_GROUP_UK
APP_USER_PK
SYS_C0034897
SYS_C0034987
BODY_OWNER_PK
BODY_RFC822_BODY_FK
BODY_MESSAGE_FK
Следует исправить ситуацию до включения потока.
[1] В новой версии модуля для контекстного индекса выделено табличное пространство SMAP_CONTEX. Первым предложил такое изменение Алексей Соловьев
[2] Выражаю благодарность Алексею Соловьеву в тестировании процедур резервного копирования



