PLS-00123) aufweisen: - Programm zu groß (Diana Knoten) beim Versuch zu kompilieren eines Pakets

Während der Kompilierung ein Paket, rannte ich in eine Fehlermeldung:

Error: PLS-00123: program too large (Diana nodes)
Line: 1

Paket in Frage, hat über 1k Zeilen (Skillung) + 13k-Linien im Körper. Während der recherche zu diesem, stieß ich auf diese Fragen Tom Frage

Beim kompilieren eines PL/SQL-unit, die
compiler baut einen parse-Baum. Die
maximale Größe einer PL/SQL-unit ist
bestimmt durch die Größe der parse
Baum. Eine maximale Anzahl von Knoten diana
existiert in diesem Baum.

Bis 7.3, die Sie haben könnten 2**14 (16K)
diana Knoten, und von 8.0 auf 8.1.3,
2**15 (32K) diana Knoten durften.
Mit 8.1.3, diese Grenze wurde
entspannt, so dass Sie jetzt haben
2**26 (d.h., 64M) diana Knoten in diesem
Baum Paket und geben stellen.

Zwar gibt es keine einfache Möglichkeit,
übersetzen Sie die Grenzen in Bezug auf die Zeilen
der source-code, es wurde unsere
die Beobachtung, dass es
etwa 5 bis 10 Knoten pro Zeile
der source-code. Vor 8.1.3, die
compiler könnte sauber kompilieren bis zu
über 3000 Zeilen code.

Beginnend mit 8.1.3, das limit war
entspannt Paket für Körper und Typ
stellen die jetzt haben
etwa bis etwa 6.000.000
Zeilen code.

Dies ist eine grobe Schätzung. Wenn Ihr
code hat viele Räume, lange
IDS, etc., bis Ende Mai
mit source-code, die größer als dieser.

Nun, auch wenn Sie berücksichtigen, die Letzte Liste über viele Leerzeichen & große-IDS, ich denke, es ist vernünftig zu schließen, dass es keine, wo in der Nähe die Grenzen der oben genannten.

Weiter mehr,

Zu Prüfen, wie die Aktuelle Größe des Pakets:

Überprüfen, die Größe eines Pakets, das
am nächsten Verwandte Zahl, die Sie verwenden können, ist
PARSED_SIZE im data dictionary
Ansicht USER_OBJECT_SIZE. Dieser Wert
gibt die Größe der DIANA in
bytes, gespeichert in der SYS.IDL_xxx$
Tabellen und ist NICHT die Größe in der
shared pool.

[...]

Zum Beispiel, können Sie beginnen
Probleme mit einer 64 Kb-limit
wenn die PARSED_SIZE im
USER_OBJECT_SIZE ist nicht mehr als 50K.

Abfrage dieser Ansicht ergeben sich 48929 - so nehme ich an, es ist fair zu Größe 47 ?

Dem seltsamen Teil ist, Holen Sie das gleiche Objekt aus einem anderen schema und es läuft in den Bereich, den ich bin mit problem, führt zu einer erfolgreichen Kompilierung.

Also, warum ist dieser Besondere Bereich verursacht problem ?

  • Ich weiß, es ist eine lange gedreht, aber das Gesicht von dem problem, muss ich Fragen: sind deine Zeilen sehr, sehr groß ist?
  • Sie sind keineswegs sehr, sehr groß
Schreibe einen Kommentar