Как скопировать данные из одной базы данных / таблицы в другую базу данных / таблицу - PullRequest
11 голосов
/ 20 января 2012

Я написал следующий запрос с использованием документации по адресу: Oracle Documentation , чтобы скопировать некоторые данные из базы данных / таблицы на моем производственном сервере в базу данных / таблицу на сервере Sandbox.

COPY FROM username1/passwd1@<production_IP> to username2/passwd2@<sandbox_IP> INSERT TABLE_C (*) USING (SELECT * FROM TABLE_C WHERE COL_A = 4884);

Однако я постоянно сталкиваюсь с ошибкой Connection failed. Что-то не так с запросом?

Ответы [ 2 ]

17 голосов
/ 20 января 2012

В типичной среде Oracle у вас настроены имена TNS. Это служба для поиска параметров соединения для экземпляров Oracle с указанным SID или именем службы. В простейшей форме имена TNS - это файл с именем tnsnames.ora, расположенный в переменной окружения TNS_ADMIN (которая указывает на каталог, где находится файл).

Учитывая SID PROD и SANDBOX, вы можете скопировать таблицы из утилиты командной строки SQLPLUS:

COPY FROM username1/passwd1@PROD to username2/passwd2@SANDBOX
    INSERT TABLE_C (*) USING (SELECT * FROM TABLE_C WHERE COL_A = 4884);

Обратите внимание, что эта команда COPY поддерживает только ограниченный набор типов данных Oracle: char, date, long, varchar2, number.

Если у вас не настроены имена TNS, вам нужно знать имя хоста или IP-адрес, номер порта и имя службы. Синтаксис становится следующим:

COPY FROM username1/passwd1@//192.168.3.17:1521/PROD_SERVICE to username2/passwd2@//192.168.4.17:1521/SANDBOX_SERVICE
    INSERT TABLE_C (*) USING (SELECT * FROM TABLE_C WHERE COL_A = 4884);

Чтобы определить SID и / или имя службы, лучше всего заглянуть в файл TNSNAMES.ORA на самом сервере базы данных. Если вы можете войти в базу данных, вы можете использовать следующие запросы для определения SID и имени службы (но не спрашивайте меня, какой именно):

select name from v$database;

select * from global_name;

select instance_number, instance_name, host_name from v$instance;
1 голос
/ 08 августа 2012

Копировать gpl_project/gpl_project@gpldatar в gpl_project/gpl_project@gplrdp.Заменить BGROUPMASTER, используя select * from BGROUPMASTER.

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