Tiết kiệm ORA-03113: cuối tập tin trên kênh liên lạc


22

Tôi đã đọc các bài đăng ở đây, trên bộ phận hỗ trợ của Oracle và bất cứ nơi nào khác tôi có thể tìm thấy trong ba ngày qua và tôi đã từ bỏ vấn đề này ...

Một cơ sở dữ liệu Oracle treo. Tắt cơ sở dữ liệu ngồi trong một vài giờ và sau đó nó thoát. Nó sẽ không khởi động lại. Máy chủ đã được khởi động lại. Oracle đã được khởi động lại. Đi từng bước: khởi động công việc danh nghĩa, thay đổi công việc gắn kết cơ sở dữ liệu, thay đổi trả về mở cơ sở dữ liệu ORA-03113. Đây là tất cả trên localhost - không qua mạng. Máy không có tường lửa của bất kỳ loại nào đang chạy.

Bất kỳ ý tưởng làm thế nào để vượt qua lỗi ORA-03113 này? Tôi đã nghe điện thoại với sự hỗ trợ ở Ấn Độ trong 4,5 giờ qua và tôi chưa tìm thấy ai hữu ích.


1
Đăng đoạn trích từ nhật ký cảnh báo với ALTER DATABASE OPENvà lỗi sau đó.
Mindaugas Riauba

1
Tìm kiếm (grep) tất cả các nhật ký cảnh báo giữa lần khởi động thành công cuối cùng và lần khởi động không thành công hiện tại và tìm kiếm ALTER HỆ THỐNG trong tất cả khoảng thời gian này. Có thể ai đó đã thay đổi một số tham số thể hiện theo cách không chuẩn.
kubanchot

Câu trả lời:


35

Sau nhiều giờ đánh giá sai từ hỗ trợ chính thức của Oracle, tôi đã tự mình khắc phục điều này và sửa nó. Tôi đang ghi lại nó ở đây trong trường hợp người khác gặp vấn đề này.

Để thực hiện bất kỳ điều này, bạn phải là người dùng tiên tri:

$ su - oracle

Bước 1: Bạn cần xem nhật ký cảnh báo. Nó không nằm trong / var / log như mong đợi. Bạn phải chạy một chương trình đọc nhật ký của Oracle:

$ adrci
ADRCI: Release 11.2.0.1.0 - Production on Wed Sep 11 18:27:56 2013
Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.
ADR base = "/u01/app/oracle"
adrci>

Lưu ý cơ sở ADR. Đó không phải là cài đặt. Bạn cần phải xem các ngôi nhà để bạn có thể kết nối với ngôi nhà mà bạn sử dụng.

adrci> show homes
ADR Homes:
diag/rdbms/cci/CCI
diag/tnslsnr/cci/listener
diag/tnslsnr/cci/start
diag/tnslsnr/cci/reload

CCI là nhà. Đặt nó.

adrci> set home diag/rdbms/cci/CCI
adrci>

Bây giờ, bạn có thể nhìn vào nhật ký cảnh báo. Sẽ rất tuyệt nếu chúng ở trong / var / log để bạn có thể dễ dàng phân tích các bản ghi. Chỉ cần ngừng muốn và đối phó với giao diện này. Ít nhất bạn có thể theo đuôi (và tôi hy vọng bạn có bộ đệm cuộn lại):

adrci> show alert -tail 100

Cuộn lại cho đến khi bạn thấy lỗi. Bạn muốn lỗi đầu tiên. Bất kỳ lỗi nào sau lỗi đầu tiên có khả năng là do lỗi đầu tiên. Trong trường hợp của tôi, lỗi đầu tiên là:

ORA-19815: WARNING: db_recovery_file_dest_size of 53687091200 bytes is 100.00% used, and has 0 remaining bytes available.

Điều này được gây ra bởi các giao dịch. Oracle không được thiết kế để sử dụng. Nếu bạn đẩy nhiều dữ liệu vào nó, nó sẽ lưu nhật ký giao dịch. Những người đi vào khu vực tập tin phục hồi. Khi đã đầy (50GB đầy đủ trong trường hợp này). Sau đó, Oracle mới chết. Theo thiết kế, nếu có gì sai sót, Oracle sẽ phản hồi bằng cách tắt.

Có hai giải pháp, một giải pháp phù hợp và nhanh chóng và bẩn thỉu. Cách nhanh nhất và bẩn là tăng db_recovery_file_dest_size. Đầu tiên, thoát adrci.

adrci> exit

Bây giờ, đi vào sqlplus mà không cần mở cơ sở dữ liệu, chỉ cần gắn nó (bạn có thể làm điều này mà không cần gắn cơ sở dữ liệu, nhưng dù sao tôi cũng gắn kết nó).

$ sqlplus /nolog
SQL*Plus: Release 11.2.0.1.0 Production on Wed Sep 11 18:40:25 2013
Copyright (c) 1982, 2009, Oracle. All rights reserved.
SQL> connect / as sysdba
Connected.
SQL> startup mount

Bây giờ, bạn có thể tăng db_recovery_file_dest_size hiện tại của mình, tăng lên 75G trong trường hợp của tôi:

SQL> alter system set db_recovery_file_dest_size = 75G scope=both

Bây giờ, bạn có thể tắt và khởi động lại và lỗi đó sẽ biến mất.

Cách khắc phục thích hợp là loại bỏ các tập tin khôi phục. Bạn làm điều đó bằng cách sử dụng RMAN, không phải SQLPLUS hoặc ADRCI.

$ rman
Recovery Manager: Release 11.2.0.1.0 - Production on Wed Sep 11 18:45:11 2013
Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.
RMAN> backup archivelog all delete input;

Nếu bạn đã có RMAN-06171: not connected to target database, hơn là cố gắng sử dụng rman target /thay vì chỉrman

Đợi một thời gian dài và arch archog của bạn (đã sử dụng hết dung lượng đó) sẽ biến mất. Vì vậy, bạn có thể tắt / khởi động cơ sở dữ liệu của bạn và trở lại hoạt động kinh doanh.


Tôi không tìm thấy lệnh adrci trong máy chủ linux oracle của tôi. Làm thế nào để tôi cài đặt nó? Cảm ơn.

3
Cảm ơn! Nó hoạt động. Nhưng lệnh chính xác cho rman là: export ORACLE_SID=my_oracle//rman target /

Để thêm 2 xu của tôi - bạn có thể kiểm tra bài viết này tại đây, trong đó có lệnh bạn có thể sử dụng RMAN, để xóa vùng lưu trữ, cũng như một số thứ khác. Cẩn thận, vì nó cũng sẽ xóa các điểm khôi phục nếu DB mở vì một số lý do (bit cuối cùng): the1403.github.io/RMAN-cleanup-logs
g00dy
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.