Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Как создать Database Link / 25 сообщений из 26, страница 1 из 2
05.12.2002, 19:53
    #32076411
none
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как создать Database Link
Часа 2 уже тра...сь, все никак да никак. Помогите!
Такая информация:
Есть 2 компьютера, один локальный, девелоперский, находится в домене MYDOMEN. Global Name локальной базы называется sbase.
Второй удаленный, рабочий. Ни в каком домене не состоит. Global Name удаленной базы также называется sbase.
На локальной машине в tnsnames.ora есть следующее (это собственно весь файл):

LOCALLINK.MYDOMEN.RU =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = sbase)
)
)

REMOTELINK.MYDOMEN.RU =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 217.xxx.xxx.xxx)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = sbase)
)
)


SQL> disc;
Disconnected from Oracle8i Enterprise Edition Release 8.1.7.0.0 - Production
JServer Release 8.1.7.0.0 - Production
SQL>
SQL> connect .../...@REMOTELINK.MYDOMEN.RU --- коннекчусь к удаленному компьютеру
Connected.
SQL>
SQL> select * from global_name;

GLOBAL_NAME
--------------------------------------------------------------------------------
SBASE

SQL> disc;
Disconnected from Oracle8i Enterprise Edition Release 8.1.7.0.0 - Production
JServer Release 8.1.7.0.0 - Production
SQL>
SQL> connect .../...@LOCALLINK.MYDOMEN.RU --- коннекчусь к локальному компьютеру
Connected.
SQL>
SQL> select * from global_name;

GLOBAL_NAME
--------------------------------------------------------------------------------
SBASE.MYDOMEN.RU

В общем, все верно.

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

На обоих компьютерах Win2000AdvServer+Oracle8.1.7

P.S. Вот что мне не понравилось, так это путаница с терминологией в документации. Вот например:
В Oracle8i SQL Reference/CREATE DATABASE LINK написано:
USING 'connect string' - specifies the service name of a remote database. For information on specifying remote databases, see Net8 Administrator's Guide.
Насколько я понимаю service name of a remote database - это в моем случае SBASE (Написано же в tnsnames.ora - SERVICE_NAME = sbase).
В другой же части Oracle8i SQL Reference/Basic Elements of Oracle SQL/Referring to Objects in Remote Databases/Database Connect String написано:
The database connect string is the specification used by Net8 to access the remote database. Насколько я понимаю - это REMOTELINK.MYDOMEN.RU.
Это так? Или это путаница в моей голове, а не в доках?

P.S. Все имена вымышлены, но вроде я нигде ошибок не допустил.

P.S. Сам когдато с большими потугами создавал такие линки, а вот щас чегото вообще не получается. Посему за большого ламера не считайте.
...
Рейтинг: 0 / 0
06.12.2002, 09:56
    #32076532
noname_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как создать Database Link
CREATE DATABASE LINK... или через Enterprise Manager. В чем проблема?
...
Рейтинг: 0 / 0
06.12.2002, 11:03
    #32076582
none
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как создать Database Link
CREATE DATABASE LINK dblink
CONNECT TO ... IDENTIFIED BY ...
USING 'connect_string';

Синтаксис комманды я знаю. Мне нужно понять, чем в моем случае является dblink, а чем connect_string.
...
Рейтинг: 0 / 0
06.12.2002, 11:18
    #32076597
Denis Popov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как создать Database Link
В глоссарии Oracle9i Net Services Administrator's Guide под "net service name" подразумевается именно "A simple name for a service that resolves to a connect descriptor". Тут же дается объяснение того, что такое connect descriptor.

http://download-west.oracle.com/docs/cd/A97630_01/network.920/a96580/glossary.htm#998114

В твоем случае это REMOTELINK.MYDOMEN.RU, или просто REMOTELINK, по-моему это может зависеть от параметра NAMES.DEFAULT_DOMAIN в sqlnet.ora.

Строго говоря, наличие net service name для создания линка необязательно, можно обойтись и без него, зная только connect descriptor:

http://searchdatabase.techtarget.com/tip/1,289483,sid13_gci845230,00.html

просто с ним удобнее.
...
Рейтинг: 0 / 0
06.12.2002, 13:17
    #32076677
noname_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как создать Database Link
dblink - это просто имя линка. От балды. Просто потом в запросе ты будешь его задавать в виде SELECT * FROM TABLE table_name@dblink. А connect_string - это имя сервиса из tnsnames.ora. Ты его всегда задаешь, когда коннектишься к базе по сети, типа
CONNECT scott/tiger@REMOTELINK.MYDOMEN.RU
...
Рейтинг: 0 / 0
06.12.2002, 13:52
    #32076721
softy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как создать Database Link
В случае использования глобальных имён, имя линка к БД должно совпадать с global_name этой БД.
...
Рейтинг: 0 / 0
06.12.2002, 14:06
    #32076728
noname_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как создать Database Link
Точно!
...
Рейтинг: 0 / 0
06.12.2002, 14:56
    #32076762
