Центр Диагностики & База Системных Ошибок

Решения для Windows Server, Active Directory, 1С, СУБД, Linux, Cisco, MikroTik и IP-телефонии.

⚠️ Важная информация Все материалы, инструкции, команды и скрипты предоставлены исключительно в ознакомительных целях. Их применение может повлиять на работу операционной системы, баз данных и сетевого оборудования. Перед выполнением действий обязательно создайте резервную копию. При отсутствии необходимой квалификации обратитесь к ИТ-специалистам.

Ошибка ORA-02019: connection description for remote database not found

Обновлено: 26.08.2026  ·  Официальная база знаний
  • Запросы к удаленной БД через связку (SELECT * FROM table@remote_link) падают с ошибкой ORA-02019: connection description for remote database not found.
  • В распределенных транзакциях или процедурах интеграции не удается разрешить имя DBLINK.
  • В представлении DBA_DB_LINKS отсутствует указанный линк или он недоступен для текущей сессии.

1. Проверка существования DBLINK

SELECT owner, db_link, username, host, created 
FROM dba_db_links 
WHERE db_link LIKE '%REMOTE%';

2. Создание или пересоздание DBLINK

Создайте публичный (PUBLIC) или частный Database Link с явным указанием TNS-дескриптора или строки подключения:

CREATE PUBLIC DATABASE LINK remote_pg_link 
CONNECT TO remote_user IDENTIFIED BY "Password123"
USING '(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.10.50)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=ORCLPDB)))';

3. Проверка разрешения TNS-имени на сервере СУБД

Убедитесь, что в файле $ORACLE_HOME/network/admin/tnsnames.ora на сервере Oracle (где создается линк) присутствует нужная запись TNS, и протестируйте ее через tnsping:

tnsping remote_tns_alias

4. Тестирование связи через SQL

SELECT * FROM dual@remote_pg_link;
Практический опыт инженера: Всегда указывайте полный сетевой дескриптор (EZConnect или TNS string) в предложении USING вместо алиаса tnsnames.ora. Это предотвратит сбои линков при переносе базы или изменении сетевых файлов.

Частые вопросы (FAQ)

Почему приватный DBLINK вызывает ORA-02019 у другого пользователя?

Приватный DBLINK доступен только создавшему его пользователю. Другие схемы должны использовать PUBLIC DATABASE LINK либо иметь собственный частный линк с таким же именем.

Где должен быть прописан tnsnames.ora для DBLINK — на клиенте или сервере?

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

Как удалить неработающий DBLink?

Для частного: DROP DATABASE LINK link_name; Для публичного: DROP PUBLIC DATABASE LINK link_name;

Влияет ли параметр GLOBAL_NAMES на поиск DBLINK?

Да, если GLOBAL_NAMES=TRUE, имя DBLINK обязано строго совпадать с глобальным именем удаленной базы данных (GLOBAL_NAME).