Basic Replication in oracle (Read – only Materialized Views)

A. Tổng Quan

I. Cơ sở dữ liệu phân tán

  • Cơ sở dữ liệu phân tán: Một tuyển tập dữ liệu có quan hệ logic với nhau, được phân bố trên các máy tính của một mạng máy tính.
  • Hệ quản trị CSDL phân tán: Hệ thống phần mềm cho phép quản lý CSDL phân tán và đảm bảo tính trong suốt của hệ thống đối với người dùng.
  • Ứng dụng cục bộ: Được yêu cầu và thực hiện trên máy tính ở một nút trên hệ CSDL phân tán và chỉ liên quan tại nút đó.
  • Ứng dụng toàn cục: Yêu cầu thực hiện qua nhiều nút thông qua hệ thống truyền thông.

Ví dụ: Hệ CSDL phân tán của Google. Khi có một yêu cầu từ một vị trí tại Việt Nam thì hệ thống sẽ tự động nhận biết và server ở tại Việt Nam hoặc ở gần nhất với yêu cầu sẽ xử lý.

**-> ** Vậy làm thế nào để dữ liệu tại các server có thể thông suốt và đồng bộ hóa với nhau một cách tự động? Bài viết này giới thiệu về Basic Replication trên hệ quản trị CSDL Oracle.

II. Mô hình Read - Only Materialized Views

picture01.png

** Một số chú ý **

  • Các máy clients có thể truy vấn dữ liệu ngay tại máy cục bộ (local machine) mà không cần phải truy vấn tới cơ sở dữ liệu server từ xa (remote machine server). Điều này sẽ làm giảm thời gian truy vấn và giảm băng thông cho CSDL server từ xa (master database server).

  • Clients chỉ có thể đọc dữ liệu từ server cục bộ (local machine), không thể sửa hay xóa...

  • Chỉ có thể cập nhật, xóa dữ liệu trên master server với tài khoản người dùng có quyền sau: SYS, SYSTEM or user được gán quyền cho phép.

  • Mỗi bảng dữ liệu trên máy tính trong quá trình cập nhật dữ liệu tại server master, sau một khoảng thời gian (cấu hình) sẽ được tự động cập nhật tới các server slave. picture02.png

  • Read - only table snapshot: bản sao bảng dữ liệu từ một hoặc nhiều bảng khác trên máy tính từ xa (máy chủ - master database server), cùng với việc cập nhật các bản ghi vào logs.

  • Ví dụ: Từ một bảng trên CSDL master

 SQL> CREATE SNAPSHOT obj_1 AS  SELECT * FROM obj_1@orc1

 SQL> CREATE SNAPSHOT sales.orders AS   SELECT * FROM sales.orders@hq.acme.com o
WHERE EXISTS
  ( SELECT c_id FROM sales.customers@hq.acme.com c
WHERE o.c_id = c.c_id AND zip = 19555);
  • Snapshot logs: Với mỗi bảng dữ liệu đã đồng bộ hóa tạo một snapshot log (made by owner of table)
  • Snapshot logs table name:
 table user_snapshot_log
 MLOG$_name_of_table_replicated
  • Snapshot Refreshes: Làm mới hơn cho snapshot với master
  • Snapshot Refreshes Groups: Làm mới hơn nhóm trong nhóm bảng snapshot
  • Automatic Snapshot Refreshes: Tự động làm mới hơn. Khi tạo mới một snapshot refresh group, người quản trị có cấu hình tự động làm mới. Tuy nhiên nó cũng có thể được làm mới bằng tay khi cần thiết.

B. Sample config and deploy

I. Environment

On Master Database server

Global db name: orcl.example.com
SID = orcl
IP : 192.168.50.103 (Some IP you want)

On slave server

Global db name: orcl2.example.com
SID = orcl2
IP : 192.168.50.63

Để biết thông tin về Global DB name và SID

Trên Window:

start -> run -> regedit -> Software -> Oracle

Thư mục và đường dẫn quan trọng

  • <Home_database_oracle_dir>/NETWORK/ADMIN
  • listener.ora: Được hiểu ngắn gọn như là một tai nghe của DB server. Có thể cấu hình cho phép lắng nghe nhiều CSDL.
  • tnsname.ora: Tập tin này có chứa các khai báo cho các clients để có quyền truy cập vào cơ sở dữ liệu máy chủ lắng nghe khai báo trong tập tin listener.ora.
  • sqlnet.ora: Chứa các khai báo cho các listener.ora tập tin và tnsname.ora

Cấu hình DB trên 2 máy để có thể kết nối được với nhau

  1. On master server.
  • Cấu hình tập tin listener.ora để lắng nghe database orc1.example.com tại cổng 1521. Default gateway có thể được cấu hình sử dụng graphical tools (Net Configuration Assistants) hoặc viết trực tiếp vào listener.ora.
  • Dưới đây là demo
  • listener.ora:

listener.ora-master.png

  • tnsname.ora: tnsora-master.png
  1. Config slave server tương tự.

Restart listener

start -> run -> cmd (admin)
> tsnrctl stop
> tsnrctl start

Kiểm tra cấu hình kết nối

  1. On slave server
start -> cmd (admin)
> tnsping orcl
  1. On master server
> tnsping orcl2

Tạo user reptest/reptest và gán quyền

  1. On master

create-user-onmaster.png

  1. On slave

create-user-onslave.png

  • Tạo DB links
  • Tạo obj_1 table và thêm dữ liệu cho bảng cho master server. (Thực hiện bởi reptest user với SQL Development graphical tool hoặc bằng lệnh như sau.)

picture05.png

  • Create snapshot logs (only master server)

picture06.png

  • On slave server, create reptest user

picture07.png

  • Create a link to the master database and checking links.

picture08.png

  • Create snapshots, and perform sync (Snapshot, just perform the slave)

picture09.png

  • Value sysdate: The current system date
  • Dòng 14, ở trên: Hệ thống sẽ tự động đồng bộ hóa dữ liệu từ master sau mỗi 60 giây (sysdate + 1/1440 = 60s <=> 24/01/60).
  • Thực thi basic test replication, tại slave machine truy vấn:
SQL> select * from obj_1;
  • If the result is successful, as shown below.

picture10.png

  • Khi thêm dữ liệu vào master:

picture11.png

  • Wait 1 minute, perform queries on the slave, the following results are successful.

picture12.png

III. Tham khảo


All Rights Reserved