Để tìm hiểu Database Link là gì thì mời bạn tham khảo thêm bài viết này: https://datalinks.vn/quan-tri-database-link-oracle-database/
Sử dụng Database Link trong Oracle Database
Trong khuôn khổ bài viết này chúng ta cùng nhau đi thực hành về Database Link xem nó hoạt động thế nào nhé.
Chúng ta có hai cơ sở dữ liệu duodb và onedb trên cùng một server (IP: 192.168.68.11), nếu CSDL của bạn nằm ở 2 server khác nhau thì cũng làm tương tự thôi, chỉ update lại IP trong TNSnames là được:
1. Cấu hình TNSNAMES.ORA
Trước khi tạo Database Link, chúng ta cần đảm bảo rằng cả hai cơ sở dữ liệu (duodb và onedb) đều đã được cấu hình trong file tnsnames.ora. File này xác định cách thức Oracle kết nối tới các cơ sở dữ liệu qua TNS (Transparent Network Substrate).
Ví dụ, trong file tnsnames.ora, chúng ta có thể thêm nội dung bên dưới: các bạn đang đứng ở server nào kết nối đi thì các bạn thêm nội dung tnsnames.ora vào server đó, ở đây tôi chạy 2 CSDL trên cùng một server nên chỉ có 1 tnsnames sử dụng cho cả 2 luôn.
tnsnames.ora nằm trong đường dẫn này => bạn mở file nếu có sẵn hoặc tạo mới file nếu chưa có và thêm vào nội dung bên dưới:
/u01/app/oracle/product/19.3.0/dbhome_1/network/admin
vi tnsnames.ora
DUODB = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.68.11)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = duodb.localdomain) ) ) ONEDB = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.68.11)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = onedb.localdomain) ) )
Tạo user trên mỗi database để thực hiện test dữ liệu:
Tạo user trên ONEDB:
CREATE USER onedb_user IDENTIFIED BY oracle QUOTA UNLIMITED ON users; GRANT connect, resource TO onedb_user;
Login vào user onedb_user trên CSDL ONEDB ở bên trên tạo table và insert data vào:
conn onedb_user/oracle CREATE TABLE test_dblink (id NUMBER); insert into test_dblink values (11111); commit;
Tạo user trên DUODB:
CREATE USER duodb_user IDENTIFIED BY oracle QUOTA UNLIMITED ON users; GRANT connect, resource TO duodb_user;
Login vào user duodb_user trên CSDL DUODB ở bên trên tạo table và insert data vào:
conn duodb_user/oracle CREATE TABLE test_dblink_duodb (id NUMBER); insert into test_dblink_duodb values (22222); commit;
2. Tạo database link từ duodb kết nối đến onedb
Đăng nhập vào duodb và tạo Database Link để kết nối đến onedb:
conn / as SYSDBA CREATE DATABASE LINK onedb_link CONNECT TO onedb_user IDENTIFIED BY oracle USING 'ONEDB';
- onedb_user và oracle là tài khoản trên onedb, chúng ta phải login vào CSDL và tạo sẵn nó.
- ONEDB là tên entry đã cấu hình trong file tnsnames.ora.
3. Truy vấn qua Database Link
Sau khi đã tạo xong database link, chúng ta có thể thử truy vấn dữ liệu từ onedb thông qua duodb:
Bật Listener trước khi truy vấn:
lsnrctl start lsnrctl status
Truy vấn qua Dblink từ DUODB sang ONEDB:
SELECT * FROM test_dblink@onedb_link;
Câu lệnh này sẽ truy vấn bảng test_dblink trên onedb qua link onedb_link từ cơ sở dữ liệu duodb.
4. Thực hành Từ onedb Kết Nối Đến duodb
Ngược lại, chúng ta cũng có thể đăng nhập vào onedb và tạo database link để kết nối tới duodb, chúng ta có thể thực thi các lệnh DML thông qua Dblink như bình thường:
CREATE DATABASE LINK duodb_link CONNECT TO duodb_user IDENTIFIED BY oracle USING 'DUODB';
Sau đó, chúng ta thử truy vấn dữ liệu từ duodb:
SELECT * FROM test_dblink_duodb@duodb_link;
Insert thêm thông tin vào bảng trên duodb từ onedb thông qua dblink:
insert into test_dblink_duodb@duodb_link values (5555); commit;
Kiểm tra Data thông qua dblink;
SELECT * FROM test_dblink_duodb@duodb_link;
Kiểm tra dữ liệu thực trên DUODB:
select * from duodb_user.test_dblink_duodb;
5. Kiểm Tra Database Link
Chúng ta có thể kiểm tra hoạt động của database link bằng cách truy vấn bảng dual:
SELECT * FROM dual@onedb_link; SELECT * FROM dual@duodb_link;
Xem thông tin các Dblink hiện có:
SELECT * FROM USER_DB_LINKS; SELECT * FROM DBA_DB_LINKS;
6. Xóa Database Link
Nếu chúng ta không còn cần sử dụng database link, chúng ta có thể xóa bằng lệnh:
DROP DATABASE LINK onedb_link;
Done!!!
Chúc các bạn thành công.