Как мне параллельную прямую загрузку с использованием внешних таблиц Oracle?
Несколько лет назад Томас Кайт сказал это ( здесь):
Мое любимое использование внешних столов:
Загрузите этот действительно большой файл как можно скорее. Раньше настраивали сценарии для параллельной прямой загрузки пути. Координировать запуск указанных сценариев. Просмотрите файлы журнала, чтобы убедиться, что все они закончены. Разделите входной файл или используйте команду skip и загрузите, чтобы разделить файл вверх. Одним словом, боль в заднице.
Сейчас:
create table ET parallel; create table new_table (...) parallel as select * from ET;
параллельная прямая траектория нагрузки сделана тривиальной.
За исключением того, что это не правильный синтаксис...
Как мне использовать внешние таблицы Oracle для выполнения "параллельной прямой загрузки"?
1 ответ
Параллельные возможности внешних таблиц несколько ограничены. Насколько я знаю, вам нужно либо иметь несколько файлов с одинаковым форматом, которые можно обрабатывать параллельно (см. Ниже), либо один файл с форматом фиксированной длины:
CREATE TABLE WORKING_HOURS_EXT
( employee_id NUMBER(8),
project_id VARCHAR2(20),
start_time VARCHAR2(25),
end_time VARCHAR2(25)
)
ORGANIZATION EXTERNAL
(
TYPE ORACLE_LOADER
DEFAULT DIRECTORY loader_data_dir
ACCESS PARAMETERS
(
records delimited by newline
fields terminated by ';'
( employee_id, project_id, start_time, end_time
)
)
LOCATION ('hours01.txt', 'hours02.txt', 'hours03.txt')
)
PARALLEL;
ALTER SESSION ENABLE PARALLEL DML;
MERGE INTO WORKING_HOURS a
USING WORKING_HOURS_EXT b ON (...