Запросите две базы данных с Oracle SQL Developer - PullRequest
9 голосов
/ 17 ноября 2011

Есть ли способ запросить две базы данных (в одном запросе) в Oracle SQL Developer?

Я не очень хорошо знаком с Oracle - за исключением стандартного синтаксиса CRUD.

Я пытаюсь сделать вставку в таблицу Oracle из таблицы SQL Server. Хотел бы сделать что-то вроде этого:

INSERT INTO OracleDB.table (field1, 2, ...)
SELECT ... FROM SQLServerDB.schema.table

У меня есть (рабочие) соединения, созданные для обеих баз данных в Oracle SQL Developer.

Спасибо

- EDIT -

У меня нет прав администратора для самих баз данных. (Невозможно создать связанные серверы и т. Д.)

Ответы [ 2 ]

10 голосов
/ 17 ноября 2011

Да, это возможно. Соединения в SQL Developer вам не помогут - вам придется установить ссылку на базу данных из базы данных Oracle в базу данных SQL Server.

Перед созданием ссылки на базу данных вам необходимо настроить гетерогенный шлюз для подключения к SQL Server.

Общие шаги включают в себя:

  • Установите драйверы Oracle ODBC на сервере, который будет обращаться к удаленной базе данных SQL Server по ссылке на базу данных.

  • Настройка подключения ODBC к локальной базе данных Oracle с помощью администратора источников данных ODBC Windows

  • Протестируйте драйверы ODBC, чтобы убедиться, что установлено соединение с базой данных SQL Server.

  • Настройте гетерогенные службы Oracle, создав файл initodbc.ora в базе данных Oracle.

  • Изменить файл Listener.ora.

        SID_NAME is the DSN for the remote database.
        ORACLE_HOME is the actual Oracle home file path.
        PROGRAM tells Oracle to use heterogeneous services.
    
        SID_LIST_LISTENER =
        (SID_LIST =
        (SID_DESC =
        (SID_NAME=ora_sid) -- Enter the DSN on this line
        (ORACLE_HOME = c:\oracle10gdb) -- Enter your Oracle home on this line
        (PROGRAM = hsodbc) ) )
    
  • Измените Tnsnames.ora file, чтобы он указывал на шлюз

        (DESCRIPTION=
        (ADDRESS_LIST=
        (Address=(PROTOCOL=TCP)
        (HOST=
        -- (Server x)
        (PORT=1521))) -- Enter the port on which the server x Oracle installation
        -- is listening
        (CONNECT_DATA=(SID=Cas30c)) - Enter the DSN name
        (HS=OK) -- Enter this value. It tells Oracle to use hetergeneous services
        )
    
  • Перезагрузите прослушиватель в локальной базе данных Oracle

  • Создайте ссылку на базу данных в локальной установке Oracle, которая обращается к гетерогенному соединению, которое, в свою очередь, подключается к SQL Server.

После создания ссылки на базу данных вы сможете вставить ее в базу данных с помощью простого:

 insert into <oracle_tablename>
 select * from <sqlserver_table_name>@dblink_name

Дальнейшее чтение:

2 голосов
/ 17 ноября 2011

Вы можете читать данные из соединения ODBC, используя гетерогенные службы. Это немного больно, хотя настраивать. Вы должны отредактировать несколько файлов в oracle install, чтобы настроить новый прослушиватель TNS, а затем создать dlink в вашей схеме / global.

Это руководство предназначено для Unix, но является самым коротким / наименее запаздывающим ИМО.

Другой вариант - передача данных через стороннюю программу. Например, я думаю, что вы можете создать запрос в MS Access, а затем экспортировать данные в Oracle или SQL Server.

...