Qui Truong

Ngày Đăng:

30/03/2023 13:42

Ngày Cập Nhật:

30/03/2023 13:42

Tác giả: Qui Truong
Ngày đăng: 30/03/2023 13:42

Bài viết "Các trạng thái khởi động và shutdown trong Oracle Database Instance" là một trong những bài viết quan trọng trong loạt bài viết về kiến thức Oracle Database. Bài viết cung cấp cho người đọc kiến thức cơ bản về các trạng thái khởi động và shutdown trong Oracle Database Instance, giúp họ hiểu rõ hơn về quá trình này và áp dụng vào công việc của mình.

Việc hiểu được các trạng thái này rất quan trọng đối với những người làm việc trong lĩnh vực quản trị cơ sở dữ liệu, đặc biệt là trong môi trường sản xuất. Nắm vững kiến thức này sẽ giúp người quản trị có thể đảm bảo an toàn cho dữ liệu, đồng thời giúp họ dễ dàng thực hiện các hoạt động bảo trì, nâng cấp và khắc phục sự cố cho hệ thống.

Ngoài ra, bài viết cũng có tính ứng dụng cao, giúp người đọc nắm vững kiến thức và kỹ năng cần thiết để thực hiện các thao tác cơ bản như khởi động và shutdown hệ thống, đồng thời hỗ trợ trong việc chuẩn bị cho các kỳ thi chứng chỉ Oracle như OCA hoặc OCP.

Vì vậy, bài viết này sẽ là tài liệu hữu ích cho những ai muốn học và nâng cao kiến thức về Oracle Database Instance, đặc biệt là cho các quản trị viên cơ sở dữ liệu.

Giới thiệu về Oracle Database Instance và tầm quan trọng của việc hiểu các trạng thái khởi động và shutdown trong hệ thống

Oracle Database Instance là một phần mềm quản lý cơ sở dữ liệu rất phổ biến được sử dụng trên toàn thế giới. Nó được sử dụng để quản lý dữ liệu và hỗ trợ các ứng dụng kinh doanh quan trọng của các doanh nghiệp lớn và nhỏ. Việc hiểu các trạng thái khởi động và shutdown trong Oracle Database Instance là rất quan trọng để đảm bảo sự ổn định và hiệu suất của hệ thống.

Trong quá trình khởi động, Oracle Database Instance sẽ trải qua một loạt các trạng thái khác nhau, từ trạng thái NOMOUNT đến trạng thái MOUNT và sau đó đến trạng thái OPEN. Mỗi trạng thái này đều có một nhiệm vụ cụ thể, đảm bảo hệ thống được khởi động một cách ổn định và đúng cách.

Trong khi đó, shutdown của Oracle Database Instance cũng là một quá trình quan trọng, đảm bảo dữ liệu được lưu trữ một cách an toàn và giúp người quản trị có thể thực hiện các tác vụ bảo trì và nâng cấp hệ thống một cách dễ dàng và hiệu quả. Việc hiểu các loại shutdown khác nhau và cách thực hiện shutdown một cách đúng đắn là rất cần thiết để đảm bảo hệ thống hoạt động ổn định và không bị mất dữ liệu quan trọng.

Vì vậy, hiểu rõ các trạng thái khởi động và shutdown trong Oracle Database Instance là điều rất quan trọng đối với các quản trị viên cơ sở dữ liệu. Nắm vững kiến thức này sẽ giúp họ có thể đảm bảo an toàn cho dữ liệu, đồng thời giúp họ dễ dàng thực hiện các hoạt động bảo trì, nâng cấp và khắc phục sự cố cho hệ thống.

Các trạng thái khởi động và shutdown trong Oracle Database Instance

Khởi động Oracle Database Instance: NOMOUNT

start up an oracle database instance nomount

Cơ sở dữ liệu và instance của database sẽ trải qua các giai đoạn khi cơ sở dữ liệu sẵn sàng cho người dùng truy cập. Instance của cơ sở dữ liệu được khởi động, cơ sở dữ liệu được mount và sau đó cơ sở dữ liệu được open.

Instance thường chỉ được khởi động ở chế độ NOMOUNT trong quá trình tạo cơ sở dữ liệu, trong quá trình tạo lại các control file hoặc trong một số tình huống sao lưu và phục hồi(backup và recovery).

Khi instance được khởi động, các hoạt động sau sẽ được thực hiện:

  1. Tìm kiếm tập tin có tên cụ thể trong thứ tự sau trong thư mục $ ORACLE_HOME / dbs: 
    • Tìm kiếm tập tin spfile <SID>.ora
    • Nếu không tìm thấy spfile <SID>.ora, tìm kiếm tập tin spfile.ora
    • Nếu không tìm thấy spfile.ora, tìm kiếm tập tin init <SID>.ora (đây là tập tin chứa các tham số khởi tạo cho instance. Tham số PFILE được chỉ định với STARTUP để ghi đè lên hành vi mặc định)
  2. Phân bổ SGA (Shared Global Area)
  3. Khởi động các tiến trình nền(Background Processes)
  4. Mở tập tin alert_ <SID>.log và các tập tin trace

Lưu ý: SID là ID hệ thống, xác định tên instance (ví dụ: ORCL)

Ở chế độ NOMOUNT, không có ai được phép truy cập vào database. Trạng thái này chỉ được sử dụng trong một số tình huống nhất định, chẳng hạn như khi tạo mới database hoặc thực hiện một số tác vụ như tái tạo control file hoặc khôi phục dữ liệu.

Khởi động Oracle Database Instance: MOUNT

start up an oracle database instance mount

Việc mount một database bao gồm các bước sau:

  1. Kết nối database với instance đã khởi động trước đó.
  2. Xác định và mở tất cả các control files được chỉ định trong parameter file.
  3. Đọc các control files để lấy tên và trạng thái của các data files và các redo log file đang online. (Tuy nhiên, không có kiểm tra nào được thực hiện để xác minh sự tồn tại của các data file và redo log file đang online tại thời điểm này.)

Để thực hiện các hoạt động bảo trì cụ thể, hãy khởi động một instance và mount một database, nhưng không Open database. Ví dụ trường hợp database phải được mount nhưng không được Open trong các tác vụ sau:

  • Đổi tên các data file. (Các data file cho tablespace offline có thể được đổi tên khi database đang mở.)
  • Enabling và Disabling cho tùy chọn lưu trữ online redo log file.
  • Thực hiện phục hồi toàn bộ database.

Lưu ý: Một database có thể được giữ ở trạng thái MOUNT ngay cả khi yêu cầu Open đã được thực hiện. Điều này có thể là do database cần được khôi phục một cách nào đó. Nếu phục hồi được thực hiện trong trạng thái MOUNT, các redo log được mở để đọc và các data file cũng được mở để đọc các Blocks cần phục hồi và ghi các Blocks nếu cần thiết trong quá trình phục hồi.


Ở chế độ khởi động MOUNT, chỉ những nhóm user có quyền SYSDBA hoặc SYSOPER mới có thể truy cập vào database. Các user khác không thể kết nối vào database cho đến khi nó được OPEN trong chế độ khởi động NORMAL. Tuy nhiên, khi database ở chế độ MOUNT, ta có thể thực hiện được một số thao tác bảo trì như đổi tên file dữ liệu, kích hoạt và vô hiệu hóa tính năng lưu trữ online redo log.

Khởi động Oracle Database Instance: OPEN

start up an oracle database instance open

Một hoạt động bình thường của cơ sở dữ liệu có nghĩa là một instance được khởi động và cơ sở dữ liệu được MOUNT và OPEN. Với một hoạt động cơ sở dữ liệu bình thường, bất kỳ người dùng hợp lệ nào cũng có thể kết nối vào cơ sở dữ liệu và thực hiện các hoạt động truy cập dữ liệu cụ thể.


