Mục lục

1. Giới thiệu Foreign Data Wrapper

Nhiều trường hợp, bạn đang kết nối vào database này và muốn xem dữ liệu ở 1 database khác.

Trong PostgreSQL có 1 chức năng hỗ trợ bạn làm điều đó. Nó gọi là Foreign data wrapper (FDW).

Đọc thêm  Cấu hình Logical Replication trong PostgreSQL

Cấu hình chức năng này rất đơn giản. Bài viết này sẽ giúp bạn.

 

2. Bài toán

Giả sử bạn đang kết nối vào 1 database PostgreSQL và bạn muốn truy vấn dữ liệu từ bảng history của 1 database ở máy chủ khác.

Bảng history có cấu trúc như sau:

create table history (
        id int4 NOT NULL,
        step_name varchar(300) NULL,
        begin_time timestamp NULL,
        duration text NULL,
        message text NULL);

Các bước tiến hành sẽ như sau:

 

3. Cài đặt Extention

Đầu tiên bạn phải cài đặt extension có tên postgres_fdw.

CREATE EXTENSION postgres_fdw;

 

4. Tạo External Server

Sau đó, bạn tạo External Server (chính là server chứa database PostgreSQL mà bạn muốn kết nối tới)

CREATE SERVER ext_server 
FOREIGN DATA WRAPPER postgres_fdw  
OPTIONS (host '10.0.32.132', dbname 'fdw_db', port '5432');

Giải thích câu lệnh:

  • Câu lệnh này sẽ tạo ra một External Server có tên ext_server (tên này tùy bạn đặt) kết nối đến máy chủ lưu trữ PostgreSQL database bạn cần kết nối.
  • Ở trong phần OPTIONS:
    • 10.0.32.132 là IP của máy chủ chứa PostgreSQL database mà bạn muốn kết nối tới.
    • fdw_db là tên database mà bạn muốn kết nối,
    • 5432 là port của PostgreSQL ở máy chủ đích.

 

5. Tạo user mapping

Sau khi tạo xong  External Server, bạn cần tạo ra một kết nối với user ở database đích bằng câu lệnh sau:

CREATE USER MAPPING FOR CURRENT_USER
SERVER ext_server  
OPTIONS (user 'postgres', password 'Abcd_1234');

Giải thích câu lệnh: Câu lệnh này sẽ thực hiện map user đang kết nối với user postgres của database ở xa, bằng External Server đã tạo ra ở bước trước (ext_server)

Cuối cùng bạn tạo Foreign table trên database hiện hành map với table history trên database ở xa.

 

6. Tạo Foreign Table

CREATE FOREIGN TABLE ext_history (
        id int4 NOT NULL,
        step_name varchar(300) NULL,
        begin_time timestamp NULL,
        duration text NULL,
        message text NULL)
        SERVER ext_server
        OPTIONS (schema_name 'public', table_name 'history');

Như vậy là xong rồi đó, bạn có thể kiểm tra lại bằng cách select bảng ext_history xem sao

select * from ext_history;

 

Nguồn: https://dangxuanduy.com/

Hiện tại, tôi có tổ chức đều đặn các khóa học về quản trị Oracle Database, tôi sẽ để thông tin ở đây, để bạn nào quan tâm về lịch học cũng như chương trình học có thể theo dõi nhé.

KHOÁ DÀNH CHO NGƯỜI MỚI

KHÓA HỌC: QUẢN TRỊ ORACLE DATABASE THẬT LÀ ĐƠN GIẢN (ADMIN 1)

CÁC KHOÁ NÂNG CAO:

KHÓA HỌC ORACLE NÂNG CAO: QUẢN TRỊ KIẾN TRÚC MULTITENANT 12c

KHÓA HỌC ORACLE NÂNG CAO: QUẢN TRỊ HỆ THỐNG DATA GUARD

CÁC KHOÁ COMBO:

COMBO 1: ADMIN 1 + MULTITENANT 12c

COMBO 2: ADMIN 1 + DATA GUARD

COMBO 3: ADMIN 1 + MULTITENANT 12c + DATA GUARD

LỊCH HỌC:

Mời bạn xem tại đây: LỊCH HỌC CÁC LỚP ORACLE 

ĐĂNG KÝ:

https://forms.gle/MtCAoRQFenP886y79

Hãy tham gia group “Kho tài liệu kiến thức database” để cùng học hỏi và chia sẻ nhé.

0 0 đánh giá
Article Rating
Theo dõi
Thông báo của
guest
0 Comments
Cũ nhất
Mới nhất Được bỏ phiếu nhiều nhất
Phản hồi nội tuyến
Xem tất cả bình luận
0
Rất thích suy nghĩ của bạn, hãy bình luận.x