Mục lục

1. Kiến trúc Multitenant trong Oracle Database là gì?

Kiến trúc Multitenant của phiên bản Oracle 12c là một sự thay đổi cực kỳ lớn so với bản 11g.

Để dễ hình dung, mình sẽ so sánh kiến trúc của Oracle 11g với 12c ở 1 vài điểm chính. Trong bài viết này có sử dụng 1 số thuật ngữ cơ bản nhưng nếu bạn chưa biết có thể đọc các bài viết này để hiểu rõ hơn.

Đọc thêm  Tổng quan về kiến trúc Oracle Database
Đọc thêm  Kiến trúc Memory Oracle Database – SGA và PGA
Đọc thêm  Các pha khởi động trong Oracle database

1. Vấn đề ở các phiên bản Oracle Database cũ

Từ bản 11g trở về trước, mỗi instance chỉ phục vụ cho 1 database. Như vậy n database cần tối thiểu n instance.

Bạn hình dung điều đó giống như mỗi khách hàng sẽ được phục vụ riêng bởi 1 nhân viên. Bất cứ database nào cũng như thế, không phân biệt database quan trọng hay không quan trọng.

Với kiến trúc như vậy, chúng ta sẽ nhận thấy ngay, trong tình huống, nếu có nhiều database trên cùng 1 máy chủ, sẽ có khá nhiều tài nguyên bị dư thừa, lãng phí

  • Các background process: Mỗi instance sẽ có riêng các background process như DBW, LGWR, CKPT, SMON, PMON…
  • Các phân vùng Memory: SGA, PGA.
  • Dữ liệu metadata

oracle database 11g

Ngoài ra, trong phiên bản 11g, nhiều tác vụ quản lý database như: Cấp phát lại tài nguyên cho instance, di chuyển các database từ chỗ này sang chỗ khác, clone database từ một database sẵn có,… thường khá phức tạp và mất nhiều thời gian.

Đơn giản như việc bạn muốn tạo 1 database mới, cũng mất của bạn 30 đến 40 phút rồi.

(Nếu có thời gian, mình sẽ làm 1 buổi livestream để demo về cách phương pháp di chuyển database, các bạn có thể tham gia group https://www.facebook.com/groups/khotailieukienthucdatabase để đón xem nhé)

2. Cách giải quyết ở bản 12c

Với bản 12c, tất cả những điều trên đã thay đổi!

Ở bản 12c, Oracle đưa ra kiến trúc Multitenant, có thể coi là một sự lột xác. (Thực ra, kiến trúc này cũng gần giống kiến trúc của các RDBMS khác như SQL Server, PostgreSQL, chứ không phải Oracle là hãng đầu tiên đưa ra).

oracle database 12c

Trong kiến trúc Multitenant này, chúng ta sẽ có 1 database mẹ, hay còn gọi là Container Database (CDB).

Database này là database khởi thủy, bắt buộc phải có trong kiến trúc. Nó có nhiệm vụ lưu trữ, quản lý các thông tin điều khiển chung. Nó cũng sẽ có các background process để xử lý các công việc chung.

Ngoài ra, chúng ta sẽ có các database con, gắn vào database mẹ, gọi là các Pluggable database (PDB). Đây mới chính là nơi lưu trữ các dữ liệu thực sự của người dùng.

Ghi chú: Thực ra, CDB cũng có thể lưu trữ dữ liệu thực sự, nhưng Oracle khuyến nghị không nên lưu dữ liệu trong CDB để tối ưu cũng như tránh các xung đột ảnh hưởng đến hiệu năng.

Đối với người dùng, PDB hoàn toàn giống với các database bình thường, từ cách kết nối đến các đối tượng bên trong như user, bảng, view, procedure. Còn xét sâu hơn ở kiến trúc phía dưới, các PDB sống dựa vào CDB. CDB cung cấp các process, memory để giữ cho PDB hoạt động.

Có một PDB đặc biệt được sinh ra khi mới tạo CDB, nó gọi là PDB hạt giống (PDB$SEED). Nó giống như 1 mẫu (hay template) để mỗi khi cần tạo ra một PDB mới, Oracle sẽ sử dụng PDB$SEED này để làm mẫu.

Hình ảnh bên trên là danh sách các PDB đang có trong CDB, trong đó PDB$SEED là PDB hạt giống, nó chỉ có thể đọc, chứ không thể sửa đổi.

 

2. Lợi ích khi sử dụng mô hình Multitenant

1. Linh động

Kiến trúc này khiến cho Oracle Database trở nên rất linh động trong nhiều tính huống.

Giả sử bây giờ phòng nghiệp vụ yêu cầu bạn tạo một database mới chẳng hạn. Thay vì, bạn phải dùng dbca tạo database, chọn nơi lưu datafile, thiết lập các tham số, cấp phát Memory, …, và phải đợi khoảng 30, 40 phút, như trong bản 11g, bây giờ bạn chỉ cần đúng 1 câu lệnh duy nhất, và chỉ mất có 1 đến 2 phút là có ngay 1 database đã sẵn sàng để sử dụng rồi.

Hay một bài toán khác:

Bạn muốn di chuyển 1 database từ nơi này sang nơi khác. Cách làm rất đơn giản, tôi sẽ nói một cách hình tượng quy trình chỉ có 3 bước thế này, còn ở 1 bài khác tôi sẽ làm thành câu lệnh cụ thể cho các bạn

  • Unplug (rút) PDB khỏi CDB cũ.
  • Di chuyển datafile của PDB sang chỗ mới
  • Plug (gắn) PDB vào CDB mới

Nguyên tắc giống y như việc bạn chuyển 1 quyển sách từ tủ này sang tủ khác. Rất rõ ràng và đơn giản!

Đọc thêm  Oracle 12c – Di chuyển PDB bằng kỹ thuật plug/unplug

2. Tận dụng tối đa tài nguyên

Thêm nữa, kiến trúc Multitenant cũng giúp tận dụng tối đa hóa tài nguyên. Như tôi đã đề cập ở bên trên, kiến trúc cũ gây ra rất nhiều vấn đề về dư thừa tài nguyên, thì với kiến trúc mới này,  tài nguyên xử lý sẽ được tái sử dụng liên tục (VD: 1 background process phục vụ cho nhiều PDB)

3. Quản lý tập trung

Và lợi ích lớn cuối cùng mà kiến trúc Multitenant mang lại, đó là, khả năng quản lý tập trung rất tốt. Bây giờ bạn có thể thực thi 1 chính sách gì đó (VD: nâng cấp phiên bản chẳng hạn), bạn chỉ cần thực hiện ở mức CDB thì tất cả PDB cũng sẽ được áp dụng theo.

 

3. Demo

Bạn có thể xem video dưới đây để hình dung dễ hơn: Trên thực tế, CDB và PDB sẽ trông như thế nào nhé.

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