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.
ALTER DATABASE OPEN
và lỗi sau đó.