none
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как создать Database Link
Настоящий тезка, то есть Денис Попов, спасибо за информацию.

Итак, насчет терминологии:
Смотрел глассарий, все понатно и такие выводы:

connect descriptor - это в моем случае:
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 217.xxx.xxx.xxx)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = sbase)
)
)

net service name - это, то что указывает на connect descriptor в файле tnsnames.ora. То есть в моем случае: REMOTELINK.MYDOMEN.RU

service name - абсолютно НЕ одно и тоже, что net service name. По докуметации это: A logical representation of a database, which is the way a database is presented to clients. В частности это одно и тоже, что и global database name.

Например, если бы я писал докуметацию и раздел касался бы только Net-а (в частности как database link), у меня был бы соблазн опускать net перед net service name. Получалось бы service name, что в данном контексте корректно, но НЕ в пределах всей документации.
Это я уже приводил:
USING 'connect string' - specifies the service name of a remote database.
Что в данном случае имеется ввиду под service name? net service name или (true :-) ) service name. Думаю именно net service name.

Ладно, это проехали. Теперь реплики в адрес полу-ник-тезки (Noname_):
dblink - это просто имя линка. От балды.

Это не так. Ели так, то дакажите. Во-первых, почему тогда возникает ошибка:

ORA-02085 database link string connects to string
Cause: The database link attempted to connect to a database with a different name. The name of the database link must be the same name as the name of the database.
Action: Create a database link with the same name as the database to which it connects.
Потому, что между названием database link-а и между service name удаленной базы должно быть соответсвие.

Если я напишу просто SBASE то будет ошибка:
SQL> create database link sbase
2 connect to .... identified by ...
3 using
4 'REMOTELINK.MYDOMEN.RU'
5 ;
connect to ... identified by ....
*
ERROR at line 2:
ORA-02082: a loopback database link must have a connection qualifier

И это первое, второе, есть раздел Oracle8i SQL Reference/Basic Elements of Oracle SQL/Referring to Objects in Remote Databases/Database Connect String в котором написано как по правилам назначать имена db-линкам. Формат такой:
database.domain@connect_descriptor.
domain и connect_descriptor можно опускать. А вот интересно, если connect_descriptor это тот самый connect descriptor о котором я упоминал выше, то тогда как он там прописывается? В одну строку, в кавычках, без? У меня не вышло никак.

Третье и последнне, реплика Денису Попову: информация по вышему линку http://searchdatabase.techtarget.com/tip/1,289483,sid13_gci845230,00.html проверена и дает специфические результаты:
линк создается на ура, но при коннекте по нему оракл (локальный) впадает в кому, в ступор. Никакой коннект более к нему (ораклу) не проходит. Помогает толькол рестарт базы с помощью окна сервисов.

И для себя я делаю вывод - назначить таки домен для удаленной базы, чтобы исключить это двоезначие. Тогда думаю должно все заработать.
...
Рейтинг: 0 / 0
06.12.2002, 15:32
    #32076795
Denis Popov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как создать Database Link
ORA-02082 говорит о том, что нельзя создавать линк с именем, совпадающим с global_name той БД, где ты его создаешь. Ради смеха, попробуй удалить все линки с именем, совпадающим с глобальным именем базы (у тебя это sname), и скажи select * from obj@sname; Оно будет работать, хотя линка с таким именем нет.

Имя database link не должно быть одинаково с global_name той БД, на которой ты его создаешь, иначе ORA-02082. Но оно может не совпадать с global_name БД, куда ты его указываешь. Последнее я могу доказать пока только личным опытом, но пороюсь в документации, м.б. найду ссылку на это.

Мы создавали репликацию между серверами и столкнулись с тем, что для updatable snapshots требуется создавать линк с именем, совпадающим с global_name удаленной базы. Надо поискать в доке, так ли это или нет, но для твоего случая с 2-мя БД с одинаковыми global_name это может составить проблему.
...
Рейтинг: 0 / 0
06.12.2002, 15:57
    #32076811
noname_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как создать Database Link
Есть параметр инициализации GLOBAL_NAMES. Если его установить в false, то совпадение имен линка и базы проверяться не будет.
...
Рейтинг: 0 / 0
06.12.2002, 16:10
    #32076823
DimaR
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как создать Database Link
Я всегда делал так, работало как часы

1. не использовал GLOBAL_NAMES
GLOBAL_NAMES = false
2. select * from global_name должно выдавать только SID (SERVICE_NAME ) без доменов (если что, в ручною можно подправить)
3. SID локальной и удаленной БД должны быть разными (в доке вроде так и написано)
обращаешся например
select * from scott.emp@central
...
Рейтинг: 0 / 0
06.12.2002, 16:29
    #32076834
Denis Popov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как создать Database Link
Так в том-то и прикол: у нас global_names=false. Если создаешь snapshot, то ему безразлично имя линка. Но когда пытаешься создать mview group, к примеру:

Код: plaintext
1.
2.
 
exec dbms_repcat.create_mview_repgroup (gname=>'cards', master=>'sqlmast', propagation_mode=>'asynchronous');


