Kiến trúc Oracle Database 11g - PIII

Sau phần 1 – tìm hiểu về kiến trúc bộ nhớ và phần 2 – tìm hiểu về kiến trúc process, phần này chúng ta sẽ tìm hiểu về kiến trúc lưu trữ trong Oracle Database. Có thể coi nó chính là … Oracle database. Do memory + process = instance, instance để vận hành database, vậy database là gì? Chính là những gì lưu trữ ở dưới hệ thống đĩa.

 

Kiến trúc lưu trữ bao gồm kiến trúc luận lý (logical structure) và kiến trúc vật lý (physical structure), có mối quan hệ mật thiết với nhau.

  

Physical Structure

 




 


Phyical structure – kiến trúc vật lý – chính là các tập tin, là những gì chúng ta có thể thấy được trực tiếp trên hệ điều hành, được lưu trữ trên hệ thống lưu trữ (có thể là local disk, SAN, NAS…, disk có thể format theo file system như ext3, hay format thành ASM disk…), bao gồm:

 


Data files


Đúng như tên gọi, data files là các tập tin chứa dữ liệu của database, bao gồm cả dữ liệu của user hay ứng dụng, data dictionary của Oracle database. 

Mỗi data file chỉ thuộc về 1 tablespace, có thể tự tăng kích thước (AUTOEXTEND) và tối đa đến 1 giới hạn (MAXSIZE) nếu ta cấu hình khi tạo. 

Data file có thể là:

Datafile: các tập tin chứa dữ liệu


Tempfile: các tập tin chứa dữ liệu tạm thời phục vụ cho hoạt động của database


Undo datafile: các tập tin chứa dữ liệu undo phục vụ cho hoạt động của database


Các tập tin này hay có đuôi là .dbf


 

Control files


Đây là tập tin hết sức quan trọng với database, nếu không có nó sẽ không open được database. Tập tin này chứa metadata về database, như tên database, vị trí các data files, redo log files, thông tin về backup,…

Do là tập tin quan trọng, nên chúng ta cần nhân bản (multiplex) file này ra làm 2, 3 bản ở các vị trí lưu trữ khác nhau, để trong trường hợp 1 file bị hư vẫn còn các file còn lại, đảm bảo hệ thống hoạt động.

Các tập tin này hay có đuôi là .ctl


 


Online redo log files


Đây chính là các tập tin mà process LGWR ghi dữ liệu ra từ Redo log buffer. Các tập tin này cần thiết trong trường hợp instance crash, phải recover lại.

Các redo log files được chia vào các log group. Mỗi log group cũng nên có 2 redo log files trở lên (cũng multiplex như control file), để đảm bảo khi có 1 file hư thì vẫn còn file còn lại để hệ thống hoạt động.

Do được sử dụng xoay vòng, cần ít nhất 2 log group trong database. 

 

Khi hoạt động, log group có thể có các trạng thái sau:

UNUSED: log group mới tạo, chưa sử dụng bao giờ


CURRENT: log group đang được ghi dữ liệu


ACTIVE: log group đang không ghi dữ liệu, nhưng đang cần phòng trường hợp instance crash


INACTIVE: log group đang không ghi dữ liệu, không cần trong trường hợp instance crash


Archived redo log files


Nếu database chạy trong chế độ ARCHIVELOG, các redo log file khi đầy / khi switch sẽ được ghi ra archived log files. Các archived redo log files này dùng với các bản backup để đảm bảo có thể restore hệ thống đến 1 thời điểm xác định. Ngoài ra, archived redo log files còn dùng cho các tính năng khác như Data Guard.

 


Initialization files


Đây là tập tin chứa các tham số cấu hình liên quan đến bộ nhớ, vị trí control files, vị trí các thư mục log, các tham số cấu hình hoạt động của database… được dùng khi startup instance. Có 2 loại file:

Pfile (parameter file): là dạng file text, thường có tên init<SID>.ora


Spfile (server parameter file): là dạng file binary, thường có tên spfile<SID>.ora


Các tập tin này thường nằm trong ORACLE_HOME/dbs. Nếu dùng ASM để lưu trữ thì spfile hay nằm trong ASM. 

Spfile có nhiều ưu điểm hơn pfile và thường được dùng chính cho database. Tuy vậy pfile cũng cần thiết trong nhiều trường hợp. Việc nắm vững thao tác với 2 loại file này sẽ rất có ích. 

 


Password files


Tập tin này chứa password của các user được cấp quyền SYSDBA hay SYSOPER, cho phép các user có quyền admin này kết nối từ xa để thực hiện các thao tác cần xác thực bên ngoài database, chẳng hạn như startup.

Tập tin này thường có tên orapw<SID> nằm trong ORACLE_HOME/dbs.

 

Alert log & Trace files


