Oracle - Перенос записей между двумя экземплярами через синонимы? - PullRequest
1 голос
/ 06 сентября 2011

Нам нужно перенести данные между несколькими экземплярами базы данных Oracle.

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

Сложность в том, что используемое нами имя пользователя Oracle не имеет прямого доступа к самим таблицам - таблицы принадлежат отдельному пользователю. Мы не видим ни одной из таблиц, у нас есть только права на просмотр синонимов для таблиц.

Два инструмента, на которые я смотрел, Oracle SQL Developer и Toad for Oracle, позволят вам выводить данные из таблиц (что мы могли бы сделать, если бы у нас был доступ к учетной записи владельца), а также создавать сценарий для повторного создания. сами синонимы (как в DROP SYNONYMY XYZ; CREATE SYNONYM XYZ FOR ABC;); тем не менее, они не позволяют вам указать синоним и перейти по этой ссылке, чтобы сбросить все данные из этого.

Есть ли способ настроить что-либо из вышеперечисленного или обходной путь, при котором мы могли бы использовать инструмент для сброса данных через синонимы?

Если это не удастся, следующая лучшая вещь будет написать некоторый SQL и написать скрипт для дамп / реимпорта. Любой совет здесь, предостережения, лучшие практики?

Ответы [ 3 ]

1 голос
/ 08 сентября 2011

Один из моих коллег нашел команду Oracle SQLPlus COPY, которая, похоже, выполняет свою работу:

COPY FROM username/password@hostname:port/SERVICENAME TO username_owner/password@hostname:port/SERVICENAME APPEND TABLE1 USING SELECT * from TABLE1;

Она скопирует все значения и в этом случае добавит (хотя вы также можете создать таблицуили вставьте в таблицу) значения в таблицу на отдельном экземпляре БД Oracle.

Единственное предостережение в том, что руководство SQLPlus говорит, что оно будет устаревшим (не знаю почему), однако я только что проверил11G, и команда определенно все еще там.

Ура, Виктор

1 голос
/ 06 сентября 2011

Является ли DB Link полезным в вашей ситуации?

0 голосов
/ 06 сентября 2011

Вам действительно нужно поговорить об этом с вашим администратором баз данных и получить правильный доступ к владельцу данных или попросить администраторов баз данных создать вам ссылку на базу данных в соответствии с предложением Чин Буна.

Грубый и (очень) грубыйметод для передачи данных из одного экземпляра в другой без доступа, кроме выбора в источнике, заключается в том, чтобы помещать выходные данные из источника в файл с разделителями, а затем импортировать эти данные в целевую базу данных (с использованием внешних таблиц или при наличии доступа).не позволяет вам создавать внешние таблицы, а затем какие-то другие пользовательские приложения в java и т. п.)

Мои оговорки в отношении вышеуказанного решения (если это можно так назвать) состоят в том, что если объем ваших данных оченьбольшой файл с разделителями станет очень громоздким очень быстро.Так что мой начальный пункт, вероятно, ваш лучший вариант, попросите ваших администраторов баз данных сделать это за вас, поскольку их доступ позволит им выполнять операцию очень эффективно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...