OPEN cơ sở dữ liệu bao gồm các bước sau:

  1. Mở các tập tin dữ liệu(OPEN data files)
  2. Mở các tập tin redo log online

Nếu bất kỳ tập tin dữ liệu hoặc tập tin redo log online nào không có mặt khi bạn cố gắng mở cơ sở dữ liệu, Oracle server sẽ trả về lỗi.


Trong giai đoạn cuối này, Oracle server xác minh rằng tất cả các data file và tập tin redo log online có thể được mở và kiểm tra tính nhất quán của cơ sở dữ liệu. Nếu cần thiết, tiến trình nền System Monitor (SMON) khởi động phục hồi instance.


Bạn có thể khởi động một instance cơ sở dữ liệu trong chế độ hạn chế để chỉ các người dùng Oracle Database có quyền hệ thống RESTRICTED SESSION mới có thể kết nối vào cơ sở dữ liệu.

Ví dụ về cách khởi động Oracle Database Instance

start up an oracle database instance open examples

Trong hình trên, mô tả về cú pháp thực hiện khởi động Oracle Database Instance:

  1. Lệnh này khởi động instance, liên kết các tập tin cơ sở dữ liệu với instance, mount và mở cơ sở dữ liệu.
  2. Lệnh này khởi động instance và cơ sở dữ liệu không được mount.
  3. Lệnh này mount cơ sở dữ liệu từ trạng thái NOMOUNT.
  4. Lệnh này mở cơ sở dữ liệu từ trạng thái MOUNT.

Khi cơ sở dữ liệu được kích hoạt với Oracle Restart, tiện ích Server Control (SRVCTL) có thể được sử dụng để khởi động instance của cơ sở dữ liệu. Tiện ích SRVCTL có lợi thế là cũng có thể khởi động tất cả các tài nguyên phụ thuộc cần thiết như instance ASM, các nhóm đĩa ASM và listener.

Các loại shutdown trong Oracle Database Instance

Shutdow mode Oracle Database Instance

Shutdown Oracle Database Instance: ABORT

Chế độ Shutdown ABORT là chế độ dừng hoạt động của một instance của Oracle Database một cách nhanh chóng và không an toàn. Khi sử dụng chế độ này, Oracle Database sẽ không thực hiện các bước cần thiết để đảm bảo rằng các transaction được commit hoặc rollback đúng cách.


Thay vào đó, Oracle sẽ đóng ngay lập tức các kết nối tới database mà không cần thông báo đến các session đang chạy. Kết quả là, nếu một transaction đang được thực hiện, dữ liệu có thể bị mất hoặc bị hỏng, và bất kỳ session nào đang truy cập database đều sẽ bị ngắt kết nối một cách bất ngờ.


Do đó, Shutdown ABORT thường chỉ được sử dụng khi không có lựa chọn nào khác để dừng instance, và chỉ nên được sử dụng khi hoàn toàn cần thiết. Khi khởi động lại instance sau khi sử dụng chế độ này, bạn sẽ cần phải thực hiện một quá trình khôi phục để đảm bảo tính toàn vẹn của database.

Shutdow mode Oracle Database Instance

Khởi động Oracle Database Instance: IMMEDIATE

Chế độ Shutdown IMMEDIATE là một trong các chế độ shutdown trong hệ thống quản lý cơ sở dữ liệu Oracle. Khi sử dụng chế độ này, quản trị viên sẽ yêu cầu hệ thống ngừng hoạt động và ngắt kết nối với các phiên làm việc hiện tại một cách nhanh chóng, đồng thời hoàn tất các giao dịch đang chưa commit.

