Nov 162015
 

Tổng quan kiến trúc database vật lý của Oracle

Phần này sẽ mô tả kiến trúc vật lý của database Oracle sau khi đã mô tả kiến trúc ứng dụng của Oracle trong bài trước. Các vấn đề đề cập đến bao gồm datafiles, redo log files và control files. Phần này sẽ khó hiểu hơn mô hình ứng dụng và đòi hỏi phải có nền tảng nhất định để có thể đọc hiểu.

Datafiles

Mỗi Oracle database đều có một hoặc nhiều datafile vật lý. Datafiles lưu giữ tất cả các dữ liệu của database. Các kiểu dữ liệu logic như table, index, view, sequence được lưu trữ vật lý trên datafiles được cấp phát cho database.

Các tính chất của datafiles là:

– Một datafile chỉ có thể thuộc duy nhất 1 db

– Datafiles có thể có một vài thuộc tính như tự động mở rộng khi database hết dung lượng

– Một hoặc một vài datafiles sẽ tạo thành một đối tượng lưu trữ logic của db gọi là tablespace.

Về cơ bản, dữ liệu trong datafiles sẽ được đọc nếu cần và sẽ được lưu trữ vào trong cache của oracle. Và như vậy, giả sử một user thực hiện request dữ liệu từ một bảng trong DB mà dữ liệu này chưa có trong cache của db thì nó sẽ được đọc từ datafiles tương ứng sau đó lưu trữ lại trong bộ nhớ.

Việc chỉnh sửa dữ liệu không nhất thiết phải ghi vào datafile ngay lập tức. Để giảm thiểu việc truy nhập ổ cứng thường xuyên đồng thời tăng performance, dữ liệu được pooled trong bộ nhớ và được ghi lên datafiles tương ứng cùng lúc vào một thời điểm (được xác định bởi DBWn).

Control Files

Mỗi Oracle DB sẽ có một control file. Control file sẽ lưu trữ thông tin về cấu trúc vật lý của DB. Ví dụ các thông tin như sau:

– Tên db

– Tên và địa chỉ đường dẫn của các datafiles và các redo log files

– Timestamp tạo DB

Để đề phòng các trường hợp hỏng file, oracle sẽ quản lý một số nhân bản của control file đồng thời.

Mỗi khi một instance của Oracle DB được khởi động thì control file của nó sẽ xác định database, redo log files cần phải mở cho các yêu cầu truy xuất DB. Khi database có thay đổi như thêm mới datafile hoặc redo log file được tạo ra, … thì control file sẽ tự động chỉnh sửa theo thay đổi này. Và với các chức năng trên, control file cũng được sử dụng trong quá trình phục hồi DB.

Redo Log Files

Mỗi Oracle DB đều có ít nhất 2 redo log files. Tập hợp các redo log files này được gọi là redo log của db. Một redo log được tạo thành từ các redo records.

Chức năng chính của redo log là ghi lại tất cả các thay đổi với dữ liệu. Nếu như có lỗi trong quá trình thay đổi dữ liệu thì với redo log ta có thể phục hồi lại dữ liệu đã mất.

Để bảo vệ chính redo log bị hư hại, Oracle thực hiện nhân bản redo logvà do đó sẽ có ít nhất 2 bản copy của redo log nằm trên các đĩa khác nhau.

Các thông tin trong redo log files được dùng để phục hồi dữ liệu từ hệ thống trong trường hợp ví dụ khi các dữ liệu trong bộ nhớ chưa kịp ghi vào datafiles thì mất điện, khi này, dữ liệu sẽ được phục hồi khi database được mở lại. Bằng việc sử dụng các thông tin trong redo log file gần nhất ta có thể khôi phục dữ liệu trở vê thời gian khi mất điện xảy ra.

Quá trình khôi phục này được gọi là rolling forward.

Bên cạnh các loại trên còn có Archive log files, Parameter files, Alert and Trace log files và Backup files. Các loại files này sẽ được đề cập đến trong các bài khác có liên quan.