Создаём read-only секции
Секциям, в которых данные больше не должны изменяться, можно присвоить статус Read-Only. Установка этого статуса позволяет вам защитить ваши данные от изменения такими операциями как CREATE, UPDATE и DELETE. Кроме того, вы можете максимально уплотнить ассоциированные с такой секцией локальные индексы, что позволит сократить используемое дисковое пространство и улучшить производительность запросов.
Когда секция получает статус read-only, относительно неё по-прежнему могут быть выполнены следующие операции:
- Чтение данных из ABL- и SQL- приложений.
- Чтение данных для бинарной выгрузки и формирования аналитических отчётов (dbanalys, tabanalys, idxanalys).
- Выполнение административных задач с индексами, таких как, IDXBUILD, IDXCOMPACT и IDXCHECK.
- Изменение физического расположения данных (SPLIT, MERGE).
- Изменение формата данных: шифрование и дешифрование; изменение кодовой страницы.
Существует три способа установления статуса read-only в онлайн:
- С помощью Database Administration Console.
- С помощью
- С помощью OpenEdge SQL.
Рассмотрим каждый из этих способов отдельно.
C помощью Database Administration Console
Прежде, чем изменить уровень доступа к секции на read-only, вам необходимо активировать эту возможность в базе данных. Делается это один раз, для чего необходимо выполнить следующую последовательность действий (сейчас не нужно этого делать на тестовой базе данных, вы сделаете это во время практического занятия):
- Находясь в OpenEdge Management щёлкнуть по пункту меню Database Administration -> Go to Database Administration .
- На открывшейся странице щёлкните по подключению к базе данных, в которой необходимо активировать возможность создания read-only секций. После чего, на правой панели будут отображены пять секций с информацией о базе данных. В секции Database Features вы увидите, что возможность Read-only Partitions деактивирована.
- Щёлкните по ссылке Enable, расположенной рядом с именем возможности.
- На открывшейся странице щёлкните Enable read-only partitions и затем Ok. В списке Database Features статус возможности Read-only Partitions изменится на активный.
Примечание: начиная с OpenEdge 12.0 возможность создания Read-only секций активируется по умолчанию во время активации Table Partitioning в базе данных.
Теперь вы можете установить статус Read-only для конкретных секций в базе данных. Для этого необходимо выполнить следующую последовательность действий:
- В секции Storage Management щёлкните по ссылке Partition policies. Откроется страница с таблицей, содержащей доступные политики секционирования.
- В столбце Action щёлкните по ссылке Edit Details для необходимой политики секционирования. Откроется страница Edit Partition Policy Details.
- Выполните двойной щелчок мышью по описанию секции, которую вы хотите пометить как read-only, и установите флаг Read-only.
- Щёлкните Update для применения изменений.
- Если необходимо, то повторите пункты 3 и 4 для прочих секций.
- Щёлкните по кнопке Commit для сохранения изменений в деталях политик секционирования.
С помощью PROUTIL
Изменить уровень доступа к секции также можно с помощью утилиты PROUTIL. Для этого сначала к базе данных применяется команда PROUTIL ENABLEREADONLYPARTITIONS. Сделать это нужно только один раз. Синтаксис команды:
proutil db-name –C enablereadonlypartitions
Теперь для изменения уровня доступа к конкретной секции можно применить команду PROUTIL ALTER STATE с параметром READ-ONLY:
proutil db-name -C partitionmanage alter table table-name partition partition-name state read-only
Пример. Представим, что в базе данных возможность изменения уровня доступа к секциям уже активирована. Следующий пример команды PROUTIL ALTER STATE пометит секцию Order_2013 как доступную только для чтения:
proutil sports -C partitionmanage alter table order partition Order_2013 state read-only
Если необходимо, чтобы данные секции вновь стали доступны для изменения, то вы должны выполнить команду PROUTIL ALTER STATE с параметром READ-WRITE.
proutil db-name -C partitionmanage alter table table-name partition partition-name state read-write
В случае, если вы хотите полностью деактивировать возможность изменения уровня доступа к секциям, то вы должны сначала изменить статус всех read-only секций на read-write, и затем выполнить команду PROUTIL DISABLEREADONLYPARTITIONS:
proutil db-name -C disablereadonlypartitions
С помощью OpenEdge SQL
В первую очередь для того, чтобы получить возможность изменять уровень доступа к секции, вам необходимо активировать эту возможность с помощью Database Administration Console или с помощью команды PROUTIL ENABLEREADONLYPARTITIONS. После этого, используя OpenEdge SQL, вы сможете пометить секции как read-only.
Команда для изменения уровня доступа в онлайн следующая:
ALTER TABLE table-name SET READ_ONLY FOR PARTITION partition-name1, partition-name2, ...;
Обратите внимание на то, что с помощью оператора ALTER TABLE SET READ_ONLY вы можете изменить уровень доступа для нескольких секций за раз.
Для того, чтобы сделать данные секции вновь доступными для изменения, применяется следующая команда:
ALTER TABLE table-name SET READ_WRITE FOR PARTITION partition-name1, partition-name2, ...;