Oracle12c für Entwickler



Ähnliche Dokumente
Oracle Database 12c Ein Überblick

Oracle 12c: Neuerungen in PL/SQL. Roman Pyro DOAG 2014 Konferenz

Die bisher bereits bekannten Aggregatsfunktionen MIN, MAX, SUM, AVG, COUNT, VARIANCE und STDDEV wurden um FIRST und LAST erweitert.

Informatik 12 Datenbanken SQL-Einführung

SQL and PL/SQL unleashed. Neuheiten bei Oracle 11g und Oracle 12c im Bereich SQL und PL/SQL

SEMINAR Modifikation für die Nutzung des Community Builders

Dynamisches SQL. Folien zum Datenbankpraktikum Wintersemester 2009/10 LMU München

Fakultät für Informatik & Wirtschaftsinformatik DB & IS II - SS Metadaten

Prakt. Datenbankprogrammierung. Sommersemester 2005

Oracle: Abstrakte Datentypen:

SQL für Trolle. mag.e. Dienstag, Qt-Seminar

Prozedurale Datenbank- Anwendungsprogrammierung

MIN oder MAX Bildung per B*Tree Index Hint

Art der Info: Technische Background Info Teil 3 (April 2002)

php Hier soll ein Überblick über das Erstellen von php Programmen gegeben werden. Inhaltsverzeichnis 1.Überblick Parameterübergabe...

Dipl. Inf. Dipl. Math. Y. Orkunoglu Datum:

PostgreSQL in großen Installationen

<Insert Picture Here> Security-Basics. Privilegien, Rollen, SQL und PL/SQL - inkl. 12c-Update. Carsten Czarski, ORACLE Deutschland B.V. Co.

Java Database Connectivity (JDBC) Walther Rathenau Gewerbeschule 1

Die Datenmanipulationssprache SQL

Geschäftslogik in die Datenbank Umstellung eines Kernbanksystems

Roland Tilgner. Solution Architects & Team Coaching DEVELOPMENT. ORACLE TEXT AUS PL/SQL-SICHT Features und Möglichkeiten

Aktuelle Entwicklungen

Nachtrag: Farben. Farbblindheit. (Light und Bartlein 2004)

Whitepaper. Produkt: combit Relationship Manager. Datensatzhistorie mit dem SQL Server 2000 und combit GmbH Untere Laube Konstanz

Datenbanktechnologie mit praktischen Übungen in MySQL und PHP

Prakt. Datenbankprogrammierung. Sommersemester Was sind Constraints? I,11: Verwendung von Constraints. Festlegung von Constraints

seit Java 1.1 Bestandteil der API: packages java.sql, javax.sql

Beispiel 1: Filmdatenbank

SQL. strukturierte Datenbankabfragesprache eine Datenbanksprache zur. Structured Query Language:

MySQL Installation. AnPr

Universität Augsburg, Institut für Informatik WS 2006/2007 Dr. W.-T. Balke 27. Nov M. Endres, A. Huhn, T. Preisinger Lösungsblatt 5

Erzeugen von Constraints

NoSQL mit Postgres 15. Juni 2015

Kapitel 33. Der xml-datentyp. In diesem Kapitel: Der xml-datentyp 996 Abfragen aus xml-datentypen 1001 XML-Indizierung 1017 Zusammenfassung 1023

Art der Info: Technische Background Info Teil 1 (April 2002)

Dokumentation für das Web-basierte Abkürzungsverzeichnis (Oracle mod_plsql / Apache)

SAP NetWeaver Gateway. 2013

Oracle APEX Installer

DATENBANKEN SQL UND SQLITE VON MELANIE SCHLIEBENER

SQL (Structured Query Language) Schemata Datentypen

Abfragen: Grundbausteine

Hochschule Karlsruhe Technik und Wirtschaft Anhänge: Fakultät für Informatik und Wirtschaftsinformatik SS 2013 Prof. Schmidt.

Powerful PL/SQL: Collections indizieren mit VARCHAR2- Indizes ein Praxisbeispiel

10.6 Programmier-Exits für Workitems

Unsere Webapplikation erweitern

Warum wird mein Index nicht benutzt?

Mengenvergleiche: Alle Konten außer das, mit dem größten Saldo.

Betroffene Produkte: Alle Versionen von Oracle Forms (3.0-10g, C/S und Web), Oracle Clinical, Oracle Developer Suite

Java Application 1 Java Application 2. JDBC DriverManager. JDBC-ODBC Br idge. ODBC Driver Manager. Dr iver C. Dr iver D.

3 Richtlinienbasierte Verwaltung und Multi-Server- Administration

APEX: from past to present

7. Datenbank-Zugriff. Vorlesung und Übung Dr. Peter Pfahler Institut für Informatik Universität Paderborn. Zum Beispiel aus PHP-Skripten: Client 7-2

Oracle DB 12c für Entwickler

Datenbanken SQL Einführung Datenbank in MySQL einrichten mit PhpMyAdmin

Übung 7 DBMS-FUNKTIONALITÄTEN UND DATENIMPORT

Oracle Forms. Aufbau und Bestandteile von Formularen. Erstellen eines neuen Blocks. Starten von Oracle Forms

PostgreSQL unter Debian Linux

Einstellungen zur Verwendung von Flashback-Abfragen

Funktionen. Überblick über Stored Functions. Syntax zum Schreiben einer Funktion. Schreiben einer Funktion

Inhalt. 1 Einleitung AUTOMATISCHE DATENSICHERUNG AUF EINEN CLOUDSPEICHER

SQL Intensivpraktikum SS 2008

Indexing und Performance Tuning

Extending tl_member. Andreas Fieger

ORM & OLAP. Object-oriented Enterprise Application Programming Model for In-Memory Databases. Sebastian Oergel

Mehr Ergebnisse: Linguistische Funktionen und Ähnlichkeitssuche mit SQL. Carsten Czarski ORACLE Deutschland B.V. & Co KG München

JDBC. Es kann z.b. eine ODBC-Treiberverbindung eingerichtet werden, damit das JAVA-Programm auf eine ACCESS-DB zugreifen kann.

Übungsblatt 8- Lösungsvorschlag

Übungen Programmieren 1 Felix Rohrer. Übungen

MySQL Queries on "Nmap Results"

Apache HBase. A BigTable Column Store on top of Hadoop

mysql - Clients MySQL - Abfragen eine serverbasierenden Datenbank

desk.modul : WaWi- Export

Hochschule Karlsruhe Technik und Wirtschaft

Views erzeugen. Datenbank - Objekte. Wozu braucht man Views? Was ist eine View?

Entwicklungsumgebung für die Laborübung

OKB Die MS SQL-Volltextsuche für organice SQL einrichten

Themen des Kapitels. 2 Grundlagen von PL/SQL. PL/SQL Blöcke Kommentare Bezeichner Variablen Operatoren. 2.1 Übersicht. Grundelemente von PL/SQL.

Client-Server-Beziehungen

Datenbanksysteme I. Klausur zum Praktikum. Mehrere Professoren prüfen mit genau einem Beisitzer genau einen Studenten.

CLR-Integration im SQL-Server. Alexander Karl

Whitepaper. Produkt: combit Relationship Manager. Einbindung externer FiBu-/Warenwirtschaftsdaten. combit GmbH Untere Laube Konstanz

Zugriff auf Firebird-Datenbanken mit PHP. Daniel de West DB-Campus-Treffen 15. Januar 2004

Visual Basic Basisbefehle Hinweis: Der Text in eckigen Klammern [ ] ist variabel, z.b. [var] => 5.3. Eckige Klammern sind stets wegzulassen!

Reporting Services und SharePoint 2010 Teil 1

Lokale Installation von DotNetNuke 4 ohne IIS

Event Stream Processing & Complex Event Processing. Dirk Bade

Views in SQL. 2 Anlegen und Verwenden von Views 2

