Relink oracle что это

Обновлено: 07.07.2024

Database Link - это объект схемы данных. Он позволяет получить доступ из одной базы данных к объектам другой базы данных. Доступ к базам данный не относящимся к системам Oracle Database осуществляется через Oracle Heterogeneous Services.

Для обращения к таблица или представления других БД через SQL запросы необходимо к их имени добавить @dblink . Поддерживаются следующие операторы для объектов других БД: SELECT , INSERT , UPDATE , DELETE и LOCK TABLE .

Необходимо иметь системные привилегии на выполнение операторов в Oracle:

  • CREATE DATABASE LINK .
  • CREATE PUBLIC DATABASE LINK . Для создание общедоступных ссылок.

В удаленной базе необходимо иметь разрешение выполнение:

Syntax

SHARED

Specify SHARED to use a single network connection to create a public database link that can be shared among multiple users. При использовании SHARED необходимо указывать параметр dblink_authentication .

PUBLIC

Заявление указывает что нужно создать ссылку доступной для всех пользователей базы данных. Если заявление не указано то доступ к ссылке будет иметь только создавший ее пользователь.

dblink

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

Используйте только ASCII символы для формирования dblink .

GLOBAL_NAMES равное TRUE , требует равенства имен между объектом DATABASE LINK и подключаемой базой данных. Значение FALSE равенства не требует.

Количество открытых соединений dblink устанавливается параметрами инициализации OPEN_LINKS и OPEN_LINKS_PER_INSTANCE .

CONNECT TO

Предложение позволяет подключиться к удаленной базе данных. Предложения CONNECT TO и dblink_authentication можно использовать только при создании общедоступного dblink, использую ключевое слово SHARED .

CURRENT_USER

Пользователь от имени которого создается database link . Этот пользователь должен должен быть глобальным с действующей учетной записью в удаленной базе.

Если использовать ссылку не из хранимого объекта oracle, непосредственно, то текущий пользователь будет назначен в качестве CURRENT_USER .

В случае вызова из хранимого объекта (процедуры, триггера) в качестве CURRENT_USER , будет указан создатель этого объекта.

Однако, если хранимый объект это invoker-rights функция, процедура или пакет, в качестве CURRENT_USER будет выступать вызывающий ее пользователь, а не создатель этого объекта.

user IDENTIFIED BY password

Имя пользователя и пароль для подключения к удаленной базе данных. Указание этого параметра определяет фиксированного пользователя для подключения ( fixed user database link ). Если параметр опущен будет использоваться имя и пароль пользователя который обращается к dblink, подключенный пользователь ( connected user database link ).

dblink_authentication

Укажите имя пользователя и пароль на целевом экземпляре. Это заявление проверяет подлинность пользователя на удаленном сервер и требуется для обеспечения безопасности. Указанное имя пользователя и пароль должен быть действительными на удаленном экземпляре. Имя пользователя и пароль используются только для проверки подлинности. Никакие другие операции не выполняются от имени этого пользователя.

USING 'connect string'

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

Examples

Примеры используют две базы данных на одном домене с именами: local и remote .

  • Создание ссылки на базу данных на одном домене.
  • Обновление данных на использую ссылку @remote, предполагается, что пользователь вызывающий обновление имеет соответствующие привилегии в удаленного базе данных.

UPDATE employees@remote
SET salary = salary * 1.1
WHERE last_name = 'Baer' ;

Создаем database link связи в базе данных Oracle

Связь базы данных Oracle (database link) — это одностороннее соединение локальной базы данных с удаленной базой данных. Связь всегда односторонняя. Пользователи удаленной базы не могут применять ее для подключения к локальной базе — вместо этого они должны создать отдельную связь базы данных.

Create database link - создание связей на примерах

Создавать можно приватные и общедоступные связи баз данных. Далее мы рассмотрим соответствующие примеры.

Создание приватной связи базы данных

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

После создания связи пользователь SYSTEM может выполнять запросы к таблице hr.employees в удаленной базе данных.

На заметку! Для создания связи базы данных пользователь должен иметь привилегию CREATE PRIVATE DATABASE LINK или CREATE PUBLIC DATABASE LINK в локальной базе данных

Обратите внимание, что в предыдущем операторе имя связи удаленной базы данных — MONITOR — совпадает с TNS-псевдонимом удаленной базы (псевдонимом Oracle Net Service), но вообще может быть любым, по вашему усмотрению. Конструкция CONNECT TO. IDENTIFIED BY означает, что пользователь этой связи базы данных применяет указанное имя и пароль для входа на удаленную базу данных. Конструкция USING 'monitor' просто специфицирует TNS-псевдоним удаленной базы данных.

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

Create database link - создаем PUBLIC и PRIVATE связи в базе данных Oracle

Создание общедоступной связи базы данных

Общедоступная связь базы данных позволяет любому пользователю или любому модулю программы PL/SQL обращаться к объектам удаленной базы данных. Оператор создания такой связи очень похож на оператор создания приватной связи. К оператору CREATE DATABASE LINK просто добавляется ключевое слово PUBLIC :

Совет. Если нескольким пользователям требуется доступ к удаленной базе данных Oracle из локальной, можно создать общедоступную связь. В противном случае создавайте приватную связь базы данных, которая позволяет обращаться к объектам удаленной базы данных только владельцу.

