Database Link trong Oracle cho phép bạn truy cập dữ liệu từ một cơ sở dữ liệu khác như thể nó là một phần của cơ sở dữ liệu hiện tại. Điều này rất hữu ích khi bạn cần thực hiện các truy vấn hoặc thao tác dữ liệu trên nhiều cơ sở dữ liệu từ một điểm duy nhất. Dưới đây là các bước cấu hình và quản trị Database Link trong Oracle Database:
Một số đặc điểm:
Database link chỉ được tạo trên database hiện tại.
Database link không được sử dụng để sao chép dữ liệu giữa các database.
Database link chỉ được sử dụng để truy cập dữ liệu trên database remote (db kết nối đến).
Từ khoá Public => Sẽ được sử dụng bởi nhiều user.
Nếu không khai báo thì tự động database link được tạo ra sẽ là Private.
1. Tạo Database Link
Bước 1: Tạo người dùng và cấp quyền
Trên cơ sở dữ liệu nguồn (cơ sở dữ liệu mà bạn sẽ kết nối đến remote), bạn cần tạo một người dùng có quyền truy cập vào các bảng và dữ liệu cần thiết.
CREATE USER remote_user IDENTIFIED BY password;
GRANT CONNECT, RESOURCE TO remote_user;
GRANT SELECT ON some_table TO remote_user; — cấp quyền chọn lọc trên bảng cụ thể
Bước 2: Tạo Database Link trên cơ sở dữ liệu đích (là nơi bạn đang đứng local)
Trên cơ sở dữ liệu đích (cơ sở dữ liệu mà từ đó bạn sẽ kết nối đến cơ sở dữ liệu nguồn), bạn sẽ tạo Database Link bằng lệnh CREATE DATABASE LINK.
CREATE DATABASE LINK remote_db_link
CONNECT TO remote_user IDENTIFIED BY password
USING ‘remote_tns’;
remote_db_link: Tên của Database Link.
remote_user: Tên người dùng trên cơ sở dữ liệu nguồn.
password: Mật khẩu của người dùng trên cơ sở dữ liệu nguồn.
remote_tns: Tên TNS của cơ sở dữ liệu nguồn, được định nghĩa trong file tnsnames.ora.
2. Định nghĩa TNS trong file tnsnames.ora
Để kết nối đến cơ sở dữ liệu nguồn, bạn cần cấu hình TNS (Transparent Network Substrate) trong file tnsnames.ora trên máy chủ cơ sở dữ liệu đích.
File tnsnames.ora thường nằm trong thư mục $ORACLE_HOME/network/admin.
Ví dụ về cấu hình TNS cho cơ sở dữ liệu nguồn:
remote_tns =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = remote_host)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = remote_service_name)
)
)
remote_tns: Tên TNS mà bạn sử dụng trong lệnh CREATE DATABASE LINK.
remote_host: Tên hoặc địa chỉ IP của máy chủ cơ sở dữ liệu nguồn.
remote_service_name: Tên dịch vụ của cơ sở dữ liệu nguồn.
3. Sử dụng Database Link
Sau khi tạo Database Link, bạn có thể sử dụng nó để thực hiện các truy vấn và thao tác trên cơ sở dữ liệu nguồn.
Ví dụ truy vấn:
SELECT * FROM some_table@remote_db_link;
UPDATE some_table@remote_db_link
SET column_name = ‘new_value’
WHERE condition;
INSERT INTO local_table (column1, column2)
SELECT column1, column2
FROM some_table@remote_db_link;
4. Quản trị Database Link
Kiểm tra các Database Link:
Để xem danh sách các Database Link hiện có, bạn có thể truy vấn các bảng dữ liệu động sau:
Tất cả các Database Link:
SELECT * FROM DBA_DB_LINKS;
Database Link thuộc người dùng hiện tại:
SELECT * FROM USER_DB_LINKS;
Xóa Database Link:
Để xóa một Database Link, bạn sử dụng lệnh DROP DATABASE LINK.
DROP DATABASE LINK remote_db_link;