3.17 Zugriffskontrolle

Windows Server 2012 R2 Essentials & Hyper-V

Erzeugung und Veränderung von Tabellen

Universität Duisburg-Essen Informationssysteme Prof. Dr.-Ing. N. Fuhr. Praktikum Datenbanken / DB2 Woche 8: Trigger, SQL-PL

Transkript:

Oracle12c für Entwickler Carsten.Czarski@oracle.com http://tinyurl.com/apexcommunity http://sql-plsql-de.blogspot.com http://oracle-text-de.blogspot.com http://plsqlexecoscomm.sourceforge.net http://plsqlmailclient.sourceforge.net Twitter: @cczarski

Oracle12c für Entwickler Die Datenbank einfach, schnell und effizient nutzen... SQL Pattern Matching PL/SQL in "WITH" Klausel Identity Columns 32k Varchar Rollen für PL/SQL Invisible Columns Oracle TEXT, XML und Spatial

Identity Columns Tabellen erstellen - viel weniger Code Bisher create table tab_kunden ( id number(10) primary key name varchar2(200) : ); create sequence seq_kunden start with 1 increment by 1; Oracle12c create table kunden_tab( id number(10) primary key generated always as identity start with 1 increment by 1, name varchar2(200) : ); create or replace trigger tr_pk_kunden before insert on tab_kunden for each row begin :new.id := seq_kunden.nextval; end;

SQL "Row Limit" Klausel Zwei Beispiele... Sortiere nach "SAL" aufsteigend und gib die ersten 5 Zeilen zurück SELECT empno, ename, sal FROM ( emp ORDER SELECT BY sal empno, ASC ename, sal FROM emp ORDER BY sal DESC FETCH ) FIRST 5 ROWS ONLY; WHERE rownum <= 5; Sortiere nach "SAL" absteigend, überspringe 3 Zeilen und gib dann die nächsten drei Zeilen zurück SELECT empno, ename, sal FROM ( emp ORDER SELECT BY sal rownum DESC zeile, empno, ename, sal FROM ( OFFSET SELECT 3 ROWS empno, FETCH ename, FIRST 3 sal ROWS FROM ONLY; emp ORDER BY sal DESC ) ) WHERE zeile BETWEEN 4 AND 6;

VARCHAR-Spalten nun bis 32K Grenze damit analog zu PL/SQL Verwendung aller SQL-Funktionen möglich Einmaliger Setup der Datenbank erforderlich (mit dem DBA) create table TAB_KUNDEN ( id number generated as identity, first_name varchar2(30), last_name varchar2(30), first_order date, kommentare varchar2(32767) );

PL/SQL WITH Klausel PL/SQL Funktionen lokal für eine SQL-Abfrage Die Funktion existiert nur für diese SQL-Abfrage Keine Persistenz im Data Dictionary WITH FUNCTION get_domain(url VARCHAR2) RETURN VARCHAR2 IS pos BINARY_INTEGER; len BINARY_INTEGER; BEGIN pos := INSTR(url, 'www.'); len := INSTR(SUBSTR(url, pos + 4), '.') - 1; RETURN SUBSTR(url, pos + 4, len); END; SELECT DISTINCT get_domain(catalog_url) FROM orders;

Zugriff auf PL/SQL Objekte in Oracle12c Einem PL/SQL-Objekt können nun Rollen zugewiesen werden Erlaubt wesentlich bessere Rechte / Rollenkonzepte grant {role to function meine_funktion; ACCESSIBLE BY-Klausel verhindert direkten Aufruf eines Objektes Verhindern des direkten Aufrufs von "Helper Packages" create or replace package pkg_helper accessible by {other plsql object is : end pkg_helper;

Unsichtbare Spalten...... sind unsichtbar, oder...? SQL> alter table EMP modify (COMM invisible, HIREDATE invisible); SQL> desc EMP Name Null? Typ SQL> select ename, hiredate, sal, comm from emp; ----------------------------- -------- -------------------- EMPNO NOT NULL NUMBER(4) ENAME HIREDATE SAL COMM ENAME VARCHAR2(10) -------------------- ------------------- ---------- ---------- JOB VARCHAR2(9) SMITH 17.12.1980 00:00:00 800 MGR NUMBER(4) ALLEN 20.02.1981 00:00:00 1600 300 SAL NUMBER(7,2) WARD 22.02.1981 00:00:00 1250 500 DEPTNO NUMBER(2) JONES 02.04.1981 00:00:00 2975 SQL> select * from emp; EMPNO ENAME JOB MGR SAL DEPTNO ---------- -------------------- --------- ---------- ---------- ---------- 7369 SMITH CLERK 7902 800 20 7499 ALLEN SALESMAN 7698 1600 30 7521 WARD SALESMAN 7698 1250 30 7566 JONES MANAGER 7839 2975 20

Valid Time Temporal Management der "Gültigkeit" einer Tabellenzeile in der Datenbank Zusätzliche Spalten für "Gültig Von" und "Gültig Bis" Abfrage "zu einem Zeitpunkt" gültiger Rows mit SQL Bei Änderungen werden Spalten "Gültig Von" und "Gültig Bis" geschrieben Abfragen erfassen nur "gültige" Zeilen

SQL Pattern Matching Muster finden: über Tabellenzeilen hinweg! Finde "Double Bottoms" im Kursverlauf einer Aktie Wann beginnt das Muster? Wann endet das Muster? Welcher Aktienkurs? Muster innerhalb einer Woche? Aktienkurs 1 9 13 19 Tage

SQL Pattern Matching Muster finden: über Tabellenzeilen hinweg! Finde "Double Bottoms" im Kursverlauf einer Aktie Wann beginnt das Muster? Wann endet das Muster? Welcher Aktienkurs? SELECT first_x, last_z FROM ticker MATCH_RECOGNIZE ( Muster innerhalb einer Woche? PARTITION BY name ORDER BY time MEASURES FIRST(x.time) AS first_x LAST(z.time) AS last_z ONE ROW PER MATCH PATTERN (X+ Y+ W+ Z+) DEFINE X AS (price < PREV(price)) Y AS (price > PREV(price)) W AS (price < PREV(price)) Z AS (price > PREV(price)) X Y W Z Aktienkurs FIRST_X LAST_Z 1 9 13 19 Tage

if (linenext == null) { SQL next = ""; Pattern Matching else { next = linenext.getquantity(); if (!q.isempty() && (prev.isempty() (eq(q, prev) && gt(q, next)))) { state = "S"; return state; Muster finden: über Tabellenzeilen hinweg! if (gt(q, prev) && gt(q, next)) { state = "T"; return state; if (lt(q, prev) && lt(q, next)) { state = "B"; return state; if (!q.isempty() && (next.isempty() (gt(q, prev) && eq(q, next)))) { state = "E"; return state; if (q.isempty() eq(q, prev)) { state = "F"; return state; return state; private boolean eq(string a, String b) { if (a.isempty() b.isempty()) { return false; return a.equals(b); private boolean gt(string a, String b) { if (a.isempty() b.isempty()) { return false; return Double.parseDouble(a) > Double.parseDouble(b); private boolean lt(string a, String b) { if (a.isempty() b.isempty()) { return false; return Double.parseDouble(a) < Double.parseDouble(b); SELECT first_x, last_z FROM ticker MATCH_RECOGNIZE ( PARTITION BY name ORDER BY time MEASURES FIRST(x.time) AS first_x, LAST(z.time) AS last_z ONE ROW PER MATCH PATTERN (X+ Y+ W+ Z+) DEFINE X AS (price < PREV(price)), Y AS (price > PREV(price)), W AS (price < PREV(price)), Z AS (price > PREV(price) AND z.time - FIRST(x.time) <= 7 )) public String getstate() { return this.state; BagFactory bagfactory = BagFactory.getInstance(); 250+ Codezeilen Java 12 Zeilen SQL @Override public Tuple exec(tuple input) throws IOException { long c = 0; String line = ""; String pbkey = ""; V0Line nextline; V0Line thisline; Der Datenbank sagen, was zu tun ist nicht, wie es zu tun ist. V0Line processline; V0Line evalline = null; V0Line prevline; boolean nomorevalues = false; String matchlist = ""; ArrayList<V0Line> linefifo = new ArrayList<V0Line>(); boolean finished = false; DataBag output = bagfactory.newdefaultbag(); if (input == null) { return null; if (input.size() == 0) { return null;

Auf den Ort kommt es an: Oracle Spatial Spatial Performance-Boost alter system set SPATIAL_VECTOR_ACCELERATION = true Neue Funktionen und Möglichkeiten Unterstützung für neue Geometrietypen: NURBS, Raster Algebra, Neue Routing Engine Neuerungen in Oracle Maps: HTML5 Maps

Dokumente und XML: Unstrukturierte Daten XML DB ist nun integraler Bestandteil der Datenbank Unterstützung der jüngsten Standards XQuery-Update, XQuery-Fulltext Performance-Optimierungen XDB Performance, Oracle TEXT Near Real Time Indexing Oracle TEXT im Detail Automatische Spracherkennung, Reguläre Ausdrücke für Stopwörter, Pattern Stopclass, NEAR und "Mild Not" Operator und mehr...

Werkzeuge und Umgebungen Application Express SQL Developer Java in der Datenbank 'Develop for High Availibility'

APEX und Oracle12c Installieren und sofort nutzen keine Entwicklung! APEX-Patchset 4.2.3 ist verfügbar Volle Unterstützung für Oracle Multitenant APEX in der Container-Datenbank APEX in der Pluggable Database Neue, interessante Packaged Applications Survey Builder (APEX 4.2.2) Data Reporter Opportunity Tracker

SQL Developer Release 3.2

Oracle12c und Java Java in der Datenbank Java6 oder Java7 (JVM wird "pluggable") Java Logging und JNDI Support JDBC und Oracle12c JDBC & UCP Support für JavaSE 7 und JDBC 4.1 Nutzung von Oracle Multitenant via Service Names PL/SQL Typen ("boolean") können nun von Java aus angesprochen werden

Datenbank-Failover für die Middleware Situation bis Oracle11g End User Application Servers Database Servers Fokus liegt auf der Datenbank-Session TAF fokussiert auf Client-Server FCF/Fan fokussiert auf Connection Pool Aber kein Handling des Session State Nicht committetes DML PL/SQL Package state Session Contexts Und mehr... Auch bei TAF: Der Session State Der Entwickler muss etwas tun geht... verloren

Datenbank-Failover für die Middleware Transaction Guard und Application Continuity Transaction Guard Protokoll und Programmier-API für Entwickler Entwickler kann feststellen, welche Statements durchliefen und welche nicht Entwickler kann gezielt nur die "nicht gelaufenen" Kommandos wiederholen Application Continuity Selbstständiges Wiederholen nicht gelaufener Kommandos Ziel: Möglichst transparentes Failover für den Entwickler

Informationen in deutscher Sprache Communities APEX Community DBA Community Linux und Virtualisierung Exadata Community Veranstaltungen http://tinyurl.com/odd12c

Nutzen Sie Ihre Datenbank voll aus...? Analytic SQL XML Verarbeitung Mobile Applications (APEX) Java in the Database Fuzzy Search Location Data Flashback Query Linguistische Funktionen Native Webservices Image Processing (MultiMedia) PL/SQL Volltextsuche Pipelined Functions

Graphic Section Divider

Carsten.Czarski@oracle.com http://tinyurl.com/apexcommunity http://sql-plsql-de.blogspot.com http://oracle-text-de.blogspot.com http://oracle-spatial.blogspot.com http://plsqlexecoscomm.sourceforge.net http://plsqlmailclient.sourceforge.net Twitter: @cczarski @oraclebudb