Mục lục

1. Đây là một bài viết cực kỳ quan trọng.

Việc bật tắt database có thể bạn đã không còn xa lạ gì. Tuy nhiên nếu bạn hiểu được rằng sau mỗi lệnh bật/tắt, database thực sự làm những việc gì phía sau, điều đó sẽ giúp tăng kỹ năng phán đoán lỗi và khoanh vùng vấn đề của bạn mỗi khi database có sự cố. Đây là một kỹ năng rất quan trọng mà mọi DBA phải có.

Ok, chúng ta sẽ bắt đầu tìm hiểu nhé.

Đầu tiên chúng ta sẽ bắt đầu từ bước khởi động database. Tức là đưa database từ trạng thái shutdown (hay tắt hoàn toàn) lên trạng thái open (trạng thái hoạt động đầy đủ, cho phép người dùng có thể truy cập và thao tác với dữ liệu trong database).

Lệnh để khởi động database là:

startup

Khi chạy lệnh này, Oracle database sẽ được đưa qua lần lượt các trạng thái: Shutdown –>  No mount –> Mount –> Open.

Chúng ta sẽ cùng lần lượt tìm hiểu ý nghĩa và vai trò của từng trạng thái ở phần tiếp theo

 

2. Trạng thái Close

Không có gì để nói nhiều, đây là trạng thái database hoàn toàn không hoạt động.

 

3. Trạng thái No mount

Khi bạn gõ lệnh startup, database từ trạng thái Close sẽ bắt đầu chuyển sang trạng thái No mount .

Ở trạng thái này, Oracle sẽ tìm file tham số khởi tạo.

Nó còn có tên gọi khác là parameter file, pfile hay spfile ( Sự khác nhau của pfile và spfile tôi sẽ trình bày ở một bài viết khác). Ở bài viết này tôi cứ gọi chung là parameter file cho ngắn gọn nhé

Parameter file là 1 file chứa các tham số quy định nhiều hoạt động hay thành phần trong database.

VD: Một vài tham số như:

  • control_files: Quy định đường dẫn đến control file
  • memory_target: Quy định kích thước Memory được cấp phát cho database instance.
  • db_files: Quy định số lượng tối đa của data file trong database
  • processes: Quy định số lượng tối đa các tiến trình trong database.
Đọc thêm  Review công cụ quản trị PostgreSQL - DBeaver

Như vậy, sau khi Oracle tìm thấy và đọc xong Parameter file, nó sẽ bắt đầu khởi tạo Memory và khởi động các process dựa trên các tham số cấu hình mà nó đã đọc được.

Xong xuôi, database hoàn thành trạng thái No mount và đi lên trạng thái tiếp theo.

Bạn sẽ thấy màn hình sẽ xuất hiện như sau khi database đã No mount thành công.

SQL> startup
ORACLE instance started.

Total System Global Area 88080384 bytes
Fixed Size               1217836 bytes
Variable Size            79694548 bytes
Database Buffers         4194304 bytes
Redo Buffers             2973696 bytes

 

4. Trạng thái Mount

Trạng thái tiếp theo là Mount. Ở trạng thái này, Oracle Database sẽ đi tìm control file và đọc nó.

Vậy làm sao nó biết được control file nằm ở đâu? Bạn đoán xem

Chính là từ tham số control_files mà nó đã đọc ra từ parameter file ở trạng thái No mount trước đó đấy. Rất logic phải không?

Trong control file có các thông tin điều khiển của database, nhưng quan trọng nhất bao gồm các thông tin sau:

  • Đường dẫn đến các datafile
  • Đường dẫn đến các redo log file
  • Thông tin checkpoint

Các thông tin về đường dẫn và redo log file thì cần thiết là rõ rồi. Tuy nhiên, thông tin checkpoint là gì, chúng ta sẽ cùng tìm hiểu ở phần tiếp theo.

Sau khi đã đọc xong control file, database đã hoàn thành trạng thái Mount và bắt đầu đi lên trạng thái Open.

Màn hình có thể sẽ trông giống như sau:

SQL> startup 
ORACLE instance started. 
Total System Global Area 88080384 bytes 
Fixed Size               1217836 bytes 
Variable Size            79694548 bytes 
Database Buffers         4194304 bytes 
Redo Buffers             2973696 bytes
Database mounted.

5. Trạng thái Open

Trạng thái cuối cùng trong toàn bộ quá trình khởi động đó là Open.

Đọc thêm  Ý nghĩa của Redo Log, Undo Data và Flashback Log

Bắt đầu trạng thái open, Database sẽ đi tìm kiếm các datafile dựa trên thông tin về đường dẫn đến các datafile (đã đọc được từ control file ở trạng thái Mount trước đó).

Sau đó, nó sẽ kiểm tra header của các datafile này để tìm kiếm thông tin checkpoint.

Tiếp theo, nó sẽ so khớp thông tin checkpoint mà nó tìm được ở datafile với thông tin checkpoint ở control file.

  • Nếu 2 thông tin này trùng khớp, database sẽ hoàn tất trạng thái opensẵn sàng mở cho các kết nối đi vào.
  • Còn nếu thông tin checkpoint giữa datafile và control file không trùng khớp, database sẽ hiểu là “database gặp trục trặc rồi” và nó sẽ tìm đến các redo log file (đường dẫn redo log cũng có trong control file). Một tiến trình sẽ làm nhiệm vụ gọi là instance recovery. Nó sẽ khôi phục lại database từ thông tin được lưu trong redo log. Quá trình này còn gọi là roll forward. Kết thúc quá trình này, checkpoint của datafile và control file là bằng nhau và database đã có thể open lên được rồi.

Màn hình khi database hoàn tất quá trình khởi động sẽ như sau:

SQL> startup 
ORACLE instance started. 
Total System Global Area 88080384 bytes 
Fixed Size               1217836 bytes 
Variable Size            79694548 bytes 
Database Buffers         4194304 bytes 
Redo Buffers             2973696 bytes 
Database mounted.
Database opened.
SQL>

 

6. Thảo luận

Như vậy là tôi đã cùng các bạn tìm hiểu xong về các pha khởi động trong Oracle Database. Tại sao ở đầu bài viết tôi lại nói, những kiến thức này sẽ giúp bạn tăng kỹ năng phán đoán lỗi và khoanh vùng vấn đề khi database gặp sự cố?

Đọc thêm  DBA học được gì từ Thần Điêu Đại Hiệp

Cùng kiểm chứng luôn nhé!

Giả sử bạn đã đọc kỹ phần trên bài viết của tôi và nắm được nội dung rồi. Vậy tôi đưa ra tình huống sau, bạn thử phán đoán xem lỗi có thể nằm tại đâu nhé

Tôi gõ lệnh startup để khởi động database thì bắt gặp lỗi sau:

SQL> startup
ORA-00845: MEMORY_TARGET not supported on this system

Chưa cần search google, bạn cũng đã thấy database còn chưa hoàn thành bước No mount, tức là ít nhất bạn cũng khoanh vùng được vấn đề đang nằm ở parameter file. Bạn sẽ không mất công đi kiểm tra control file, data file hay redo log file nữa.

Ok, hi vọng bài viết này đã giúp bạn hiểu rõ hơn về các bước Oracle sẽ thực hiện khi khởi động. Nếu bạn còn chưa hiểu rõ, bạn hãy để lại comment ở bên dưới bài viết này, hoặc tham gia vào group “Kho tài liệu kiến thức về Database” của tôi trên Facebook nhé

https://www.facebook.com/groups/khotailieukienthucdatabase

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
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
0
Rất thích suy nghĩ của bạn, hãy bình luận.x