Tôi cần một số gợi ý về cách chẩn đoán và khắc phục vấn đề này. Tôi không biết nếu đây là một vấn đề thiết lập máy chủ đơn giản hoặc một vấn đề thiết kế ứng dụng (hoặc cả hai).Giải quyết ORA-4031 "không thể phân bổ x byte bộ nhớ chia sẻ"
Một hoặc hai lần mỗi vài tháng cơ sở dữ liệu Oracle XE này báo cáo lỗi ORA-4031. Nó không trỏ đến bất kỳ phần nào của sga một cách nhất quán. Một ví dụ gần đây là:
ORA-04031: unable to allocate 8208 bytes of shared memory ("large pool","unknown object","sort subheap","sort key")
Khi lỗi này đi lên, nếu người dùng giữ tươi mát, nhấp vào liên kết khác nhau, họ thường sẽ nhận được nhiều hơn những loại lỗi vào những thời điểm khác nhau, sau đó chẳng bao lâu họ' sẽ nhận được lỗi trang "404 không tìm thấy".
Khởi động lại cơ sở dữ liệu thường giải quyết vấn đề một lúc, sau đó một tháng hoặc lâu hơn lại xuất hiện, nhưng hiếm khi ở cùng một vị trí trong chương trình (tức là nó dường như không liên quan đến bất kỳ phần mã cụ thể nào) (lỗi ví dụ trên đã được nêu ra từ một trang Apex đang phân loại 5000 hàng từ một bảng).
Tôi đã thử tăng sga_max_size
từ 140M lên 256M và hy vọng điều này sẽ giúp mọi thứ. Tất nhiên, tôi sẽ không biết nếu điều này đã giúp vì tôi phải khởi động lại cơ sở dữ liệu để thay đổi cài đặt :)
Tôi đang chạy Oracle XE 10.2.0.1.0 trên hộp Oracle Enterprise Linux 5 với 512MB RAM. Máy chủ chỉ chạy cơ sở dữ liệu, Oracle Apex (v3.1.2) và máy chủ web Apache. Tôi đã cài đặt nó với khá nhiều tham số mặc định và nó đã hoạt động khá tốt trong một năm. Hầu hết các vấn đề tôi đã có thể tự giải quyết bằng cách điều chỉnh mã ứng dụng; nó không được sử dụng nhiều và không phải là một hệ thống kinh doanh quan trọng.
Đây là một số thiết lập hiện tại tôi nghĩ rằng có thể có liên quan:
pga_aggregate_target 41,943,040
sga_max_size 268,435,456
sga_target 146,800,640
shared_pool_reserved_size 5,452,595
shared_pool_size 104,857,600
Nếu đó là bất kỳ sự giúp đỡ ở đây là kích thước SGA hiện tại:
Total System Global Area 268435456 bytes
Fixed Size 1258392 bytes
Variable Size 251661416 bytes
Database Buffers 12582912 bytes
Redo Buffers 2932736 bytes
thông tin bổ sung: http://download.oracle.com/docs/cd/B19306_01/server. 102/b14231/create.htm # sthref376 –
btw large_pool_size là 0 (tức là tự động quản lý bởi ASMM) –
512M RAM có vẻ thấp cho cấu hình cơ sở dữ liệu + các quy trình khác mà bạn đã đề cập. Các công cụ như top hoặc vmstat cho bạn biết về bộ nhớ ở cấp hệ điều hành là gì? Đầu số – dpbradley