Service support in Datapump 11g

При работе в RAC много вопросов вызывает Datapump.
Вот только некоторые из них:
- на каком узле кластера будет формироваться dmp-файл ?
- на каком или на каких узлах кластера будут выполняться задания (job-ы) Datapump ?
- не нарушит ли работа Datapump распределение нагрузки спланированное с помощью сервисов ?

Наконец-то многие вопросы в 11g сняты:
Datapump в Oracle Database 11g поддерживает сервисы!

То есть теперь, при выполнении экспорта/импорта, вы можете привязать процессы Datapump к определенному сервису.
С помощью сервиса вы можете, например, жестко привязать процессы экспорта/импорта к определенному узлу, или же ограничить объем необходимых ресурсов с помощью Resource Consumer Group.

Единственная тонкость: данная возможность доступна только через Datapump API (т.е. через пакет DBMS_DATAPUMP). В утилитах expdp/impdp нет возможности указать имя сервиса. :-)

Для привязки к сервису, в процедуре DBMS_DATAPUMP.START_JOB, добавился новый параметр: service_name. Вот небольшой пример выполнения экспорта через API (т.е. прямо из приложения), при этом экспорт выполняется в рамках сервиса:


declare
v_xHandle number;
v_cDmpFileName constant varchar2(64) := 'apexdemo.dmp';
v_cLogFileName constant varchar2(64) := 'apexdemo.log';
v_cDirectory constant varchar2(64) := 'DATA_PUMP_DIR';
begin
v_xHandle := dbms_datapump.open(operation => 'EXPORT',
job_mode => 'SCHEMA',
job_name => 'APEXDEMO_EXPORT',
version => 'COMPATIBLE');

dbms_datapump.metadata_filter(handle => v_xHandle,
name => 'SCHEMA_EXPR',
value => 'IN (''APEXDEMO'')');

dbms_datapump.add_file(handle => v_xHandle,
filename => v_cLogFileName,
directory => v_cDirectory,
filetype => 3);

dbms_datapump.add_file(handle => v_xHandle,
filename => v_cDmpFileName,
directory => v_cDirectory,
filetype => 1);

dbms_datapump.start_job(Handle => v_xHandle,
service_name => 'DP_SERVICE');
dbms_datapump.detach(v_xHandle);
end;

Комментариев нет:

Отправить комментарий