|
|
|
новичок
      
участник
Last Login: 02.02.2004 11:37
Сообщ.: 3,
Visits: 34
|
|
есть два сервера Oracle что нужно чтобы настроить Database Link
между ними. надо создавать запросы из таблиц, находящиеся на разных серверах?
|
|
|
|
|
новичок
      
участник
Last Login: 12.09.2005 14:27
Сообщ.: 2,
Visits: 23
|
|
Пусть есть 2 БД Oracle:
- SRV.WORLD (SID = SRV) на сервере server_srv,
- CLI.WORLD (SID = CLI) на сервере server_cli.
Причем, на CLI будут выполняться запросы с обращением к локальным и к удаленным (расположенным на SRV) таблицам.
На сервере server_srv настроен и запущен tnslistener, обеспечивающий доступ к БД SRV.
1. Определяем на сервере с БД CLI параметры доступа к БД SRV. Для этого регистрируем сервис через Net Configuration Assistant или добавляем в файл tnsnames.ora запись вида
SRV.WORLD =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = server_srv)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = SRV.WORLD)
)
)
Файл tnsnames.ora расположен в каталоге "etwork\admin", например, C:\oracle\ora92etwork\admin
Net Configuration Assistant позволяет не только зарегистрировать, но и проверить зарегистрированный сервис.
2. После регистрации соединяемся с БД CLI от имени пользователя, из под которого будут выполняться распределенные запросы.
sqlplus db_user/db_pwd@cli.world
3. Создаем database link командой
CREATE DATABASE LINK SRV.WORLD
CONNECT TO remote_user AUTHENTICATED BY remote_user_pwd
USING ''SRV.WORLD'';
здесь
remote_user - имя пользователя, от имени которого запрос будет обращаться к удаленным таблицам,
remote_user_pwd - пароль для этого пользователя.
Проверяем, что связь работает. Запрос
select user, global_name from global_name@SRV.WORLD;
выполненный на БД CLI, должен вернуть результат
USER GLOBAL_NAME
---------------------------------
REMOTE_USER SRV.WORLD
Это один из способов создать database link, где имя линка совпадает с глобальным именем удаленной БД. Можно настроить базы так, что эти имена не совпадали.
Но, чтобы не загружать сообщение, такие тонкости здесь опущены.
|
|
|
|