ORA-04031: Bytes des gemeinsam genutzten Speichers können nicht zugeordnet werden ("", "", "", "").


8

Ich erhalte diesen Fehler in einer Entwicklungsdatenbank. Dies geschieht bei bestimmten Abfragen (einfaches Einfügen und Löschen über eine .NET-Anwendung). Die Datenbank wird von einem Benutzer verwendet, und es tritt ein Fehler auf, unabhängig davon, wie lange die Datenbank ausgeführt wurde.

Der einzige speicherbezogene Parameter, der eingestellt wird, ist: MEMORY_TARGET = 1.2G

Oracle 11.2 x64 Standard Edition Ein Windows Server 2008 R2

Antworten:


8

Ihre Anwendung verwendet wahrscheinlich keine Bindevariablen, was dazu geführt hat, dass die SGA fragmentiert wurde (sie füllt sich mit mehreren Kopien von SQL, die Literale anstelle von Bindungen verwenden).

Sie können das Problem vorübergehend beheben, indem Sie den gemeinsam genutzten Pool leeren mit:

alter system flush shared_pool;

Es gibt eine Problemumgehung, mit der Sie versuchen können, dies in Zukunft zu verhindern.

Aktivieren Sie die Cursorfreigabe und bouncen Sie die Datenbank:

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

Die einzige Möglichkeit, dies zu beheben, besteht darin, Ihre Anwendung so umzuschreiben, dass sie Bindungsvariablen verwendet.


"dann die Datenbank bouncen" ==? "Herunterfahren - Starten"?
Atilla Ozgur

Ja, fahren Sie die Datenbank herunter und starten Sie sie erneut
Philᵀᴹ

Problem auf seltsame Weise "gelöst"
spm

1
Wie gesagt, wenn die Anwendung, die keine Bindevariablen verwendet, die Ursache des Problems ist, besteht die einzige Möglichkeit zur "Lösung" darin, die Anwendung neu zu schreiben, um sie zu verwenden.
Philᵀᴹ

Ich werde beide Lösungen ausprobieren, wenn das Problem erneut auftritt. Aber ich denke nicht, dass es für diesen Fall gilt, weil es passiert, selbst wenn es die erste Abfrage nach dem Neustart ist.
spm

2

Die Antwort oben ist etwas alt.

alter system flush shared_pool; 

Kann das Problem sofort lindern, aber nicht die Grundursache beheben. Der Parameter cursor_sharing nimmt jetzt zwei Werte an:

KRAFT oder GENAU. Mit EXACT muss Ihre Abfrage genau übereinstimmen, damit ein Cursor (SQL mit Ausführungsplan) wiederverwendet werden kann. Mit "FORCE" werden alle Werte in Ihren Abfragen geändert, um Variablen zu binden. Dies ist sehr praktisch, wenn Ihre Anwendung keine Bindevariablen verwendet. Die Datenbank erledigt das für Sie.

Wenn Sie bereits cursor_sharing = FORCE verwenden. Anschließend müssen Sie überlegen, ob Sie Ihre Speicherzuordnung anpassen möchten. Abhängig von den von Ihrem System verwendeten Speicherparametern können Sie mit den folgenden Abfragen eine Vorstellung davon erhalten, wo Sie diesen Wert festlegen sollten:

Wenn SGA_TARGET und SGA_MAX__SIZE / PGA_TARGET und PGA_MAX_SIZE verwendet werden (sie sollten übereinstimmen): Wählen Sie * aus v $ sga_target_advice; Wählen Sie * aus v $ pga_target_advice;

Es würde so aussehen: In meinem Fall ist dies ein Pre-Prod-System, es wird nicht lange so gut aussehen:

Dies ist der SGA_TARGET_ADVICE:

Die Zeile, in der SGA_SIZE_FACTOR 1 ist, ist die aktuelle Einstellung. In einem System, in dem der Speicher zu klein ist, sollte die Zunahme von SGA_SIZE und SGA_SIZE_FACTOR eine dramatische Abnahme von ESTD_DB_TIME und ESTD_DB_TIME_FACTOR zeigen. Erhöhen Sie den Speicher bis zu einem Punkt, an dem eine erneute Erhöhung die estd_db_time nicht mehr so ​​stark ändert.

In meinem Fall könnte ich mit meiner aktuellen Last die Größe von SGA_TARGET leicht auf 80 G reduzieren, ohne einen großen Erfolg zu erleiden. Eine Reduzierung auf 57 G und weniger würde jedoch zu immer dramatischeren Leistungsproblemen führen.

  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.

Wenn MEMORY_TARGET verwendet wird:

select * from v$memory_target_advice;

1

Als Ergänzung zur vorherigen Antwort stellt sich heraus, dass ALTER SESSION SET NLS_COMP=LINGUISTIC;ALTER SESSION SET NLS_SORT=GENERIC_M_CI;aus irgendeinem Grund der Speicher schnell erschöpft ist. Das Problem verschwindet, wenn ein anderes NLS_SORT verwendet wird.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.