Вопрос по DBLink для 2 баз данных oracle - PullRequest
0 голосов
/ 28 марта 2019

У меня есть сервер с 2 базами данных: dbtest и checkdb. Мне нужно, чтобы пользователь user_b из dbtest мог сделать выбор в таблице другой базы данных. Как мне установить dblink?

Ответы [ 2 ]

0 голосов
/ 28 марта 2019

Подключившись как пользователь к одной из этих баз данных, создайте ссылку на базу данных на другую базу данных , следуя синтаксису (https://docs.oracle.com/en/database/oracle/oracle-database/18/sqlrf/CREATE-DATABASE-LINK.html#GUID-D966642A-B19E-449D-9968-1121AF06D793). Он, кажется, не менялся целую вечность.

Например:

SQL> create database link dbl_scott     -- database link name
  2    connect to scott                 -- you're connecting to this user (scott) ...
  3    identified by tiger              -- ... which is identified by this password (tiger)
  4    using 'db11g:1521/orcl';         -- using clause has a database server (db11g):port (1521)/service name (orcl)

Database link created.

SQL> -- Testing; it has to return a row
SQL> select * From dual@dbl_scott; 

D
-
X

SQL>

Предложение USING может быть сокращено на путем размещения псевдонима целевой базы данных (записанного в файле TNSNAMES.ORA на вашем сервере базы данных). Если у вас нет доступа к этому файлу (так как вы не администратор БД), то вышеупомянутая опция работает нормально.

Обратите внимание, что - даже если вы используете недопустимые настройки - ссылка на базу данных может быть создана, но она не будет работать. Например:

SQL> drop database link dbl_scott;

Database link dropped.

SQL> create database link dbl_scott
  2    connect to xyzalksfjlaskfj
  3    identified by abc
  4    using '9809803242';

Database link created.

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


SQL>

Поэтому будьте осторожны.

0 голосов
/ 28 марта 2019

В верхней части вашего скрипта запустите

alter session set global_names=false;

, а затем, когда вам понадобится извлечь данные из checkdb, вы добавите ссылку в качестве суффикса.не знаю точно, как определяются ваши базы данных, но что-то вроде

user_b на dbtest

select * from table_name@dblink 
#might be that dblink is not the exact name. 

надеюсь, что это поможет.

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