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é
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.
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.
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 open và sẵ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ù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 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é.