Как только общедоступная связь MONITOR создана, любой пользователь может с ее помощью входить в удаленную базу. В следующем примере пользователь tester применяет общедоступную связь для выполнения запросов к удаленной базе MONITOR .

Использование Database Control для создания связей баз данных

С помощью OEM Database Control очень легко создать связь базы данных. Для этого на домашней странице Database Control нужно щелкнуть на вкладке Administration (Администрирование), а затем на ссылке Database Links (Связи базы данных) в группе Schema (Схема). На этой странице можно создать связь базы данных, ответив на несколько простых вопросов.


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

1- Что такое Database Link?

Database Link это объект в SCHEMA в Oracle, похож на мост для соединения с другой базой данных, помогающий вам иметь доступ к объектам другой базы данных.


Вы так же можете создать Database Link чтобы соединить Oracle к другому виду базы данных, как например MySQL, SQL Server, . в данном случае вам нужно использовать сервис Oracle Heterogeneous (Oracle Heterogeneous Service)

2- Создать Database Link

Здесь я иллюстрирую соединение 2 систем баз данных Oracle находящихся на 2 разных компьютерах.

Для начала, вам нужно понять о файле tnsnames.ora в Oracle.

tnsname.ora это файл описывающие базу данных Oracle, вы можете найти этот файл в папке установки Oracle.

  • <ORACLE_HOME>\product\12.1.0\dbhome_1\NETWORK\ADMIN


Содержание файла tnsname.ora похож на изображение ниже.


Ниже является изображение иллюстрирующее две системы баз данных Oracle находящиеся на 2 разных компьютерах.


Создать Database Link с названием mydblink чтобы соединить из PROD1 к PROD2.

На PROD1 вы можете тестировать Database Link командой:


Есть некоторые VIEW помогающие вам сделать запрос списка Database Link имеющиеся в базе данных:


Если информация описания Database2 объявлена в файле tnsname.ora в Database1, вы можете создать Database Link из Database1 в Database2 с более кратким синтаксисом.


3- Доступ к объектам через Database Link

После того как у вас есть Database Link, вы можете получить доступ к объектам в Database2 через Database Link.

4- Oracle Synonym

Synonym можно перевести как "Единообразный объект" для определенного объекта. Если вы не хотите добавлять @dblinkName при доступе в объект через Database link, вы можете создать Synonym для того объекта.


Примечание: Вы так же можете создать Synonym для функций, процедур.

Файл параметров инициализации имеющий имя init.ora, собственно является основным средством настройки БД. Он представляет из себя обычный ASCII файл, содержащий ряд параметров, которые БД, использует при старте и последующем разворачивании в ОС. Правда здесь есть один нюанс, сама БД ищет, файл инициализации с именем initSID.ora. Где SID, напомню, если кто забыл, это служебное имя вашего экземпляра БД. В нашем случае, если вы инсталлировали БД, как я вам предлагал, это будет PROBA (например, моя экспериментальная БД имеет в качестве SID значение HOME. Не самое удачное решение, хотя она у меня уже скоро развалится, и я ее переделаю, а за одно выберу другое имя!). Так вот ваш файл инициализации БД будет находиться в каталоге $ORACLE_HOME\DATABASE, $ORACLE_HOME - это в вашем случае каталог С:\Oracle\Ora81, значит в совокупности получается C:\Oracle\Ora81\DATABASE. Там должен лежать файл с именем initPROBA.ora, загляните что у него внутри, должно быть что-то вроде:

Вот теперь надеюсь ясно, параметр IFILE просто указывает вашему экземпляру БД, где искать именно свой, а не чей попало, файл инициализации. Найдя этот файл ваша БД, счастливо стартует и начинает свою трудовую деятельность! Параметр IFILE вообще-то и применяется для лучшего структурирования вашего севера Oracle! А вот в каталоге $ORACLE_HOME\dbs, есть еще один файл init.ora, если его внимательно изучить, то можно настроить любую БД Oracle в различных вариантах исполнения. Малая, средняя, крупная БД, ну и т. д. А теперь давайте заглянем внутрь вашего, файла init.ora. Можно увидеть примерно следующее:

В вашем случае его содержимое может быть различным, в зависимости кто, как ставился сам сервер, но основные параметры будут примерно одинаковыми, так что не огорчайтесь, если увидите что-то не похожее на мой пример! :) Все параметры мы прямо сейчас разбирать не станем, остановимся лишь на нескольких. Тем более что, мы еще не раз будем возвращаться к этому файлу.

Это собственно и есть тот самый SID, вашего экземпляра БД. Экземпляров, может быть, много и у каждого свой уникальный SID!

А это имя сервиса вашего экземпляра БД, то есть два предыдущих параметра вместе. Пока все понятно?

Идем дальше! Собственно все параметры инициализации вашего экземпляра БД можно просмотреть через представление v$parameter. Таких "представлений" в самой БД сотни. С их помощью о вашем экземпляре, можно узнать все. Именно их применяют в своей работе люди, гордо носящие имя Администраторы БД! Можно сказать, что один из них, ваш покорный слуга, так как пару сотен "представлений" я уже изучил! Давайте откроем SQLPlus и дадим такой запрос, естественно воспользовавшись знаниями об однотабличных запросах из прошлых шагов:

Читайте также: