ORA-04031: không thể phân bổ byte bộ nhớ dùng chung


8

Tôi đang nhận được lỗi này trong cơ sở dữ liệu phát triển. Nó xảy ra trên một số truy vấn cụ thể (chèn và xóa đơn giản thông qua ứng dụng .NET). Cơ sở dữ liệu được sử dụng bởi một người dùng và lỗi xảy ra bất kể cơ sở dữ liệu đã chạy bao lâu.

Tham số duy nhất liên quan đến bộ nhớ được đặt là: MEMORY_TARGET = 1.2G

Phiên bản tiêu chuẩn Oracle 11.2 x64 Một Windows Server 2008 R2

Câu trả lời:


8

Ứng dụng của bạn có thể không sử dụng các biến liên kết, điều này đã khiến SGA bị phân mảnh (nó lấp đầy với nhiều bản sao SQL sử dụng bằng chữ thay vì liên kết).

Bạn có thể tạm thời khắc phục sự cố bằng cách xóa nhóm chia sẻ với:

alter system flush shared_pool;

Có một cách giải quyết bạn có thể cố gắng ngăn chặn nó xảy ra trong tương lai.

Bật chia sẻ con trỏ, sau đó thoát cơ sở dữ liệu:

ALTER SYSTEM SET cursor_sharing='SIMILAR' SCOPE=BOTH;

Cách thực sự duy nhất để sửa lỗi này là viết lại ứng dụng của bạn để nó sử dụng các biến liên kết.


"Sau đó trả lại cơ sở dữ liệu" ==? "Tắt máy - khởi động"?
Atilla Ozgur

Có, tắt cơ sở dữ liệu và khởi động lại
Philᵀᴹ

vấn đề "giải quyết" theo một cách kỳ lạ
spm

1
Như tôi đã nói, nếu ứng dụng không sử dụng biến liên kết là nguyên nhân của vấn đề, cách duy nhất để "giải quyết" là viết lại ứng dụng để sử dụng chúng.
Philᵀᴹ

Tôi sẽ thử cả hai giải pháp nếu vấn đề xảy ra lần nữa. Nhưng tôi không nghĩ rằng nó áp dụng cho trường hợp này, bởi vì nó xảy ra ngay cả khi đó là truy vấn đầu tiên sau khi khởi động lại.
spm

2

Câu trả lời ở trên là một chút cũ.

alter system flush shared_pool; 

Có thể làm giảm bớt vấn đề ngay lập tức nhưng không giải quyết được nguyên nhân gốc rễ. tham số con trỏ hiện có 2 giá trị:

LỰC LƯỢNG hoặc CHÍNH XÁC. Với EXACT, truy vấn của bạn sẽ phải khớp chính xác để con trỏ (sql với kế hoạch thực hiện) được sử dụng lại, với "FORCE", tất cả các giá trị trong truy vấn của bạn được thay đổi thành các biến liên kết. Điều này thực sự tiện dụng khi ứng dụng của bạn không sử dụng các biến liên kết. Cơ sở dữ liệu sẽ làm điều đó cho bạn.

Nếu bạn đã sử dụng con trỏ_shared = FORCE. Sau đó, bạn cần bắt đầu xem xét điều chỉnh cấp phát bộ nhớ của mình tùy thuộc vào các tham số bộ nhớ mà hệ thống của bạn sử dụng, bạn có thể có được ý tưởng về nơi bạn nên đặt giá trị đó với các truy vấn sau:

Khi SGA_TARGET và SGA_MAX__SIZE / PGA_TARGET và PGA_MAX_SIZE được sử dụng (chúng phải khớp): select * từ v $ sga_target_advice; chọn * từ v $ pga_target_advice;

Nó sẽ trông như thế này: Trong trường hợp của tôi đây là một hệ thống tiền sản xuất, nó sẽ không có vẻ tốt cho điều này lâu dài:

Đây là SGA_TARGET_ADVICE:

Hàng có SGA_SIZE_FACTOR là 1, là cài đặt hiện tại. Trong một hệ thống mà bộ nhớ không được khai thác quá mức, sự gia tăng SGA_SIZE và SGA_SIZE_FACTOR sẽ cho thấy sự sụt giảm đáng kể về ESTD_DB_TIME và ESTD_DB_TIME_FACTOR. Tăng bộ nhớ đến điểm tăng trở lại sẽ không tạo ra sự thay đổi lớn như vậy đối với estd_db_time nữa.

Trong trường hợp của tôi ở đây, với tải hiện tại của tôi, tôi có thể dễ dàng giảm kích thước của SGA_TARGET xuống 80G mà không bị ảnh hưởng lớn. Tuy nhiên, việc giảm xuống còn 57G và ít hơn sẽ tạo ra các vấn đề hiệu suất ngày càng lớn.

  SGA_SIZE SGA_SIZE_FACTOR ESTD_DB_TIME ESTD_DB_TIME_FACTOR ESTD_PHYSICAL_READS ESTD_BUFFER_CACHE_SIZE ESTD_SHARED_POOL_SIZE     CON_ID
---------- --------------- ------------ ------------------- ------------------- ---------------------- --------------------- ----------
      5760           .0625       482104               .5257            50950730                  76032                 18176          0
     11520            .125       482104               .5257            50950730                  76032                 18176          0
     17280           .1875       482104               .5257            50950730                  76032                 18176          0
     23040             .25       482104               .5257            50950730                  76032                 18176          0
     28800           .3125      1560028              1.7011           174592866                   6912                 19456          0
     34560            .375      1374046              1.4983           138703172                  13824                 18176          0
     40320           .4375      1105895              1.2059            87207269                  20736                 18176          0
     46080              .5      1028769              1.1218            72319466                  27648                 17664          0
     51840           .5625      1000157              1.0906            66607889                  34560                 16896          0
     57600            .625       980623              1.0693            62628637                  41472                 16128          0
     63360           .6875       976129              1.0644            62628637                  41472                 21248          0
     69120             .75       961456              1.0484            59805967                  48384                 21248          0
     74880           .8125       945683              1.0312            56626641                  55296                 19456          0
     80640            .875       933852              1.0183            54359334                  62208                 19456          0
     86400           .9375       923765              1.0073            51867843                  71424                 16640          0
     92160               1       917070                   1            50950730                  76032                 18176          0
     97920          1.0625       910467               .9928            49534300                  82944                 17408          0
    103680           1.125       903131               .9848            47914066                  89856                 16640          0
    109440          1.1875       896528               .9776            46385545                  96768                 15872          0
    115200            1.25       891575               .9722            46385545                  96768                 21248          0
    120960          1.3125       886990               .9672            45361435                 103680                 19456          0
    126720           1.375       884331               .9643            44851928                 110592                 19456          0
    132480          1.4375       880937               .9606            44194663                 117504                 19456          0
    138240             1.5       875252               .9544            42915800                 124416                 18176          0
    144000          1.5625       870116               .9488            41901880                 131328                 17920          0
    149760           1.625       867915               .9464            41901880                 131328                 23040          0
    155520          1.6875       867181               .9456            41769408                 138240                 23040          0
    161280            1.75       866723               .9451            41769408                 138240                 28416          0
    167040          1.8125       866631                .945            41769408                 138240                 32000          0
    172800           1.875       866631                .945            41769408                 138240                 32000          0
    178560          1.9375       866631                .945            41769408                 138240                 32000          0
    184320               2       866631                .945            41769408                 145152                 32000          0

32 rows selected.

Khi MEMORY_TARGET được sử dụng:

select * from v$memory_target_advice;

1

Là một bổ sung cho câu trả lời trước đó, hóa ra ALTER SESSION SET NLS_COMP=LINGUISTIC;ALTER SESSION SET NLS_SORT=GENERIC_M_CI;vì lý do nào đó nhanh chóng cạn kiệt bộ nhớ. Sự cố biến mất khi sử dụng NLS_SORT khác.

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.