Không thể khởi động Oracle (11g1) do cấu hình bộ nhớ kém (ORA-00837)


8

Tôi quyết định giảm phân bổ bộ nhớ của một cá thể nhà phát triển cục bộ và được thông báo rằng lệnh sau đã thực hiện công việc;

alter system set memory_max_target = 512M scope = spfile;

Mà tôi đoán nó đã làm, vì tôi không còn có thể bắt đầu cá thể Oracle trong câu hỏi. Đây là lỗi tôi gặp phải khi cố gắng kết nối với tư cách là người dùng không phải DBA;

ORA-01034: ORACLE not available
ORA-27101: shared memory realm does not exist

Khi kết nối như SYSDBA, tôi nhận được như sau;

Connected to an inactive instance.
SQL>startup nomount;
ORA-00837: Specified value of MEMORY_TARGET greater than MEMORY_MAX_TARGET
SQL>alter system set memory_max_target = 2G scope = spfile;
ORA-01034: ORACLE not available

( "Kết nối với một thể hiện không hoạt động." Là bản dịch của tôi về một thông báo lỗi cục bộ, có thể không được chính xác đúng) Vì vậy, tôi đang ở trong một tình huống bắt 22, tôi không thể thay đổi các thông số bộ nhớ mà không cần khởi động, và tôi có thể bắt đầu

Có cách nào để thay đổi các tham số ngoại tuyến không?

Câu trả lời:


9

Nếu bạn khởi động phiên bản của mình bằng tệp tham số máy chủ (phiên bản nhị phân của tệp tham số khởi tạo, spfile), bạn có thể trích xuất các tham số khởi tạo thành tệp tham số khởi tạo văn bản thuần (pfile), thay đổi chúng, sau đó khởi động phiên bản của bạn bằng bộ nhớ đã sửa đổi thông số.

sql> create pfile='myinit.ora' from spfile='spfileORCL.ora';

Sửa đổi các tham số liên quan đến bộ nhớ của bạn myinit.oravà khởi động phiên bản của bạn bằng cấu hình mới này:

sql> startup pfile='myinit.ora';

Sau đó, bạn có thể lưu cài đặt của mình trở lại một spfile bằng lệnh sau:

sql> create spfile='spfileORCL.ora' from pfile='myinit.ora';

Và bắt đầu cơ sở dữ liệu của bạn như bình thường:

sql> startup;

1
Điều này làm việc hoàn hảo. Thay đổi duy nhất tôi cần thực hiện về phía mình là thay thế ORCL bằng SID của ví dụ được đề cập. Tôi đặt tham số memory_target thành cùng giá trị với tham số memory_max_target, có thể không tối ưu, nhưng nó có thể bắt đầu.
MaxH

Đúng, tên của các spfiles mà Oracle cố gắng bắt đầu là spfileSID.oraspfile.orasau đó nó cố gắng đọc từ pfile init.oranếu không tìm thấy spfiles. Nhân tiện, nó có thể MEMORY_MAX_TARGETlớn hơn nhiều lần so với MEMORY_TARGETmặc dù nó không thể được sửa đổi một cách linh hoạt - trường hợp cần phải được trả lại.
Yasir Arsanukaev 22/03/13

Rất tiếc, initSID.orathực tế không phải vậy init.ora.
Yasir Arsanukaev

1

Các bản phát hành 11gR1 sớm có lỗi này. Họ sẽ không bắt đầu nếu memory_target được đặt thành 2GB (và hơn thế nữa). Nâng cấp lên 11gR2 (hoặc 11.1.0.7) hoặc sử dụng các tham số SGA / PGA "cổ điển" (sga_target, sga_max_size, pga_aggregate_target).


Làm thế nào điều này có liên quan đến "ORA-00837: Giá trị được chỉ định của MEMORY_TARGET lớn hơn MEMORY_MAX_TARGET" mà OP ghi chú về?
Yasir Arsanukaev

1

Giả sử bạn đang sử dụng hệ điều hành linux: bạn đã kiểm tra kích thước của hệ thống tập tin / dev / shm chưa? Kích thước của fs này phải đủ dài để phù hợp với SGA của bạn. Nếu không, hãy thử tính lại với '-o size = xxx'.


Bạn đã bao giờ đọc nguyên nhân của sự cố được xác định bởi số lỗi của Oracle trong OP (ORA-00837) chưa?
Yasir Arsanukaev
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.