Загрузка данных в глобальную временную таблицу - PullRequest
3 голосов
/ 29 ноября 2010

У меня два разных сеанса Oracle ("сеанс A" и "сеанс B") на одном и том же пользователе Oracle.

Глобальная временная таблица заполняется в "сеансе A" примерно 320 000 записями.

Как я могу быстро вставить те же 320 000 записей в глобальную временную таблицу «сеанса B»?

Заранее благодарим за ваши добрые предложения!

РЕДАКТИРОВАТЬ: я забыл указать, что мне разрешено создавать ТОЛЬКО ГЛОБАЛЬНЫЕ ВРЕМЕННЫЕ ТАБЛИЦЫ.

РЕДАКТИРОВАТЬ: я забыл указать, что мне не разрешено создавать ссылки на базы данных

Ответы [ 3 ]

5 голосов
/ 29 ноября 2010

Данные во временной таблице видны только текущему сеансу, поэтому я не думаю, что есть способ сделать то, что вы хотите, без другого подхода.

3 голосов
/ 30 ноября 2010

DBMS_PIPE - это «классический» механизм для передачи информации из одного сеанса в другой.Сеанс A должен был бы вытолкнуть данные в канал, а сеанс B - потянуть их.

Но, как правило, идея баз данных состоит в том, что сеансы независимы, и любая общность содержится в сохраненных данных.Если вы идете против этого, это означает, что вы используете не тот инструмент.

2 голосов
/ 29 ноября 2010

Данные в глобальной временной таблице видны только сеансу, который их вставил.Таким образом, вам придется запустить тот же процесс, который заполнил таблицу в сеансе B.

Конечно, тот факт, что вы хотите получить доступ к одним и тем же 320 000 строк в двух разных сеансах, может показаться, что глобальныйвременная таблица не является подходящей структурой данных для использования.Возможно, вы хотите загрузить эти данные в постоянную таблицу (возможно, вместе с каким-то идентификатором, если у вас будет несколько пар SessionA / SessionB).Или, может быть, какую бы логику ни выполнял сеанс B, она должна выполняться сеансом A.

И просто сделать шаг назад, поскольку Oracle реализует многовариантную согласованность чтения так, что читатели не блокируют писателей, а писатели - нет.блокировать считыватели, было бы очень необычно иметь во-первых временную таблицу на 320 000 строк.

...