Zu Oracle

Bereich:
Versionsinfo:
PL/SQL
9.1
Erstellung:
Letzte Überarbeitung:
02/2002 HA
05/2009 HA
 Als PDF Downloaden!

Native Kompilierung von PL/SQL in 9i

Native Kompilierung in 9i (und 10g) heisst, dass PL/SQL-Code  zunächst in C-Code übersetzt und dann über einen C-Compiler in nativen Code kompiliert wird. Ein Interpreter-Schritt, wie er bisher bei der Ausführung von PL/SQL-Routinen nötig war, entfällt damit. Das Programm wird als Shared Library Unit oder dll im Filesystem abgespeichert und zur Ausführung in die PGA geholt und direkt an den Oracle-Prozess gelinkt.

Die Ausführung von SQL-Befehlen kann durch dieses Feature NICHT beschleunigt werden, daher bietet native Kompilierung nur bei rechenintensiven Programmeinheiten deutliche Verbesserungen in der Laufzeit.

Parameter in 9i

Zur Einstellung des Verhaltens wurden mehrere Init.ora-Parameter in 9i eingeführt:

PLSQL_COMPILER_FLAGS muss gesetzt sein, egal, ob man mit nativer Kompilierung arbeitet oder weiterhin seine Routinen in Bytecode übersetzen will. Mögliche Einstellungen sind:

  • INTERPRETED (Bytecode, Default)
  • NATIVE (C-Code)

PLSQL_COMPILER_FLAGS ist sowohl mit ALTER SYSTEM als auch mit ALTER SESSION änderbar, alle übrigen nur mit ALTER SYSTEM. Eine Umstellung betrifft nur neu zu erzeugende Programme, nicht bereits vorhandene.

Wenn mit nativer Kompilierung gearbeitet werden soll, müssen in 9i folgende Parameter zusätzlich gesetzt werden:

  • PLSQL_NATIVE_LIBRARY_DIR: Pfadangabe des Verzeichnisses, wo die nativ kompilierten Units gespeichert werden sollen.
  • PLSQL_NATIVE_MAKE_FILE_NAME: Name einschließlich Pfadangabe des zu verwendenden Makefiles.
    Das Makefile gibt die Einstellungen für die Kompilierung sowie den Ort der Compilers und des Linkers an.
    Das (bei Unix) mitgelieferte Makefile ($ORACLE_HOME/ plsql/ spnc_makefile.mk) muss an das System angepasst werden.
  • PLSQL_NATIVE_MAKE_UTILITY: Name einschließlich Pfadangabe der zu verwendenden Make-Utility (z.B. make in UNIX).
    Die Make-Utility erzeugt anhand des Makefiles die Shared Unit.

Alle weiteren Parameter können optional gesetzt werden:

  • PLSQL_NATIVE_C_COMPILER: Pfadangabe für einen C-Compiler, der statt desjenigen im Makefile verwendet werden soll.
  • PLSQL_NATIVE_LINKER: Pfadangabe für einen Linker, der statt desjenigen im Makefile verwendet werden soll.
  • PLSQL_NATIVE_LIBRARY_SUBDIR_COUNT: Sollen viele dlls angelegt werden, empfiehlt es sich, Unterverzeichnisse unter PLSQL_NATIVE_LIBRARY_DIR anzulegen. Deren Anzahl muss dann in diesem Parameter angegeben werden.

 

Kompilierung

Eine Änderung der o.a. Parameter betrifft nur PL/SQL-Routinen, die nachher kompiliert werden:

  • ALTER...COMPILE
  • CREATE OR REPLACE
  • neu anlegen

Auch vordefinierte Packages können in nativen Code überführt werden. Es wird für jede Unit mit aufgezeichnet, wie sie kompiliert wurde; sollte ein Programm automatisch rekompiliert werden (, weil es INVALID wurde), werden die gespeicherten Einstellungen beibehalten.

Informationen zur Art der Kompilierung finden sich in DBA_STORED_SETTINGS unter PARAM_VALUE WHERE PARAM_NAME = 'PLSQL_COMPILER_FLAGS'.

Anmerkung:
Der Einsatz dieses Features wurde in 10g deutlich vereinfacht, und ab 11g kann ganz ohne Konfigurationsaufwand damit gearbeitet werden. Einzelheiten dazu finden Sie hier.

Suche

Kontakt

Niederlassungen

  Witneystraße

    089 6228 6789-0

  Grünwalder Weg

    089 679090-40

E-Mail Verteiler Monatstipps

Bitte nehmen Sie mich in den Verteiler der monatlichen Tipps & Tricks auf.