betacode

Руководство Oracle Database Link и Synonym

  1. Что такое Database Link?
  2. Создать Database Link
  3. Доступ к объектам через Database Link
  4. Oracle Synonym
  5. Database Link к другим базам данных не-Oracle

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

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

2. Создать Database Link

Здесь я иллюстрирую соединение 2 систем баз данных Oracle находящихся на 2 разных компьютерах.
tnsname.ora
Для начала, вам нужно понять о файле 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.
Create Database Link
-- On Prod1 schema.
-- Create a Database Link named mydblink
-- Connect to Prod2 schema on myserver2.

CREATE DATABASE LINK mydblink
CONNECT TO PROD2 IDENTIFIED BY "Prod2Password"
USING '(DESCRIPTION =
(ADDRESS_LIST =
  (ADDRESS = (PROTOCOL = TCP)(HOST = myserver2)(PORT = 1521))
)
(CONNECT_DATA =
  (SERVICE_NAME = db12c)
)
)';
На PROD1 вы можете тестировать Database Link командой:
Select * from Dual@mydblink;
Есть некоторые VIEW помогающие вам сделать запрос списка Database Link имеющиеся в базе данных:
-- All DB links defined in the database
Select * from DBA_DB_LINKS ;

-- All DB links the current user has access to
Select * from ALL_DB_LINKS ;

-- All DB links owned by current user
Select * from USER_DB_LINKS ;
Пример:
-- Format column length.

column OWNER format a10
column DB_LINK format a10
column USERNAME format a10
column HOST format a10
column CREATED format a10

-- Query view: ALL_DB_LINKS:

Select * from ALL_DB_LINKS;
Создать Database Link (Продолжение)
Если информация описания Database2 объявлена в файле tnsname.ora в Database1, вы можете создать Database Link из Database1 в Database2 с более кратким синтаксисом.
-- Create Database Link from prod1 schema of Database1 to prod2 schema of Database2.

create database link mydblink connect to
   prod2 identified by prod2password using 'PROD2_DB';

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

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

Select * from My_Table@mydblink;

Select * from My_View@mydblink;

-- And Insert, Update, Delete,..

Insert into My_Table@mydblink .....;

Update My_Table@mydblink .. ;
 

4. Oracle Synonym

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

create or replace Synonym  My_Table_Syn for My_Table@mydblink;
Примечание: Вы так же можете создать Synonym для функций, процедур.

5. Database Link к другим базам данных не-Oracle

  • TODO: