Benutzer-Werkzeuge

Webseiten-Werkzeuge


dba:oracle_java_database

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
Nächste ÜberarbeitungBeide Seiten der Revision
dba:oracle_java_database [2016/02/28 15:56] – [Architektur] gpipperrdba:oracle_java_database [2016/02/28 16:11] – [Beispiel DNS Auflösung aus der DB mit einer Java Klasse] gpipperr
Zeile 118: Zeile 118:
 ==== Das erste Hello World Programm ==== ==== 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:+Java in der Datenbank wird immer über einen PL/SQL Wrapper aufgerufen und ausgeführt. 
 + 
 +Bei einfachen Java Programmen können diese direkt in der Datenbank erzeugt werden. 
 + 
 + 
 +Über SQL*Plus lässt sich Java auch direkt in der Datenbank anlegen:
 <code sql> <code sql>
 sqlplus gpi/gpi sqlplus gpi/gpi
Zeile 153: Zeile 158:
  
 </code> </code>
 +
 +=== Beispiel  DNS Auflösung aus der DB mit einer Java Klasse===
 +
 +<code sql>
 +CREATE OR REPLACE AND RESOLVE JAVA SOURCE NAMED "DNSName" AS
 +import java.net.*;
 + public class DNSName extends Object {
 +  public static String getName(String ip) {
 +    try {
 +    InetAddress addr = InetAddress.getByName(ip);
 +    System.out.println(addr.getHostName());
 +    System.out.println(addr.getHostAddress());
 +           return addr.getHostName();
 +      } catch (UnknownHostException e) {
 +        System.err.println(e.toString());
 +        return "no";
 +     }
 +  }
 +  public static void test(){
 +    System.out.println("Test");
 +  }
 + }
 +/
 +</code>
 +
 +Wrapper:
 +
 +<code sql>
 +CREATE OR REPLACE function getIPName(p_ip varchar2)
 +return varchar2
 +as
 + language java
 + name 'DNSName.getName(java.lang.String) 
 + return   java.lang.String';
 +/
 +</code>
 +
 +Auf einer 12c Datenbank kann das aber nicht sofort aufgerufen werden, es müssen die entsprechenden Rechte vergeben werden.
 +<code sql>
 +sqlplus / as sysdba
 +
 +exec dbms_java.grant_permission( 'GPI', 'SYS:java.net.SocketPermission', '*', 'resolve' )
 +</code>
 +Hier muss in produktiven Umgebung mit etwas mehr Mühe gearbeitet werden um nicht hier gefährliche Toren zur DB zu öffnen!
 +
 +
 +Aufruf auf einer
 +<code sql>
 +
 +select getIPName('193.99.144.85') as servername from dual;
 +
 +
 +SERVERNAME
 +------------
 +www.heise.de
 +
 +</code>
 +
 +----
 +
 +
 +==== Komplexere Java Klassen in die DB Laden====
 +
 +Über das Programm "loadjava" können Java Klassen auch direkt in die Datenbank geladen werden.
 +
 +Siehe => https://docs.oracle.com/database/121/JJDEV/chtwo.htm#JJDEV02043
 +
 +
 +----
 +
 +
 +
  
 ==== Quellen ===== ==== Quellen =====
dba/oracle_java_database.txt · Zuletzt geändert: 2020/11/05 15:38 von gpipperr