Alert log là tập tin ghi lại log các hoạt động chính của database (startup, shutdown, switch log…), các thao tác liên quan đến tablespace và datafile, ALTER DATABASE, ALTER SYSTEM, các lỗi liên quan đến hoạt động database…

Đây là tập tin cần thường xuyên theo dõi kiểm tra để đảm bảo hoạt động của database. Tập tin này thường có tên alert_<SID>.log

Trace files là các file log ghi lại các lỗi xảy ra trên các background process và server process. Ngoài ra cũng có lúc DBA chủ động ghi trace file để kiểm tra 1 số thông tin rõ ràng hơn. 

 

Backup files


Backup files là các file sao lưu lại nội dung database, mục đích chính là phòng trường hợp có hư hỏng gì thì dùng để khôi phục database.

Backup files có thể là các file copy của các file khác (data file, control file, redo log, archived log…) nếu sử dụng “cold backup”, hoặc có thể là các tập tin do RMAN sinh ra nếu dùng RMAN để backup.

 

Note


Do đây là các tập tin trên OS, nên nó cũng có các tính chất như các tập tin khác (lưu trữ theo kích thước OS block, có phân quyền owner, read/write…) 

 


Logical Structure

 


Nếu như trên OS ta thấy các tập tin database đơn giản chỉ là … các tập tin, thì trong database, việc lưu trữ logic lại tổ chức phức tạp hơn, theo nhiều cấp.

 

 

Oracle data block


Data block là cấp độ lưu trữ logic nhỏ nhất trong Oracle database. Thường 1 Oracle data block sẽ gồm nhiều OS block để tăng I/O. Mặc định block size là 8KB. Tuy nhiên khi tạo tablespace, có thể đặt block size khác tùy theo nhu cầu.  

Extents


Extent là mức độ lưu trữ cao hơn, bao gồm nhiều data block liền kề (về mặt logical, còn về mặt physical có thể là các block rải rác trên disk). Khi 1 object cần tăng thêm kích thước, Oracle sẽ cấp phát thêm ở mức độ extent. 

Segments


Segment là đơn vị lưu trữ logic bao gồm nhiều extent. Có 4 loại segment chính:

Data segment: là segment tạo nên table. Mỗi table được lưu hoàn toàn trong 1 segment (với partitioned table thì mỗi partition là 1 segment)


Index segment: là segment tạo nên index.  Mỗi index được lưu hoàn toàn trong 1 segment (với partitioned index thì mỗi partition là 1 segment)


Undo segment: các segment lưu trữ thông tin undo trong undo tablespace


Temporary segment: các segment lưu trữ thông tin tạm thời trong temporary tablespace


Tablespace


Việc lưu trữ nhìn từ trong database, ở mức độ cao nhất sẽ là các tablespace.

Tablespace là tập hợp các data files (quan hệ giữa physical và logical nhìn thấy rõ nhất là đây), mục đích tất nhiên là … để lưu trữ dữ liệu. Có 3 loại tablespace lưu trữ:

Data tablespace: tablespace chứa dữ liệu. Khi cài đặt thường có sẵn tablespace SYSTEM và SYSAUX, là các tablespace hệ thống chứa dữ liệu của Oracle (ta không nên lưu trữ dữ liệu khác vào đây), 1 tablespace USERS để chứa dữ liệu của user/ứng dụng. Thường ta sẽ tạo thêm các tablespace khác để quy hoạch việc lưu trữ


Undo tablespace: là các tablespace chứa dữ liệu undo, liên quan đến hoạt động của database, do Oracle quản lý. Chỉ có 1 undo tablespace trong database


Temporary tablespace: là các tablespace chứa dữ liệu tạm thời, liên quan đến hoạt động của database, cũng do Oracle quản lý. Có thể có nhiều temporary tablespace trong database


Về cách tổ chức, tablespace có thể được tổ chức theo 1 trong 2 kiểu:

Smallfile tablespace: tablespace gồm nhiều datafile, kích thước tối đa mỗi datafile phụ thuộc vào kích thước block (vd với block 8KB thì kích thước datafile tối đa là 32GB)


Bigfile tablespace: tablespace chỉ có 1 datafile duy nhất, tuy nhiên kích thước tối đa rất lớn (vd với block 8KB thì kích thước datafile tối đa là 32TB)


Chúng ta sẽ tìm hiểu chi tiết về tablespace ở trong các bài viết khác.

 

Tổng kết lại, ta thấy physical structure là các tập tin khác nhau, có mục đích khác nhau, lưu trữ trực tiếp trên hệ thống lưu trữ, nên phần lưu trữ này ta cần quan tâm tổ chức sắp xếp rõ ràng.

Còn ở logical structure, thường ta hay quan tâm quy hoạch việc lưu trữ ở mức độ tablespace, thỉnh thoảng cân nhắc block size cho phù hợp, và chống phân mảnh cho tablespace nếu dữ liệu quá rải rác, ảnh hưởng đến performance.

Nhận xét

Bài đăng phổ biến