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;
 
 


 
 Сообщения
Сообщения
 
 
Комментариев нет:
Отправить комментарий