Mục lục

1. Giới thiệu

Kiến trúc thành phần đầu tiên mà tôi muốn nói đến trong Kiến trúc Oracle Database: Đó là kiến trúc Memory.

Như bài trước, tôi đã có lấy một ví dụ: Kiến trúc Memory giống như khu vực phục vụ khách trong 1 nhà hàng vậy.

Đọc thêm  Tổng quan về kiến trúc Oracle Database

Ở bài này, tôi sẽ giới thiệu cho bạn biết một thông tin nữa:

Khi Database instance hoạt động, trên Memory (hay RAM) sẽ phân hoạch thành 2 khu vực: 

  • Khu vực bộ nhớ chia sẻ (System Global Area – SGA)
  • Khu vực bộ nhớ riêng tư (Program Global Area – PGA)

Kiến trúc memory oracle

Kiến trúc Memory của Oracle Database

Ngay ở phần sau, tôi sẽ giải thích ý nghĩa và vai trò của SGA và PGA trong kiến trúc Memory nhé:

 

2. Khu vực chia sẻ – System Global Area (SGA)

1. Định nghĩa

Khu vực chia sẻ trên Memory, hay tên đầy đủ là System Global Area (SGA), là 1 khu vực bộ nhớ cho phép nhiều phiên làm việc (session) có thể chia sẻ dữ liệu trên đó.

Để dễ nhớ vai trò của SGA, bạn hãy liên tưởng chữ S trong SGA nghĩa là Share (chia sẻ).

 

Bạn nhớ lại xem có gặp tình huống như thế này chưa?

Bạn chạy 1 câu lệnh select dữ liệu từ 1 bảng A. Ví dụ lần đầu câu lệnh đó thực hiện mất 10 giây. Nhưng đến lần sau, cũng vẫn câu lệnh đó, lại chỉ mất có 1 giây. Rồi những lần chạy tiếp theo cũng như vậy.

Đó là bởi: Các dữ liệu cần thiết cho câu lệnh đó đã được đọc từ ổ đĩa lên và nạp vào SGA sau khi chạy câu lệnh lần đầu rồi.

Và nó sẽ ở nguyên tại SGA, để những lần sau bạn chạy lại, nó sẽ không cần phải đọc lại từ dưới đĩa lên nữa.

Tuy nhiên, dữ liệu sẽ không được lưu trên SGA mãi mãi. Những dữ liệu lâu không được sử dụng, sẽ dần dần bị loại bỏ khỏi SGA.

Cơ chế cụ thể thế nào, ở những bài sau chúng ta sẽ tiếp tục tìm hiểu nhé.

 

Cơ chế cũng tương tự khi 2 session khác nhau.

2. Ví dụ

Một ví dụ liên tưởng khác để bạn dễ nhớ vai trò của SGA hơn nhé:

Lại nói ví dụ Oracle Database như 1 cái nhà hàng

SGA chính là các khu vực mà các thực khách đều có thể sử dụng. Quầy lễ tân, nhà vệ sinh.

Kiến trúc SGA Oracle

Chi tiết bên trong SGA còn nhiều phân vùng khác nữa. Bạn có thể tìm hiểu trong bài viết tiếp theo của tôi tại đây

Đọc thêm  SGA trong Oracle là gì

 

3. Khu vực riêng tư – Program Global Area (PGA)

1. Định nghĩa

Trên Memory còn có các khu vực riêng tư khác dành cho riêng từng process (không hẳn là cho từng người dùng, các bạn chú ý điều này). Nó gọi là Program Global Area (PGA). Chữ P trong PGA bạn cũng có thể ghi nhớ là Private (riêng tư) được nhé.

Khu vực này, như cái tên (PGA) của nó, để chứa các dữ liệu độc quyền của các session người dùng. Chỉ session nào sinh ra dữ liệu mới đọc được dữ liệu riêng tư đó trong PGA mà thôi. Ví dụ: thông tin cá nhân của session, hay giá trị cụ thể của các biến được session sử dụng,…

2. Ví dụ

Vậy nếu Oracle Database là cái nhà hàng thì PGA là cái gì?

Câu trả lời là:

Mỗi thực khách sẽ có 1 bàn ăn riêng, ngoại trừ các nhân viên phục vụ. Không ai được phép động vào thức ăn trên đó ngoài bản thân thực khách sở hữu. Bàn ăn đó chính là PGA.

Khác với SGA là 1 khu vực lớn, nơi tất cả “thực khách” sẽ cùng sử dụng nó. PGA không chỉ có 1, mà là có nhiều PGA được cấp phát cho từng “thực khách” vào ăn, và PGA cũng sẽ được hủy ngay khi “thực khách” đã rời đi.

Kiến trúc PGA Oracle

Như vậy là tôi đã đi tiếp một tầng của 1 kiến trúc thành phần trong kiến trúc Oracle Database rồi (Kiến trúc Oracle Database –> Kiến trúc Memory –> SGA / PGA).

Ở các bài viết tiếp, tôi sẽ chia sẻ tiếp về các tầng tiếp theo trong kiến trúc Memory nhé.

Tham khảo tài liệu: https://docs.oracle.com/en/database/

 

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
7 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
Tuan Nguyen
Tuan Nguyen
2 năm trước

Thầy nói rất dễ hiểu, Mong Thầy tiếp tục các bài viết ạ. Em cám ơn Thầy

Tuan Nguyen
Tuan Nguyen
2 năm trước
Trả lời  mr.duydx

Thầy cho em hỏi có cách nào lồng câu lệnh SQL vào lệnh alter không ạ. ví dụ: alter system kill session ‘sid, serial#’ immediate; em muốn thay sid và serial# bằng câu “select sid from v$session where blocking_session is not null” thì làm cách nào để gán giá trị sid trả ra từ câu select đó vào sid trong lệnh alter ạ. mong nhận được phản hồi từ Thầy. Em cám ơn Thầy nhiều ạ

Tuan Nguyen
Tuan Nguyen
2 năm trước
Trả lời  mr.duydx

Em mới học nên vẫn chưa hiểu lắm. Như câu lệnh của Thầy select ‘alter system kill session ”’||sid || ‘,’|| serial#|| ”’;’ from v$session ; khi chạy sẽ ra kết quả là 1 câu alter system kill session ‘1,20742’; Nó không như ý em hỏi. Tức là em muốn chạy lệnh alter nhưng em muốn đưa trực tiếp số sid và serial từ 1 câu select.

Tuan Nguyen
Tuan Nguyen
2 năm trước
Trả lời  mr.duydx

Hay dễ hiểu hơn là em muốn chạy 1 câu alter mà kill ngay session, chứ không phải làm các bước.
bước 1 tìm ra session bị block.
bước 2 tìm ra session giữ block.
bước 3 kill session giữ block bằng việc chạy lệnh alter và đưa sid tìm được ở bước 2.
giờ em muốn hỏi là chỉ cần 1 câu lệnh mà gộp luôn 3 bước trên không ạ
chỉ cần altter system kill session ‘select sid…., select serial#….’ immediate;

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