|
|
|
Как создать Database Link
|
|||
|---|---|---|---|
|
#18+
Часа 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. Сам когдато с большими потугами создавал такие линки, а вот щас чегото вообще не получается. Посему за большого ламера не считайте. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2002, 19:53 |
|
||
|
Как создать Database Link
|
|||
|---|---|---|---|
|
#18+
CREATE DATABASE LINK... или через Enterprise Manager. В чем проблема? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2002, 09:56 |
|
||
|
Как создать Database Link
|
|||
|---|---|---|---|
|
#18+
CREATE DATABASE LINK dblink CONNECT TO ... IDENTIFIED BY ... USING 'connect_string'; Синтаксис комманды я знаю. Мне нужно понять, чем в моем случае является dblink, а чем connect_string. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2002, 11:03 |
|
||
|
Как создать Database Link
|
|||
|---|---|---|---|
|
#18+
В глоссарии 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 просто с ним удобнее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2002, 11:18 |
|
||
|
Как создать Database Link
|
|||
|---|---|---|---|
|
#18+
dblink - это просто имя линка. От балды. Просто потом в запросе ты будешь его задавать в виде SELECT * FROM TABLE table_name@dblink. А connect_string - это имя сервиса из tnsnames.ora. Ты его всегда задаешь, когда коннектишься к базе по сети, типа CONNECT scott/tiger@REMOTELINK.MYDOMEN.RU ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2002, 13:17 |
|
||
|
Как создать Database Link
|
|||
|---|---|---|---|
|
#18+
В случае использования глобальных имён, имя линка к БД должно совпадать с global_name этой БД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2002, 13:52 |
|
||
|
Как создать Database Link
|
|||
|---|---|---|---|
|
#18+
Настоящий тезка, то есть Денис Попов, спасибо за информацию. Итак, насчет терминологии: Смотрел глассарий, все понатно и такие выводы: 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 проверена и дает специфические результаты: линк создается на ура, но при коннекте по нему оракл (локальный) впадает в кому, в ступор. Никакой коннект более к нему (ораклу) не проходит. Помогает толькол рестарт базы с помощью окна сервисов. И для себя я делаю вывод - назначить таки домен для удаленной базы, чтобы исключить это двоезначие. Тогда думаю должно все заработать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2002, 14:56 |
|
||
|
Как создать Database Link
|
|||
|---|---|---|---|
|
#18+
ORA-02082 говорит о том, что нельзя создавать линк с именем, совпадающим с global_name той БД, где ты его создаешь. Ради смеха, попробуй удалить все линки с именем, совпадающим с глобальным именем базы (у тебя это sname), и скажи select * from obj@sname; Оно будет работать, хотя линка с таким именем нет. Имя database link не должно быть одинаково с global_name той БД, на которой ты его создаешь, иначе ORA-02082. Но оно может не совпадать с global_name БД, куда ты его указываешь. Последнее я могу доказать пока только личным опытом, но пороюсь в документации, м.б. найду ссылку на это. Мы создавали репликацию между серверами и столкнулись с тем, что для updatable snapshots требуется создавать линк с именем, совпадающим с global_name удаленной базы. Надо поискать в доке, так ли это или нет, но для твоего случая с 2-мя БД с одинаковыми global_name это может составить проблему. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2002, 15:32 |
|
||
|
Как создать Database Link
|
|||
|---|---|---|---|
|
#18+
Есть параметр инициализации GLOBAL_NAMES. Если его установить в false, то совпадение имен линка и базы проверяться не будет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2002, 15:57 |
|
||
|
Как создать Database Link
|
|||
|---|---|---|---|
|
#18+
Я всегда делал так, работало как часы 1. не использовал GLOBAL_NAMES GLOBAL_NAMES = false 2. select * from global_name должно выдавать только SID (SERVICE_NAME ) без доменов (если что, в ручною можно подправить) 3. SID локальной и удаленной БД должны быть разными (в доке вроде так и написано) обращаешся например select * from scott.emp@central ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2002, 16:10 |
|
||
|
Как создать Database Link
|
|||
|---|---|---|---|
|
#18+
Так в том-то и прикол: у нас global_names=false. Если создаешь snapshot, то ему безразлично имя линка. Но когда пытаешься создать mview group, к примеру: Код: plaintext 1. 2. То требуется, чтобы имя линка к мастер-сайту и global_name мастер-сайта быти одинаковы, в данном случае "sqlmast". Теоретически можно у снапшота указать один линк, а зарегестрировать его в группе с другим линком. Нашел упоминание о том, что на снапшот-сайте снапшот должен лежать в схеме с тем же именем, что и реплицируемая таблица на мастер-сайте, про имена линков не нашел, это так, из опыта. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2002, 16:29 |
|
||
|
Как создать Database Link
|
|||
|---|---|---|---|
|
#18+
Люди у меня похожая проблема! В первой бд датабазелинки нормальные скажем такие йй цц уу кк а после импорта в другую даже не знаю что делать йй.домен.тачки.сервера и так все остальные... в SQLNET.ORA я заремил # NAMES.DEFAULT_DOMAIN = домен.тачки.сервера создаю линк и опять всплывает :((( йй.домен.тачки.сервера Подскажите что делать и как исправить уже существующие линки и почемууу? они такие создаются.... 9i вынь2К Спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2002, 07:37 |
|
||
|
Как создать Database Link
|
|||
|---|---|---|---|
|
#18+
А ты попробуй ALTER DATABASE RENAME GLOBAL_NAME TO new_name. Правда, в доке для 9i написано, что надо указывать домен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2002, 11:11 |
|
||
|
Как создать Database Link
|
|||
|---|---|---|---|
|
#18+
Так вот с этим то и гемор с доменом :(( Одна БД находиться на серваке который в домене А а вторая на тачке которая в Б! Таакая путаница... Мне надо что Б (9ка) видела А(8.1.х) что и где прописать! :((( или модифицироваьт... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2002, 11:32 |
|
||
|
Как создать Database Link
|
|||
|---|---|---|---|
|
#18+
ИИИИ дело в том что именно база А.домен1 которая должна обратиться к базе Б.домен2 сама подставляет Б.домен1 - а это незя... уж лучше вообще от этого избавиться если она берет строку подключения из ТНС то в ней без домена все прописано! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2002, 11:39 |
|
||
|
Как создать Database Link
|
|||
|---|---|---|---|
|
#18+
Я же говорю подправить вручную В init.ora В global_name (или таблице параметров на котторую ссылается этот обзор ) и все будет ОК ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2002, 14:23 |
|
||
|
Как создать Database Link
|
|||
|---|---|---|---|
|
#18+
У меня тоже с DB LINK не получется, создаю, все нормально. Хочу воспользоваться select * from mytable@mydblink; валит ошибку ORA-12154: TNS:невозможно разрешить имя службы В чем дело? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2002, 11:45 |
|
||
|
Как создать Database Link
|
|||
|---|---|---|---|
|
#18+
А у тебя на сервере в tnsnames.ora прописан service_name, который ты указывал при создании линка mydblink? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2002, 09:58 |
|
||
|
Как создать Database Link
|
|||
|---|---|---|---|
|
#18+
То есть его нужно прописать также, как и на моей машине(клиент)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2002, 10:03 |
|
||
|
Как создать Database Link
|
|||
|---|---|---|---|
|
#18+
Ну а как же. Ведь коннект к другой базе идет с сервера. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2002, 10:29 |
|
||
|
Как создать Database Link
|
|||
|---|---|---|---|
|
#18+
Понял, сейча посмотрим =) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2002, 10:53 |
|
||
|
Как создать Database Link
|
|||
|---|---|---|---|
|
#18+
Получилась странная вещь. Создаю линк 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 моей базы И все, данных нет :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2002, 11:16 |
|
||
|
Как создать Database Link
|
|||
|---|---|---|---|
|
#18+
Смотри выше... :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2002, 11:39 |
|
||
|
Как создать Database Link
|
|||
|---|---|---|---|
|
#18+
Хорошо, а если доменов нет и при создании линка не пишется никакой домен, то как избавиться от имени домена в созданном линке: 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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2003, 16:13 |
|
||
|
|

start [/forum/topic.php?fid=52&fpage=2801&tid=1991445]: |
0ms |
get settings: |
9ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
52ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
78ms |
get tp. blocked users: |
2ms |
| others: | 204ms |
| total: | 389ms |

| 0 / 0 |