Trong quá trình thực hiện chế độ Shutdown IMMEDIATE, hệ thống sẽ thông báo với tất cả các phiên làm việc đang hoạt động trong hệ thống để kết thúc phiên làm việc của họ một cách ngay lập tức. Sau đó, hệ thống sẽ rollback tất cả các giao dịch đang chưa commit. Việc rollback này có thể mất một khoảng thời gian tương đối dài tùy thuộc vào số lượng giao dịch đang chưa commit.

Chế độ Shutdown IMMEDIATE thường được sử dụng khi quản trị viên muốn nhanh chóng dừng hoạt động hệ thống Oracle, nhưng vẫn muốn đảm bảo tính toàn vẹn của cơ sở dữ liệu. Tuy nhiên, việc sử dụng chế độ này cần cẩn thận, đặc biệt là trong trường hợp có các phiên làm việc quan trọng đang chạy trong hệ thống, bởi vì các giao dịch của những phiên này có thể bị rollback, gây mất mát dữ liệu hoặc làm hỏng các dữ liệu trong hệ thống.

Khởi động Oracle Database Instance: TRANSACTIONAL

Shutdow mode Oracle Database Instance

Chế độ shutdown TRANSACTIONAL là chế độ tắt cơ sở dữ liệu cho phép các giao dịch hiện có hoàn thành, nhưng không cho phép các giao dịch mới bắt đầu. Khi bạn chọn chế độ này, các kết nối đến cơ sở dữ liệu vẫn được chấp nhận và các phiên làm việc đang chạy vẫn có thể thực hiện các câu lệnh SQL. Tuy nhiên, nếu một phiên làm việc cố gắng khởi động một giao dịch mới thì sẽ gặp lỗi và bị từ chối.

Trong quá trình tắt cơ sở dữ liệu ở chế độ TRANSACTIONAL, Oracle sẽ thông báo cho tất cả các phiên làm việc đang chờ để kết thúc hoặc commit các giao dịch đang chạy. Khi tất cả các giao dịch đang chạy được hoàn thành, Oracle sẽ chấm dứt tất cả các kết nối đến cơ sở dữ liệu.


Một số lưu ý khi sử dụng chế độ shutdown TRANSACTIONAL:

  • Nếu một giao dịch đang chạy trong một phiên làm việc rất lâu hoặc bị treo (deadlock), quá trình shutdown có thể kéo dài rất lâu và không hoàn thành được.
  • Bạn không thể khởi động các giao dịch mới trong quá trình tắt cơ sở dữ liệu ở chế độ này.
  • Nếu một phiên làm việc đã bị giết chết (kill), quá trình shutdown có thể bị treo vì Oracle đang chờ phiên làm việc kết thúc hoặc rollback giao dịch.

Chế độ shutdown TRANSACTIONAL thường được sử dụng trong các trường hợp muốn đảm bảo rằng tất cả các giao dịch hiện có được hoàn thành một cách an toàn và đồng bộ trước khi tắt cơ sở dữ liệu, nhưng không muốn chặn đứng toàn bộ hệ thống ngay lập tức như chế độ shutdown ABORT.

Khởi động Oracle Database Instance: NORMAL

Chế độ shutdown NORMAL(Chế độ Shutdown Oracle Database mặc định) là chế độ chờ đợi các session ngắt kết nối với cơ sở dữ liệu một cách tự nguyện trước khi đóng cơ sở dữ liệu.

Khi sử dụng chế độ này, Oracle sẽ dừng các thread đọc và ghi, đóng các file redo, và cho phép tất cả các user kết nối hiện tại thực hiện các câu lệnh SQL cuối cùng của họ và ngắt kết nối.

Tuy nhiên, chế độ này sẽ tiêu tốn thời gian đợi, do đó không phải là chế độ shutdown được sử dụng phổ biến.

Chế độ này cũng có thể được sử dụng để giảm thiểu số lượng lưu lượng hoạt động trên cơ sở dữ liệu trước khi tắt nó.

Thời gian shutdown của các chế độ shutdown được liệt kê theo thứ tự từ nhanh nhất đến chậm nhất như sau:

  1. ABORT: Là chế độ shutdown nhanh nhất, chỉ thực hiện ít công việc trước khi tắt cơ sở dữ liệu. Do đó, thời gian shutdown ở chế độ này là rất nhanh. Tuy nhiên, khi khởi động lại cơ sở dữ liệu, phải thực hiện phục hồi (recovery) trước khi bắt đầu hoạt động lại.
  2. IMMEDIATE: Là chế độ shutdown phổ biến nhất và thường được sử dụng. Trong chế độ này, các giao dịch chưa được xác nhận (uncommitted transactions) sẽ được rollback. Nó sẽ chờ cho tất cả các session kết thúc trước khi tắt cơ sở dữ liệu.
  3. TRANSACTIONAL: Là chế độ cho phép các giao dịch đang tồn tại hoàn thành, nhưng không cho phép bắt đầu giao dịch mới. Chế độ này sẽ chờ cho tất cả các transaction đang chạy kết thúc trước khi tắt cơ sở dữ liệu.
  4. NORMAL: Là chế độ chậm nhất trong các chế độ shutdown, nó sẽ chờ cho tất cả các session kết thúc hoặc ngắt kết nối trước khi tắt cơ sở dữ liệu.

Tổng thời gian shutdown của mỗi chế độ tùy thuộc vào số lượng session và transaction đang chạy trên cơ sở dữ liệu. Tuy nhiên, thời gian shutdown sẽ tăng theo thứ tự từ ABORT đến NORMAL.


Do đó, nếu cần tắt cơ sở dữ liệu một cách nhanh chóng, chế độ ABORT là lựa chọn tốt nhất, nhưng nó sẽ đòi hỏi phục hồi cơ sở dữ liệu khi khởi động lại. Chế độ IMMEDIATE thường được sử dụng trong hầu hết các trường hợp, vì nó có thể tắt cơ sở dữ liệu an toàn mà không cần phục hồi.


Chế độ TRANSACTIONAL và NORMAL sẽ tốn thời gian hơn, nhưng cho phép các giao dịch được hoàn thành một cách an toàn trước khi tắt cơ sở dữ liệu.

Ví dụ về Shutdown Oracle Database Instance

Shutdow mode Oracle Database Instance

Hình trên cho thấy các ví dụ sử dụng cả SQL*Plus và tiện ích SRVCTL để tắt cơ sở dữ liệu:

  1. Lệnh này khởi động quá trình shutdown bình thường. Cơ sở dữ liệu sẽ không tắt cho đến khi tất cả
    người dùng tự đăng xuất.
  2. Lệnh này khởi động quá trình shutdown transactional. Cơ sở dữ liệu sẽ không tắt cho đến khi tất cả
    các giao dịch hiện tại tự hoàn thành.
  3. Lệnh này khởi động quá trình Shutdown ngay lập tức. Các giao dịch chưa xác nhận sẽ bị Rollback lại.
  4. Lệnh này khởi động quá trình shutdown bất thường.

Khi cơ sở dữ liệu được kích hoạt với Oracle Restart, tiện ích SRVCTL có thể được sử dụng để tắt
cơ sở dữ liệu.

Chia sẽ bài viết này

{"email":"Email address invalid","url":"Website address invalid","required":"Required field missing"}

Qui Truong

Thông tin tác giả:

Xin chào mọi người, mình là Qui Trương. Hiện tại, ngoài công việc là một DBA thì mình còn là một người sáng tạo nội dung trên trang blog caitrang.com. Mỗi ngày, mình luôn tìm kiếm cách để chia sẻ những nội dung độc đáo, ý nghĩa và mang tính cảm hứng tới mọi người. Mình tin rằng qua từng dòng viết, mình có thể kết nối và tạo dựng một cộng đồng đọc giả thú vị và ý nghĩa.

Page [tcb_pagination_current_page] of [tcb_pagination_total_pages]

>