Sử dụng Database Link trong Oracle Database

Để 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 duodbonedb 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)
)
)

word image 3518 1

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_useroracle 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

word image 3518 2

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.

Datalinks.vn

Hello các bạn, mình là Dương Nguyễn tác giả của blog này. Với gần 20 năm làm việc trong lĩnh vực CNTT, VT trong và ngoài nước, mong muốn được chia sẻ kiến thức và kinh nghiệm về database với các bạn đam mê và quan tâm đến lĩnh vực này. Đặc biệt là #OracleDatabase hoặc luyện thi #OCP database admin. Các bạn cần người đồng hành thì alo mình nhé. Call/Zalo: 0765 871 888. Thanks you !.....
5 1 đánh giá
Đánh giá bài viết
Theo dõi
Thông báo của
guest

0 Góp ý
Phản hồi nội tuyến
Xem tất cả bình luận