То требуется, чтобы имя линка к мастер-сайту и global_name мастер-сайта быти одинаковы, в данном случае "sqlmast". Теоретически можно у снапшота указать один линк, а зарегестрировать его в группе с другим линком.

Нашел упоминание о том, что на снапшот-сайте снапшот должен лежать в схеме с тем же именем, что и реплицируемая таблица на мастер-сайте, про имена линков не нашел, это так, из опыта.
...
Рейтинг: 0 / 0
07.12.2002, 07:37
    #32076946
Des
Des
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как создать Database Link
Люди у меня похожая проблема!
В первой бд датабазелинки нормальные
скажем такие
йй
цц
уу
кк
а после импорта в другую даже не знаю что делать
йй.домен.тачки.сервера
и так все остальные...
в SQLNET.ORA я заремил
# NAMES.DEFAULT_DOMAIN = домен.тачки.сервера
создаю линк и опять всплывает :((( йй.домен.тачки.сервера
Подскажите что делать и как исправить уже существующие линки и почемууу? они такие создаются....
9i вынь2К
Спасибо
...
Рейтинг: 0 / 0
07.12.2002, 11:11
    #32076957
noname_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как создать Database Link
А ты попробуй ALTER DATABASE RENAME GLOBAL_NAME TO new_name. Правда, в доке для 9i написано, что надо указывать домен.
...
Рейтинг: 0 / 0
07.12.2002, 11:32
    #32076961
Des
Des
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как создать Database Link
Так вот с этим то и гемор с доменом :((
Одна БД находиться на серваке который в домене А
а вторая на тачке которая в Б!
Таакая путаница...
Мне надо что Б (9ка) видела А(8.1.х) что и где прописать! :((( или модифицироваьт...
...
Рейтинг: 0 / 0
07.12.2002, 11:39
    #32076965
Des
Des
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как создать Database Link
ИИИИ дело в том что именно база А.домен1 которая должна обратиться к базе Б.домен2
сама подставляет Б.домен1 - а это незя... уж лучше вообще от этого избавиться если она берет строку подключения из ТНС то в ней без домена все прописано!
...
Рейтинг: 0 / 0
07.12.2002, 14:23
    #32077000
DimaR
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как создать Database Link
Я же говорю подправить вручную
В init.ora
В global_name (или таблице параметров на котторую ссылается этот обзор )
и все будет ОК
...
Рейтинг: 0 / 0
08.12.2002, 11:45
    #32077071
Mergen
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как создать Database Link
У меня тоже с DB LINK не получется, создаю, все нормально. Хочу воспользоваться
select * from mytable@mydblink;
валит ошибку
ORA-12154: TNS:невозможно разрешить имя службы

В чем дело?
...
Рейтинг: 0 / 0
09.12.2002, 09:58
    #32077181
noname_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как создать Database Link
А у тебя на сервере в tnsnames.ora прописан service_name, который ты указывал при создании линка mydblink?
...
Рейтинг: 0 / 0
09.12.2002, 10:03
    #32077187
Mergen
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как создать Database Link
То есть его нужно прописать также, как и на моей машине(клиент)?
...
Рейтинг: 0 / 0
09.12.2002, 10:29
    #32077217
noname_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как создать Database Link
Ну а как же. Ведь коннект к другой базе идет с сервера.
...
Рейтинг: 0 / 0
09.12.2002, 10:53
    #32077226
Mergen
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как создать Database Link
Понял, сейча посмотрим =)
...
Рейтинг: 0 / 0
09.12.2002, 11:16
    #32077245
Mergen
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как создать Database Link
Получилась странная вещь. Создаю линк

CREATE DATABASE LINK test
CONNECT TO username IDENTIFIED BY password
USING 'полное имя сервиса на сервере';

Сервис работает, делал select.

Дальше строю запрос
SQL> select isn from mytable@test;
select isn from mytable @test
*
Ошибка в строке 1:
ORA-02085: Канал связи БД TEST.US.ORACLE.COM соединен с SMTDB

SMTDB –SID моей базы

И все, данных нет :(
...
Рейтинг: 0 / 0
09.12.2002, 11:39
    #32077260
noname_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как создать Database Link
Смотри выше... :)
...
Рейтинг: 0 / 0
17.01.2003, 16:13
    #32092635
Sh_ura
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как создать Database Link
Хорошо, а если доменов нет и при создании линка не пишется никакой домен, то как избавиться от имени домена в созданном линке:

CREATE DATABASE LINK Name_link
CONNECT TO user_name IDENTIFIED BY passw
USING 'Name_link';

Name_link - TNS name, прописаное в tnsnames.ora и совпадает с service_name сервера к которому создается линк
user_name и passw заданы корректно
В файле sqlnet.ora параметра описывающего по умолчанию домен нет, значит должен быть NULL
Но создается линк с именем
Name_link.US.ORACLE.COM

Как сделать так, чтобы осталось только
Name_link
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Как создать Database Link / 25 сообщений из 26, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]