Benutzer-Werkzeuge

Webseiten-Werkzeuge


dba:oracle_java_database

Dies ist eine alte Version des Dokuments!


Java in der Oracle Datenbank intern einsetzen

ab 8i - getestet mit 12c

Auch in der Oracle Datenbank lässt sich Java als Programmiersprache einsetzen.

Architektur

In der Oracle Datenbank kann ab Oracle 8i (also seit wenigstens 1999) eine eigenen VM zum ausführen von Java Programmen gestartet werden.

Warum solle Java überhaupt in der DB eingesetzt werden?

  • Verwaltung von Daten und Programmcode in einer Einheit
  • Performance beim Zugriff auf die Daten
  • Ersatz von PL/SQL
  • Erweiterung der Datenbank mit neuen Funktionalitäten
  • Plattformunabhängigkeit

Java versus PL/SQL

  • PL/SQL nicht 100% Objektorientiert
  • PL/SQL ist aber deutlich schneller
  • PL/SQL erlaubt nur bedingte Interaktion mit der Umwelt
  • PL/SQL ist nicht erweiterbar
  • Java ist offen
  • Java ist sehr populär

Der Oracle JServer (Aurora)- die Oracle Virtuelle Maschine in der Datenbank

  • Multithreading durch Sessions
  • Automatische Speicherverwaltung
  • Session Footprint
  • Performancesteigerung mit Native Compiler
  • Dynamisches Laden von Klassen
  • Embedded JDBC Driver
  • Embedded SQLJ Translator
  • Java ORB und IIOP connectivity
  • Import und export Utilities zum Laden von Java

Oracle Java in der Datenbank

Multithreading

  • Das Threading übernimmt die Datenbank
  • Verwendung von Threads im Programm möglich aber nicht empfohlen
  • Dead Locks werden von der VM automatisch erkannt
  • Threads werden sequentiell abgearbeitet
  • Alle Thread innerhalb eines Calls werden beendet, wenn der aufrufende Thread terminiert
  • Threads werden cooperative abgearbeitet!(Hängt ein Thread, kein anderer Thread wird abgearbeitet!)

Welches JDK ist installiert

Überprüfen ob überhaupt Java zur Verfügung steht:

SELECT comp_id, comp_name, version,schema 
 FROM dba_registry 
WHERE UPPER(COMP_NAME) LIKE '%JAVA%';
 
COMP_NAME                                STATUS   VERSION      SCHEMA
---------------------------------------- -------- ------------ ------------
JServer JAVA Virtual Machine             VALID    12.1.0.2.0   SYS
Oracle DATABASE Java Packages            VALID    12.1.0.2.0   SYS

Welche Version von Java ist installiert:

-- create a wrapper function to call the java properties
 
CREATE OR REPLACE FUNCTION getJavaProperty(myprop IN VARCHAR2)
RETURN VARCHAR2 
IS LANGUAGE JAVA
name ‘java.lang.System.getProperty(java.lang.String) RETURN java.lang.String’;
/
 
-- read the propertie java.version
 
SELECT getJavaProperty(‘java.version’) AS version FROM dual;
 
Version
---------
1.6.0_81

Das sieht nicht sehr aktuell für eine Oracle 12c 12.1.0.2.0 aus ….

Und tatsächlich: „Oracle Database 12c Release 1 (12.1) supports JDK 6 and JDK 7, where JDK 6 is the default JDK version. So, if you do not set the JDK version explicitly, the JDK version in effect is JDK 6.“ siehe https://docs.oracle.com/database/121/JJDEV/chone.htm#JJDEV13628 Abschnitt über „Multiple JDK Support“

Auf Java 1.7 upgraden

siehe https://docs.oracle.com/database/121/JJDEV/chone.htm#CACDGBBI um die DB auf eine höhere Version zu heben.

Zuvor in das Oracle Home aber auch den aktuellsten CPU mit Java Update patchen!


Das erste Hello World Programm

Über SQL*Plus läßt sich Java direkt in der Datenbank anlegen, über ein PL/SQL Wrapper läßt sich der Code dann auch aufrufen:

sqlplus gpi/gpi
 
--create Java Class
 
CREATE OR  REPLACE java SOURCE named "Hello" 
AS
public class Hello {
                   public static String world()  {
                    RETURN "Hallo, ich bin Java aus der DB";
              }
}
/
 
Java created.
 
 
-- Create Wrapper
CREATE OR REPLACE FUNCTION helloWorld 
RETURN varchar2
AS LANGUAGE java
name 'Hello.world() return java.lang.String';
/
 
-- Call
 
SELECT HELLOWORLD FROM dual;
 
 
HELLOWORLD
-----
Hallo, ich bin Java aus der DB

Quellen

Diese Website verwendet Cookies. Durch die Nutzung der Website stimmen Sie dem Speichern von Cookies auf Ihrem Computer zu. Außerdem bestätigen Sie, dass Sie unsere Datenschutzbestimmungen gelesen und verstanden haben. Wenn Sie nicht einverstanden sind, verlassen Sie die Website.Weitere Information
dba/oracle_java_database.1456671402.txt.gz · Zuletzt geändert: 2016/02/28 15:56 von gpipperr