Phương pháp tắt máy của Oracle


9

Tắt cơ sở dữ liệu trước khi thực hiện nâng cấp hoặc vá lỗi có thể được thực hiện theo nhiều cách.

shutdown immediate;

hoặc là

shutdown abort;
startup restrict;
shutdown immediate;

hoặc là

shutdown abort;
startup restrict;
shutdown;

hoặc là

alter system checkpoint;
shutdown abort;
startup restrict;
shutdown immediate;

Tất nhiên có những lựa chọn khác là tốt. Mà nên được ưu tiên và tại sao?

Câu trả lời:


12

Mục đích khi tắt để bảo trì (hoặc sao lưu lạnh) là cơ sở dữ liệu được để ở trạng thái nhất quán mà không cần phải khôi phục / khôi phục khi khởi động.

Có 3 lệnh SQL * Plus shutdownđạt được điều này trên lý thuyết, tất cả đều ngăn chặn ngay các phiên mới kết nối với thể hiện:

  1. shutdown normalhoặc chỉ shutdown: chờ tất cả các phiên để ngắt kết nối. Chế độ này hiếm khi được sử dụng trong thực tế vì nó phụ thuộc vào các máy khách hoạt động tốt không để các kết nối mở. Đây từng là shutdownchế độ duy nhất không hủy giao dịch đang chạy.
  2. shutdown transactional: ngắt kết nối các phiên một khi hiện đang chạy giao dịch hoàn tất, ngăn chặn các giao dịch mới bắt đầu.
  3. shutdown immediate: ngắt kết nối tất cả các phiên ngay lập tức và khôi phục các giao dịch bị gián đoạn trước khi tắt. Lưu ý rằng việc ngắt kết nối là ngay lập tức, nhưng việc tắt máy có thể không xảy ra vì mọi giao dịch bị gián đoạn có thể mất thời gian để khôi phục.

Chế độ thứ tư của shutdownshutdown abort. Điều này giống như kéo dây nguồn - ví dụ dừng ngay bây giờ mà không cần dọn dẹp. Bạn thường muốn đưa cơ sở dữ liệu trở lại sau đó và tắt sạch ngay lập tức sau đó như trong ví dụ của bạn. Hướng dẫn khái niệm nói :

Chế độ này dành cho các tình huống khẩn cấp, chẳng hạn như khi không có hình thức tắt máy nào khác thành công.

Tất cả các ví dụ bạn đưa ra thực hiện một trạm kiểm soát như một phần của shutdown [normal]hoặc shutdown immediatecheckpointing nên rõ ràng là có lẽ là để giảm thời gian cần thiết cho việc phục hồi .

lời khuyên chung:

  • Không sử dụng shutdown normal.
  • Chỉ sử dụng shutdown transactional cho tắt máy đã tham dự , khi bạn muốn giảm thiểu các giao dịch bị hủy (chỉ tham dự vì loại tắt máy này không được đảm bảo để tắt cơ sở dữ liệu nếu thời gian chờ bị vi phạm).
  • Sử dụng shutdown immediatecho tắt máy không giám sát hoặc khi bạn không quan tâm đến các giao dịch hiện đang chạy.
  • Không sử dụng shutdown abort(cộng với khởi động / tắt máy) trừ khi bạn phải - điều này phổ biến hơn trong các phiên bản trước đó của Oracle mà ngày nay. Trong các tình huống khác (không phải vá / nâng cấp), nếu bạn có nhu cầu giảm thiểu thời gian chết , chế độ này có thể phù hợp.

Bạn có thể cung cấp thêm chi tiết cụ thể về những nhược điểm của shutdown abort? Chơi nhân vật phản diện, nếu chúng ta có thể tin tưởng Oracle sẽ phục hồi chính xác khi mất điện, chúng ta có nên tin tưởng nó trong một shutdown abort, đặc biệt là nếu nó nhanh hơn và chúng ta sẽ ngay lập tức làm một startup restrictvà một shutdown immediate? Nói cách khác, có những sự thật chúng ta có thể thấy để sao lưu cảnh báo nghiêm trọng của Oracle chống lại shutdown abort?
Leigh Riffel

@Leigh - Mối nguy hiểm cụ thể duy nhất tôi biết liên shutdown abortquan đến việc sao lưu ngẫu nhiên các nhật ký trực tuyến nhưng đó chỉ là trong trường hợp sau đó bạn không thực hiện tắt máy. Nếu bạn biết những gì bạn đang làm tôi nghĩ rằng shutdown abortcó thể được coi là hoàn toàn an toàn - và tôi không chắc chắn nếu đếm vị trí của Oracle như là một "cảnh báo nghiêm trọng" ;-)
Jack nói thử topanswers.xyz

3

Tôi thích phương thức hủy bỏ tắt máy bởi vì đó là cách nhanh nhất để đưa cơ sở dữ liệu xuống. có một số thao tác không thể thực hiện được sau khi hủy bỏ máy, ví dụ

  • tạo lại controlfile cơ sở dữ liệu bằng cách tạo các resetlog của controlfile (để đổi tên cơ sở dữ liệu, đổi tên các logfiles của để đổi tên các tệp dữ liệu)
  • thay đổi dbid bằng thủ tục từ dbms_backup_restore (đây là phương thức duy nhất trong 8i để thay đổi dbid)

trong cả hai trường hợp, cơ sở dữ liệu đã bị hỏng và phải được khôi phục từ fullbackup.

kể từ 9i, việc đổi tên cơ sở dữ liệu hoặc thay đổi dbid có thể được thực hiện với tiện ích dbnewid . theo như tôi biết thì tiện ích sẽ kiểm tra xem cơ sở dữ liệu đã tắt đúng chưa. đổi tên các tệp dữ liệu, tempfiles và logfiles có thể được thực hiện bằng cách thực hiện các câu lệnh sql thích hợp mà không cần tạo lại controlfile.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.