Hướng dẫn sử dụng Oracle Database Link và Synonym
Công ty Vĩnh Cửu tuyển dụng lập trình viên Java

1- Database Link là gì?

Database Link là một đối tượng trong SCHEMA của oracle, nó giống như một cái cầu để nối với một database khác, giúp bạn truy cập vào các đối tượng của database kia.
Bạn cũng có thể tạo một Database Link để kết nối Oracle tới một loại Database khác, chẳng hạn như MySQL, SQL Server, ... trong trường hợp này bạn cần sử dụng dịch vụ Oracle Heterogeneous (Oracle Heterogeneous Service)

2- Tạo Database Link

Ở đây tôi minh họa kết nối 2 hệ thống database Oracle nằm trên 2 máy tính khác nhau.

tnsname.ora

Trước hết bạn cần có hiểu về file tnsnames.ora của Oracle.

tnsname.ora là một file mô tả về một database Oracle, bạn có thể tìm thấy file này trong thư mục cài đặt của Oracle.
  • <ORACLE_HOME>\product\12.1.0\dbhome_1\NETWORK\ADMIN
Nội dung của file tnsname.ora giống hình minh họa dưới đây.
Dưới đây là hình ảnh mô tả hai hệ thống Database Oracle nằm trên 2 máy khác nhau.
Tạo một Database Link có tên mydblink từ PROD1 vào PROD2.
Create Database Link
-- Trên SCHEMA Prod1.
-- Tạo một Database Link có tên mydblink
-- Kết nối vào Schema Prod2 trên máy 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)
 )
)';
Trên PROD1 bạn có thể test Database link bằng lệnh:
Select * from Dual@mydblink;
Có một vài VIEW giúp bạn truy vấn ra danh sách các Database Link có trên database:
-- Tất cả các Database Link được định nghĩa trong cơ sở dữ liệu
Select * from DBA_DB_LINKS ;

-- Tất cả các Database Link người dùng hiện hành có quyền truy cập vào
Select * from ALL_DB_LINKS ;

-- Tất cả các Database Link thuộc sở hữu của người dùng hiện hành
Select * from USER_DB_LINKS ;
Ví dụ:
-- Format độ dài cột hiển thị (Cho dễ nhìn).

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

-- Truy vấn View: ALL_DB_LINKS:

Select * from ALL_DB_LINKS;

Tạo Database Link (Tiếp theo)

Nếu các thông tin mô tả của Database2 đã được khai báo trong file tnsname.ora của Database1, bạn có thể tạo Database Link từ database1 vào database2 với cú pháp ngắn gọn hơn.
-- Tạo một Database Link từ Database1 vào Schema prod2 của Database2.

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

3- Truy cập các đối tượng thông qua Database Link

Sau khi đã có Database Link, bạn có thể truy cập tới các đối tượng trong database2 thông qua Database Link.
-- Truy vấn bảng trong Database2:

Select * from My_Table@mydblink;

Select * from My_View@mydblink;

-- Và Insert, Update, Delete,..

Insert into My_Table@mydblink .....;

Update My_Table@mydblink .. ;
 

4- Oracle Synonym

Synonym có thể tạm dịch là "Đối tượng đồng dạng" với một đối tượng nào đó. Nếu bạn không muốn viết thêm @dblinkName khi truy cập vào một đối tượng thông qua Database link, bạn có thể tạo một Synonym cho đối tượng đó.
Tạo Synonym:
-- Tạo Synonym:

create or replace Synonym  My_Table_Syn for My_Table@mydblink;
Chú ý: Bạn cũng có thể tạo các Synonym cho các hàm, các thủ tục.

5- Database Link tới các Database khác Oracle

  • TODO: TÀI LIỆU ĐANG ĐƯỢC CẬP NHẬP.