Ora 28500 соединение oracle с посторонней системой выдало сообщение

Обновлено: 02.07.2024

ORA-02019:
"connection description for remote database not found"
Cause: The user attempted to connect or log in to a remote
database using a connection description that could not
be found.
Action: Specify an existing database link. Query the data
dictionary to see all existing database links. See
your operating system-specific SQL*Net documentation
for valid connection descriptors.

When you create a database link, you use the following command:

CREATE DATABASE LINK link_name CONNECT TO username IDENTIFIED BY password USING 'tns_entry';

In the above, the USING clause specifies a TNS entry in your TNSNAMES.ORA configuration file. So you have to update your config file. The ORA-2019 error is indicating that the tns entry is not found in this file. And database links always look for the tnsnames.ora config file in the ORACLE_HOME/network/admin directory. So make sure the file exists in this entry and the file is updated.

Это я все понял.

Configuring Oracle Database Gateway for ODBC

Покажи listener.ora , tnsnames.ora

Покажи, как гетерогенное соединение настраиваешь.

Why am I getting the ORA-02019 error?

Покажи, как гетерогенное соединение настраиваешь.

так и настраиваю, только в системном дсн меняю имя сервера и имя базы sql а потом получаю

принимаю к внимаю что логин/пароль чувствительны к регистру.

принимаю к внимаю что логин/пароль чувствительны к регистру.

в mssql -> Пользователю "MYUSER" не удалось войти в систему. [КЛИЕНТ: ]

listener.ora ->
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.181.49.6)(PORT = 1521))
)
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
)
)
)

SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = ORCL)
(ORACLE_HOME = D:\Oracle\Ora90)
(SID_NAME = ORCL)
)
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = D:\oracle\ora90)
(PROGRAM = extproc)
)

(SID_DESC =
(SID_NAME = my_sql)
(ORACLE_HOME = D:\oracle\ora90)
(PROGRAM = hsodbc)
)

MY_SQL =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = dc3)(PORT = 1521))
)
(CONNECT_DATA =
(SID = my_sql)
)
(HS = OK)
)

Появилась необходимость связать две системы одна из которых работает на базе Oracle, а вторая на SQL Server 2005. После некоторого времени забирательства было установлено что такой вариант (сабж) работает в чистом виде только с SQL Server 2000. В варианте 2005 консоль оракла при попытке сделать что либо с удаленной базой выдает:

ORA-28500: connection from ORACLE to non-Oracle system returned this message: [Generic Connectivity Using ODBC][Microsoft][ODBC SQL Server Driver][SQL Server]Login failed for user 'MYUSERNAME'. (SQL State: 28000; SQL Code: 18456)

ORA-02063: preceding 2 lines from MYDSNNAME

Аутентификация используется SQLServer-ная.

Разбираясь дальше выяснил что, работает если:

1) SQL Server 2000 - без проблем

2) SQL Server 2003 - через анонимный доступ ( NT AUTHORITY\ANONYMOUS LOGON )

(Как можно научить оракл посылать правильные запросы на аутентификацию не спрашиваю, но если вдруг кто-то знает, тоже буду рад услышать :) )

Ответы

В первую очередь - проверить, чтобы пароль и логин на sql 2005 были написаны в двойных кавычках. Проверить порт, на котором сидит SQL 2005 - может, не 1433, express-версия может быть например на другом порту. Проверить подключение с удалённой машины через Management Studio - а нет ли запрета на удалённые подключения.

И проверить регистр пароля! :)

ORA-28500: connection from ORACLE to a non-Oracle system returned this message: [Transparent gateway for ODBC ]DRV_InitTdp: [DATADIRECT][ODBC SQL Server Driver][SQL Server] Login failed
(SQL State: 28000; SQL Code: 4002)
ORA-02063: preceding 3 lines from HSTEST
Cause: The Oracle database link created for the foreign datasource has either no credentials or incorrect credentials.
Action: Recreate the Oracle database link with the proper username and password. Also, username and password must be in double quotes.
Example:

При прокидывании линка gw4odbc база данных не поднимается, а с hsodbc база поднимается с бубнами, tnsping sucsess, но запросы не отрабатываются.

