У меня есть две базы данных, которые я назову LOCAL и REMOTE.Я понимаю и подтвердил, что выполнение следующего из LOCAL не приведет к прямой вставке пути:
INSERT /*+ APPEND */ INTO REMOTE_TABLE@REMOTEDB
SELECT * FROM LOCAL_TABLE;
, но выполнение следующего из REMOTE приведет к прямой вставке пути:
INSERT /*+ APPEND */ INTO REMOTE_TABLE
SELECT * FROM LOCAL_TABLE@LOCALDB;
Моя проблема в том, что мне нужно запустить процесс из моей локальной базы данных.Поэтому я создал процедуру для удаленной базы данных следующим образом:
CREATE OR REPLACE PROCEDURE MY_LOAD AS
BEGIN
INSERT /*+ APPEND */ INTO REMOTE_TABLE
SELECT * FROM LOCAL_TABLE@LOCALDB;
END;
И я запустил процедуру из локальной базы данных:
BEGIN
MY_LOAD@REMOTEDB;
END;
Но она не выполняет прямую вставку пути.
Может кто-нибудь подтвердить, что да, это не будет делать прямой путь вставки?Может кто-нибудь предложить альтернативный способ сделать прямой путь вставки?
Требования большого изображения - копировать все или подмножество строк из раздела в локальной базе данных в раздел в удаленной базе данных.Таблица назначения находится в режиме LOGGING, поэтому планируется направить загрузку INSERT в промежуточную таблицу NOLOGGING в базе данных REMOTE, а затем поменять эту таблицу с разделом назначения.