Невозможно получить доступ к таблице в oracle после создания dblink - PullRequest
0 голосов
/ 30 января 2020

Я пытаюсь создать ссылку dblink в oracle, но она показывает ошибку.

У меня есть база данных orcl1 , и я хочу подключиться к другой базе данных etlsr, которую я создал следующую базу данных.

Внутри этой базы данных etlsr я создал простое имя таблицы person в sys и вставил данные.

Теперь я снова подключаюсь к orcl1 и хочу подключиться к etlsr базе данных, но это не произошло, как я пытался

select * from person@ETLSR;

Но это выдало мне ошибку как:

                  *
Error at line 1
ORA-02019: connection description for remote database not found

Итак, я думаю, чтобы создать Ссылка на БД, поэтому я попробовал: (Я пытался это из orcl1 )

CREATE DATABASE LINK sales 
    CONNECT TO sys IDENTIFIED BY ashwin
    USING 'SALES';

Я добавил в файл tnsname как:

SALES =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = SALES_PRD)
    )
  ) 

Итак, когда я пытался :

 select * from person@SALES;

Я получил ошибку:

ORA-12154: TNS:could not resolve the connect identifier specified

Почему появляется эта ошибка? Есть ли решение для этого создания dblink? Могу ли я также получить доступ к таблицам другой базы данных без использования dblinks?

Tnsnames.ora

# tnsnames.ora Network Configuration File: E:\oracle\app\AshwinPC\product\11.2.0\dbhome_1\network\admin\tnsnames.ora
# Generated by Oracle configuration tools.

LISTENER_ORCL =
  (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))


ORACLR_CONNECTION_DATA =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
    (CONNECT_DATA =
      (SID = CLRExtProc)
      (PRESENTATION = RO)
    )
  )

TEST=
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST =192.168.1.6)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl)
    )
  )

ORCL =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl)
    )
  )

sq lnet .ora

# sqlnet.ora Network Configuration File: E:\oracle\app\AshwinPC\product\11.2.0\dbhome_1\network\admin\sqlnet.ora
# Generated by Oracle configuration tools.

# This file is actually generated by netca. But if customers choose to 
# install "Software Only", this file wont exist and without the native 
# authentication, they will not be able to connect to the database on NT.

SQLNET.AUTHENTICATION_SERVICES= (NTS)

NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)

1 Ответ

0 голосов
/ 31 января 2020

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

Поэтому создайте переменную окружения TNS_ADMIN , которая будет указывать на какой-то каталог (даже не обязательно должен быть частью директорий \ oracle \, но, например, c:\my_ora_lib). Поместите туда одну копию файла TNSNAMES.ORA и убедитесь, что он содержит ссылки на ВСЕ базы данных, которые вы используете.

Таким образом, вы заставите каждый программный продукт Oracle использовать именно этот файл TNSNAMES.ORA.


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

SQL> create database link dbl_wrong
  2  connect to asfasdfj
  3  identified by asldfkj234l
  4  using 'laskjfoiwe';

Database link created.

SQL> select * from dual@dbl_wrong
  2  /
select * from dual@dbl_wrong
                   *
ERROR at line 1:
ORA-12154: TNS:could not resolve the connect identifier specified


SQL>

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

...