В этом рецепте, взятом из книги по настройке производительности Oracle SOA Suite 11g (ISBN: 9781849688840, Packt Publishing), мы удалим старые данные об обезвоживании и состоянии BPEL из базы данных инфраструктуры SOA.
Готовиться
Вам потребуется доступ к базе данных, в которой размещена схема SOA_INFRA . В этом рецепте мы будем использовать командную строку, локальную для хоста, на котором мы установили базу данных.
Вам также понадобится доступ к сценариям SQL, входящим в комплект SOA Suite, если у вас установлен SOA Suite на хосте, на котором работает база данных, вы можете найти их по адресу : MW_HOME / SOA_ORACLE_HOME / rcu /gration / soainfra / sql / soa_purge
Если база данных работает на отдельном хосте, вы можете просто скопировать каталог soa_purge с сервера администратора WebLogic в каталог на хосте базы данных, для этого мы будем использовать e: \ soa_purge .
Как это сделать…
Выполните следующие шаги для запуска сценариев soa_purge
1. Сначала войдите в sqlplus как пользователь с привилегиями sysdba и предоставьте следующие разрешения пользователю dev_soainfra, затем выйдите из оболочки
sqlplus / as sysdba SQL> GRANT EXECUTE ON DBMS_LOCK TO DEV_SOAINFRA; SQL> GRANT CREATE ANY JOB TO DEV_SOAINFRA; SQL> exit
2. В командной строке проще всего перейти в папку папки SOA Suite purge_sql, так что делайте это время от времени, а затем войдите в систему как пользователь dev_soainfra.
cd e:\soa_purge SQL> sqlplus DEV_SOAINFRA/your_soainfra_password
3. Теперь запустите SQL-скрипт, это сгенерирует много выходных данных. В случае успеха это закончится «процедура успешно завершена».
SQL> @soa_purge_scripts.sql ... Procedure created. Type created. Type body created. PL/SQL procedure successfully completed.
4. Введите следующее, подставив даты создания соответствующим образом
SQL> DECLARE 2 3 max_creation_date timestamp; 4 min_creation_date timestamp; 5 retention_period timestamp; 6 BEGIN 7 8 min_creation_date := to_timestamp('2012-10-01','YYYY-MM-DD'); 9 max_creation_date := to_timestamp('2013-01-30','YYYY-MM-DD'); 10 retention_period := to_timestamp('2010-02-01','YYYY-MM-DD'); 11 12 soa.delete_instances_in_parallel( 13 min_creation_date => min_creation_date, 14 max_creation_date => max_creation_date, 15 batch_size => 10000, 16 max_runtime => 60, 17 retention_period => retention_period, 18 DOP => 3, 19 max_count => 1000000, 20 purge_partitioned_component => false); 21 22 END; 23 / PL/SQL procedure successfully completed.
Как это устроено…
Пакет SOA Suite поставляется со сценариями обслуживания, которые позволяют нам выполнять служебную работу с базовыми таблицами базы данных. Поскольку эти таблицы используются для каждой задачи вызова, обезвоживания и аудита, со временем они могут заполниться до размеров, которые снижают производительность базы данных.
В этом рецепте мы скопировали процедуры SQL SOA Suite на сервере администратора WebLogic, на который ссылается MW_HOME / SOA_ORACLE_HOME (на нашем хосте это был E: \ Oracle \ Oracle_SOA1 ), на хост базы данных, содержащий схему SOA. Мы предоставили подходящие привилегии пользователю dev_soainfra, чтобы пользователь мог запустить задачу, а затем установить некоторые параметры для сценариев. Мы устанавливаем дату начала и окончания создания составного файла min_creation_date , max_creation_date и устанавливаем дату отсечения для последнего времени изменения составного объекта (retention_period). Любой композит, который был создан в границах минимальной / максимальной даты и последний раз изменялся до того, как retention_period будет удален этим вызовом сценария.
Мы создали экземпляр процедуры удаления экземпляров ( soa.delete_instances_in_parallel ), которая выполняется параллельно, это ускорит удаление составных данных. Параметр DOPS определяет, сколько параллельных вызовов будет запущено. Скрипт зацикливания также доступен.
Существует ряд параметров, мы рекомендуем установить max_runtime, чтобы предотвратить зависание скрипта во время работы или от пользователей, которые думают, что длительный процесс завис. Полный список параметров доступен здесь: http://docs.oracle.com/cd/E29505_01/admin.1111/e10226/soaadmin_partition.htm
Изначально существуют ограничения на сценарии очистки, такие как не очистка сегментов больших объектов в схеме SOA DEV_SOAINFRA . Таким образом, эти сценарии можно использовать в качестве отправной точки для создания сценариев очистки, ориентированных на вашу среду.
Сценарий очистки можно изменить так, чтобы он предназначался только для определенных композитов или, альтернативно, для других репозиториев SOA Suite, таких как BAM и Mediator.
Отдельно таблицы базы данных SOA Suite поддерживают разбиение, что позволяет размещать схемы DEV_SOAINFRA в нескольких базах данных, разделяя затраты на хранение и сокращая время обработки. Разделение баз данных выходит за рамки этой книги и ожидаемые навыки читателя, администратор базы данных может обратиться к документации Oracle Fusion Middleware для получения дополнительной информации