Но при попытке сделать селект в тестовую таблицу (SELECT * FROM "PUBLIC.TEST"@PG получаю ошибочку

Что делать ума не приложу

Приложил текущий конфиг :

Настройка Oracle - Postgres DBLINK
Добрый день, Появилась необходимость выполнить подключение из Oracle в Postgre (вер. 9.5). .

Помогите разобраться с DbLink в Oracle
Был создан линк к БД. CREATE PUBLIC DATABASE LINK ААА CONNECT TO test IDENTIFIED BY test .

MERGE через dblink: узнать реальный план oracle
Цель: добавлять данные в удалённую таблицу на основе результатов селекта с локальной таблицы и.

Из Oracle в postgresql
Здравствуйте, подскажите пожалуйста, как мигрировать, конвертировать базы данных из Oracle в.

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

Имеется Excel документ emp.xls с листом employee содержащим
следующие данные

1) Настраиваем ODBC источник (System DSN), называем его EMPXLS. В качестве Workbook указываем путь к emp.xls.

2) Выполняем скрипт если он еще не был выполнен

Проверить, был ли выполнен скрипт, можно след. образом

LISTENER =
(ADDRESS_LIST =
(ADDRESS= (PROTOCOL=tcp)
(HOST = localhost)
(PORT = 1521)
)
)

SID_LIST_LISTENER =
(SID_LIST =
. -- прочие SID
(SID_DESC =
(PROGRAM = hsodbc)
(ORACLE_HOME = d:\oracle\ora92) -- ORACLE_HOME
(SID_NAME = EMPXLS)
)
)

4) Создаем и редактируем файл

Имя файла должно точно соответствовать init .ora, где это имя сервиса прописанного в listener.ora.

HS_FDS_CONNECT_INFO=EMPXLS -- имя odbc источника

5) Редактируем файл tnsnames.ora, добавляем запись о EMPXLS

Файл должен находится на сервере с базой, так как база выступает клиентом обращающимся к hs агенту.

EMPXLS =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
)
(CONNECT_DATA =(SID = EMPXLS))
(HS = OK)
)

Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)
(HOST = localhost)(PORT = 1521))) (CONNECT_DATA =(SID = EMPXLS)) (HS = OK))
OK (100 msec)


9) Запрашиваем данные . Используем двойные кавычки, чтобы сохранить регистр в именах таблиц и колонок.

Особенности использования hsodbс при GLOBAL_NAMES = TRUE.

Если база в режиме GLOBAL_NAMES, то необходимы следующие дополнительные настройки.

1) Указать имя источника и домена в %ORACLE_HOME%\hs\admin\initEMPXLS.ora

EMPXLS.DOMAIN_NAME =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
)
(CONNECT_DATA =(SID = EMPXLS))
(HS = OK)
)

1) Если Excel документ находится на сетевом диске

Пользователь, от имени которого запущены сервисы Oracle, должен иметь
необходимые права доступа на этот сетевой диск/документ. По умолчанию сервис Oracle в Windows запускается от имени администратора локальной машины, поэтому следует запускать его от имени доменного пользователся, имеющего необходимые права доступа.

2) Одновременная работа с документом в нескольких сессиях

При работе с Excel документом в режиме чтение/запись через ODBC драйвер, только один пользователь может работать с ним одновременно, или, иными словами, в таком случае ODBC драйвер открывает документ в монопольном режиме. Поэтому, если DB Link уже открыт в одной сессии, то при попытке обратиться к нему из другой сессии возникает ошибка:

Если для работы достаточно режима только чтение, в настройках ODBC источника следует указать опцию read only. Тогда несколько сессий смогут читать из него одновременно.

3) Извлечение данных из документа со сложной или не четко упорядоченной структурой данных

Иногда, Excel документ представляет собой настоящий "винигрет" из данных, элементов красочного оформления, пояснений, комментариев, свободного текста итп. Читать данные из такого документа в Oracle не всегда получается легко. В этом случае рекомендуется создавать дополнительный лист, где будут храниться очищенные данные в строгой табличной форме. Обновление данных в этом вспомогательном листе можно автоматизировать, задав их зависимость от исходных данных. Таким образом, с одной стороны, не накладываются дополнительные ограничения на пользователей, работающих с исходным листом, с другой, обеспечивается строгая структуризация данных для их беспроблемного извлечения в Oracle.

Стоит добавить сюда, что начиная с 11.2 (можт и 11.1 - не пробовал) вместо
PROGRAM = hsodbc
нужно писать
PROGRAM = dg4odbc

hellhound 26 ноября 2008, 14:12 Оценка: N/A
Люди подскажите, я неопытный. Для чего комит при селекте?

Commit -- закончить транзакцию перед закрытием DBLINKa

alter session close database link EMPXLS;--закрываем линк
commit;--ИМХО ещераз коммит чтобы отсоединить линк и использовать в других сессиях.

Протестил на примере подключения к *.DBF
Пока линк не отцепишь - не дает удалить dbf файл.

На основе селекта можно создать представления которыми можно пользоваться в других приложениях без изврата с dblinkami

Читайте также: