Có thể có kịch bản khi giai đoạn chuyển tiếp không thành công. Có thể quay lại trạng thái cắt trước đó (khôi phục bản vá), nếu cơ sở dữ liệu hồi tưởng được bật trong cơ sở dữ liệu hoặc chúng tôi đã sao lưu đầy đủ trước khi cắt bỏ
Tôi sẽ giải thích nó liên quan đến Database Flashback để quay lại bản vá
Tôi giả sử ở đây chúng tôi đã bật Flashback trong cơ sở dữ liệu. Chúng tôi có thể xác nhận rằng bằng cách sử dụng lệnh
SQL> chọn FLASHBACK_ON từ v $ cơ sở dữ liệu;
FLASHBACK_ON
------------
Có
Bạn có thể tìm hiểu thêm về cơ sở dữ liệu Flashback trong các liên kết bên dưới
Flashback Cơ sở dữ liệu Oracle
Cách Flashback khi chúng ta có thẻ dữ liệu
Chúng tôi khuyến nghị giai đoạn cắt bỏ Bản vá trực tuyến nên được lên lịch vào thời điểm khi có ít giao dịch trực tuyến và quá trình xử lý hàng loạt là tối thiểu. Bạn nên xác nhận rằng các yêu cầu quan trọng đồng thời không thực hiện trong quá trình chuyển đổi. Bạn cũng nên xem xét việc tạm dừng các yêu cầu đồng thời đã lên lịch trước khi thực hiện quá trình chuyển đổi vì nếu không giai đoạn chuyển tiếp sẽ đợi chương trình hoàn thành và bạn sẽ mất dữ liệu giao dịch trong trường hợp hồi tưởng
Hãy để chúng tôi xem xét Trường hợp sự cố
Trường hợp 1
Bạn đang chạy một chu kỳ vá trực tuyến:
$ accept phase =chuẩn bị
$ giai đoạn áp dụng =áp dụng các bản vá =99999999
$ giai đoạn tiếp nhận =cuối cùng
$ giai đoạn tiếp nhận =cutover
Quá trình chuyển đổi không thành công và bạn cần quay lại trạng thái của hệ thống trước khi chạy giai đoạn chuyển đổi.
Nếu bạn chưa chạy giai đoạn cắt bỏ, bạn sẽ có thể quay trở lại quy trình ứng dụng bản vá bằng cách chạy giai đoạn hủy bỏ áp dụng. Tuy nhiên, điều này không thể thực hiện được sau khi chạy quá trình cắt.
Có hai phần chính để khôi phục bản vá:
(1) Khôi phục cơ sở dữ liệu :Cơ sở dữ liệu hồi lưu là phương pháp nhanh nhất để khôi phục các thay đổi của cơ sở dữ liệu và quay trở lại thời điểm. Chúng tôi cũng có thể sử dụng kỹ thuật khôi phục cơ sở dữ liệu nhưng điều đó rất tốn thời gian
Nhấp nháy Quay lại cơ sở dữ liệu
a). Đầu tiên, tắt cơ sở dữ liệu, sau đó khởi động nó ở trạng thái gắn kết:
SQL> tắt máy ngay lập tứcb). Khôi phục hồi tưởng về thời gian đã định.
SQL> cơ sở dữ liệu hồi tưởng về thời gian đến dữ liệu (c). Khởi động cơ sở dữ liệu ở chế độ chỉ đọc:
SQL> thay đổi cơ sở dữ liệu mở chỉ đọc; Cơ sở dữ liệu đã thay đổi. Kiểm tra xem tất cả có như mong đợi không.d). Tắt cơ sở dữ liệu, khởi động nó ở trạng thái gắn kết, sau đó mở nó bằng tùy chọn resetlog:
SQL> tắt ngay lập tức
2) Khôi phục hệ thống tệp :Tùy thuộc vào thời điểm chuyển đổi không thành công, bạn cũng có thể cần khôi phục hệ thống tệp cấp ứng dụngKhôi phục hệ thống tệp
Việc bạn có cần thực hiện bước này hay không là có điều kiện, tùy thuộc vào việc chuyển đổi có thất bại trước khi chuyển hệ thống tệp hay không. Bạn có thể xác định trường hợp nào áp dụng trong số những trường hợp này bằng cách tham khảo nhật ký tóm tắt trong $ NE_BASE / EBSapps / log / allow /
/ cutover_ / để biết id phiên hiện tại của bạn. Trường hợp 1 - Nếu thông báo nhật ký cho biết rằng quá trình cắt không thành công trước khi chuyển đổi hệ thống tệp, hãy tắt hoàn toàn mọi dịch vụ đang chạy. Sau đó, khởi động lại tất cả các dịch vụ bằng cách sử dụng tập lệnh khởi động bình thường,
Trường hợp 2 - Nếu thông báo nhật ký cho biết rằng quá trình cắt không thành công sau khi chuyển đổi hệ thống tệp, thì hãy làm theo bước dưới đây để chuyển hệ thống tệp trở lại.
(a) Tắt các dịch vụ bắt đầu từ hệ thống tệp mới chạy
1. Nguồn môi trường trên hệ thống tệp mới chạy.
2.Từ $ ADMIN_SCRIPTS_HOME, tắt tất cả các dịch vụ (sử dụng adstpall .sh trên UNIX).
(b) Trong môi trường nhiều nút, lặp lại hai bước trước đó trên tất cả các nút, rời khỏi nút quản trị cho đến sau tất cả các nút phụ.(c) Chuyển hệ thống tệp trở lại
Trên tất cả các nút nơi hệ thống tệp đã được chuyển đổi, hãy chạy lệnh sau để chuyển hệ thống tệp trở lại:$ perl $ AD_TOP / patch / 115 / bin / txkADOPCutOverPhaseCtrlScript.pl \ -action =ctxupdate \ -contextfile =<đường dẫn đầy đủ đến tệp ngữ cảnh chạy mới> \ -patchcontextfile =<đường dẫn đầy đủ đến tệp ngữ cảnh hệ thống tệp vá mới> \ -outdir =<đường dẫn đầy đủ đến thư mục ngoài>(d) Khởi động tất cả các dịch vụ từ hệ thống tệp đang chạy cũ (sử dụng adstrtal.sh trên UNIX).
(e) Trong môi trường nhiều nút, lặp lại hai bước trước trên tất cả các nút, bắt đầu với nút quản trị và sau đó tiếp tục đến các nút phụKết luận
Sau khi quá trình khôi phục hoàn tất, bạn có hai tùy chọn cơ bản để tiếp tục:
(a) Hủy chu kỳ vá lỗi hiện tại, nếu vấn đề yêu cầu bạn khôi phục là do các bản vá lỗi bạn đang cố gắng áp dụng.Đây là các bước để hủy bỏ một chu kỳ vá trực tuyến
Nếu một chu kỳ vá lỗi không thành công và sự cố không thể được giải quyết nhanh chóng, bạn có thể hủy bỏ chu kỳ vá lỗi và quay lại hoạt động thời gian chạy bình thường. Phiên bản vá lỗi sẽ bị loại bỏ.
Bạn có thể bỏ qua một chu kỳ vá (mà không cần áp dụng bất kỳ bản vá nào) bằng cách chạy lệnh:
$ accept phase =abortViệc hủy bỏ một chu kỳ vá sẽ làm mất phiên bản vá, nhưng sau đó bạn phải chạy các giai đoạn dọn dẹp và fs_clone trước khi bắt đầu một chu kỳ vá mới. Quá trình dọn dẹp phải là một lần dọn dẹp toàn bộ.
Ví dụ:
giai đoạn áp dụng $ =chuẩn bị
giai đoạn áp dụng $ =áp dụng các bản vá =9999999
$ giai đoạn tiếp nhận =hủy bỏ
$ giai đoạn tiếp nhận =cleanup cleanup_mode =full
$ giai đoạn tiếp nhận =fs_cloneTheo tùy chọn, bạn có thể kết hợp các lệnh hủy bỏ và dọn dẹp như sau:
$ accept phase =abort, cleanup cleanup_mode =full(b) Xác định và khắc phục bất kỳ sự cố nào khác trong chu kỳ vá lỗi hiện tại và tiến hành vá lỗi.