Mục lục

Giới thiệu

Ở trong bài viết trước, tôi đã đề cập đến 1 loại process “không trực tiếp phục vụ cho User process, nhưng nó vẫn âm thầm đóng 1 vai trò quan trọng trong Oracle Database”. Đó là các Background Process.

Đọc thêm  Kiến trúc Process trong Oracle Database – phần 1

Trong bài viết này, chúng ta sẽ cùng tìm hiểu về vai trò của các Background process quan trọng bậc nhất trong Oracle nhé.

Đó là:

  • Database Writer (DBWn)
  • Log writer (LGWR)
  • Checkpoint (CKPT)
  • System Monitor (SMON)
  • Program Monitor (PMON)

 

Database Writer

Như tôi có nói ở bài “SGA trong Oracle là gì?“: Trên phân vùng SGA của Memory có 1 phân vùng con, sử dụng để lưu trữ các dữ liệu khi cần làm việc, đó là Database Buffer Cache.

Dữ liệu trên Database Buffer Cache sẽ được ghi xuống data file (nằm dưới đĩa cứng) định kỳ bởi 1 Process. Đó chính là Database Writer.

Database Buffer Cache
Database Buffer Cache

Trong hình bên trên, bạn còn thấy sự xuất hiện của 1 thành phần gọi là: Database Smart Flash Cache.

Đây là 1 tính năng để cấu hình 1 phân vùng đĩa có tốc độ đọc ghi cao, để lưu trữ các dữ liệu WARM (có tần suất sử dụng trung bình).

Quay lại với DBWn Process. Mỗi khi chúng ta thay đổi 1 dữ liệu nào đó, các block liên quan đến dữ liệu đó sẽ được thay đổi ở trên Database Buffer Cache trước. Đó gọi là các dirty buffer.

Các dirty buffer sẽ không được lưu trữ mãi mãi trên Database Buffer Cache.

Oracle sẽ sử dụng 1 thuật toán phức tạp để đánh giá: Dirty buffer nào có thể được DBWn ghi xuống đĩa. Thuật toán này dựa trên tần suất sử dụng của dữ liệu đó, nó có tên là Least Recent Used (hay LRU).

DBWn cũng không phải chỉ có 1 process duy nhất. Số lượng DBWn sẽ phụ thuộc vào số lượng CPU có trên máy chủ Database. Thông thường công thức sẽ là

Số DBWn = Số CPU / 8

 

Log writer (LGWR)

Nếu như DBWn ghi dữ liệu ở Database Buffer Cache xuống datafile thì LGWR ghi dữ liệu từ Redo Log Buffer xuống Online Redo Log.

Log Writer Process
Log Writer Process

 

Redo Log Buffer là nơi lưu các change vector, mô tả sự thay đổi của các block.

Dung lượng của các change vector này nhỏ hơn rất nhiều so với bản thân các block. Do đó, Log Writer có thể ghi với tần suất lớn hơn rất nhiều Database Writer mà không sợ ảnh hưởng quá nhiều đến băng thông của đĩa.

LGWR sẽ được thực thi khi gặp các điều kiện dưới đây:

  • Khi người dùng chạy lệnh commit
  • Khi 1/3 Redo Log Buffer đầy
  • Khi DBWn muốn thực thi, LGWR sẽ được gọi để thực thi trước.
  • LGWR chạy 3 giây 1 lần

 

Checkpoint (CKPT)

Checkpoint là 1 sự kiện trên Oracle Database, nhằm đảm bảo dữ liệu được an toàn và nhất quán.

Checkpoint Process
Checkpoint Process

Khi sự kiện Checkpoint xảy ra, tiến trình Checkpoint (CKPT) sẽ được thực thi. Tiến trình CKPT sẽ gọi cho DBWn để ghi dữ liệu trên Database Buffer Cache xuống. Mà như phần bên trên tôi có nói, DBWn muốn thực thi, LGWn cần phải thực thi trước.

CKPT –> LGWR  –> DBWn

Như vậy là khi checkpoint xảy ra, dữ liệu cần phải lưu trên Database Buffer Cache và Redo Log Buffer sẽ được ghi hết xuống đĩa.

Cuối cùng tiến trình CKPT sẽ ghi 1 con số đánh dấu (gọi là System Change Number hay SCN) vào controlfile và data file header.

Hay nói cách khác, tại thời điểm checkpoint, số SCN trong controlfile và data file header là giống nhau.

Khi bạn shutdown database đúng quy trình, trước khi shutdown, tiến trình CKPT sẽ được gọi để đồng bộ hết dữ liệu trên Memory xuống đĩa.

Khi khởi động lại, Oracle sẽ kiểm tra số SCN trong controlfile và data file header xem có giống nhau hay không.

Nếu không giống nhau, Oracle sẽ hiểu là lần shutdown trước đó có vấn đề gì đó (có thể shutdown không đúng quy trình, hoặc mất điện đột ngột), nó sẽ gọi tiến trình SMON để tiến hành khôi phục lại dữ liệu từ Redo Log.

System Monitor (SMON)

System Monitor (SMON) là background process của Oracle được tạo ra ngay khi khởi động Oracle Database instance.

SMON có nhiệm vụ khôi phục dữ liệu khi khởi động (instance recovery) như đã nói bên trên.

Ngoài ra, nó còn dọn dẹp các dữ liệu tạm, gom các extend trống gần kề nhau thành 1 extend lớn hơn, nhằm tránh phân mảnh dữ liệu. Các công việc này, SMON sẽ thực hiện 5 phút 1 lần.

SMON phải luôn thường trực trong suốt quá trình instance hoạt động, nếu bạn thử kill tiến trình này, instance cũng chết luôn.

Program Monitor (PMON)

Program Monitor (PMON) là một background process của Oracle cũng được tạo khi khởi động Oracle Database instance.

Nhiệm vụ của Pmon là giải phóng tài nguyên được cấp phát nếu user process bị lỗi.

Trên đây là các Background Process quan trọng nhất của Oracle Database. Ngoài ra chúng ta còn nhiều Background Process khác như: MMON, ARCn, Jnnn, …, tuy nhiên, khi mới tiếp cận với Oracle Database, bạn chỉ cần nắm thật chắc các Background Process tôi đã nêu ở trên. Sau này khi đã quen với Oracle, chúng ta sẽ dần tìm hiểu các Background Process khác.

Hi vọng bài viết này sẽ mang đến cho các bạn một cái nhìn toàn cảnh về kiến trúc Process trong Oracle Database. Hẹn gặp lại các bạn ở các bài viết sau.\

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

5 2 đánh giá
Article Rating
Theo dõi
Thông báo của
guest
1 Comment
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
long
long
1 năm trước

quá hay

1
0
Rất thích suy nghĩ của bạn, hãy bình luận.x