SlideShare ist ein Scribd-Unternehmen logo
1 von 14
Downloaden Sie, um offline zu lesen
Oracle Technology Monthly | BU Core & Cloud Technologies
Feature des Monats
18c Developer Feature: Private Temporary Tables
Ulrike Schwinn (ulrike.schwinn@oracle.com)
BU Database & Cloud Technologies
ORACLE Deutschland B.V. & Co. KG
Twitter: @oraclebudb, @uschwinn
Blogs: https://blogs.oracle.com/coretec/
https://oraclecloud.de
Copyright © 2018, Oracle and/or its affiliates. All rights reserved.Oracle Technology Monthly | BU Core & Cloud Technologies
Developer Features in 18c – eine Auswahl
• Verbesserte JSON-Unterstützung
• Unterstützung von PGQL (SQL-ähnliche Abfragesprache für Property Graph)
• Faceted Navigation in Oracle Text
• External Tables: In-Memory und inline
• PL/SQL Hierarchical Profiler (DBMS_HPROF) Erweiterungen
• Nicht persistente Datentypen
• Large Objects (Binary und Text) mit Oracle Database In-Memory und Big Data SQL
• Mehr Approximate Query Funktionen
• Polymorphe Table Funktion
• Private Temporäre Tabellen
Copyright © 2018, Oracle and/or its affiliates. All rights reserved.Oracle Technology Monthly | BU Core & Cloud Technologies
Temporäre Tabellen (temporary tables)
• Eine globale temporäre Tabelle ist ein explizit erzeugtes persistentes
Objekt, das Session-private Daten für eine spezifizierte Dauer speichert.
• Eigenschaften:
– verfügbar seit Oracle 8i
– Tabellenstruktur ist für alle berechtigten Sessions sicht- und nutzbar
– Dateninhalt ist jeweils transaktions-spezifisch oder session-spezifisch
– Optimizer Statistiken können gemeinsam (shared) oder session-spezifisch verwendet
werden (seit 12.1)
– Können dynamisch für Oracle Active Data Guard Standby erzeugt werden (18c)
Copyright © 2018, Oracle and/or its affiliates. All rights reserved.Oracle Technology Monthly | BU Core & Cloud Technologies
Einschränkungen
• Können nicht partitioniert, ge-clustered oder index organisiert sein
• Können keinen Foreign Key, Spalten von “nested tables” oder invisible
Columns haben
• Paralleles UPDATE, DELETE und MERGE sind nicht unterstützt
• Nur die TABLESPACE Klausel kann spezifiziert werden
• Verteilte Transaktionen sind nicht unterstützt
• Details: SQL Language Reference Guide
Copyright © 2018, Oracle and/or its affiliates. All rights reserved.Oracle Technology Monthly | BU Core & Cloud Technologies
Private temporäre Tabellen
• Eine private temporäre Tabelle
– ist explizit definiert durch private memory-only Metadaten
– ist nur für die Session sichtbar, die sie erstellt hat
– ist transaktions-spezifisch oder session-spezifisch
Copyright © 2018, Oracle and/or its affiliates. All rights reserved.Oracle Technology Monthly | BU Core & Cloud Technologies
Globale vs private temporäre Tabellen
Eigenschaft Global Privat
Namen Wie bei permanten Tabellen Präfix definiert über
private_temp_table_prefix
Sichtbarkeit Alle Sessions Nur Session, die erzeugt hat
Typen Transaktions-spezifisch
Session-spezifisch
Transaktions-spezifisch
Session-spezifisch
Dauer Bis zum DROP Bis zum DROP oder Ende der Session oder
Transaktion
Erzeugen CREATE GLOBAL TEMPORARY TABLE CREATE PRIVATE TEMPORARY TABLE
Löschen DROP GLOBAL TEMPORARY TABLE DROP PRIVATE TEMPORARY TABLE oder implizit
am Ende der Session oder Transaktion
Copyright © 2018, Oracle and/or its affiliates. All rights reserved.Oracle Technology Monthly | BU Core & Cloud Technologies
Private temporäre Tabellen
• Private temporäre Tabellen-Namen beginnen mit ORA$PTT_
• Lassen sich über CREATE PRIVATE TEMPORARY TABLE erzeugen
– standardmässige Speicherung im Default TEMP Tablespace
• Kein implizites COMMIT
• keine Informationen in Data Dictionary Views wie USER_SEGMENTS/OBJECTS
• Überprüfung in DBA/USER_PRIVATE_TEMP_TABLES
SQL> select value, ISSES_MODIFIABLE, ISSYS_MODIFIABLE, ISPDB_MODIFIABLE
from v$parameter where name='private_temp_table_prefix'
VALUE ISSES ISSYS_MOD ISPDB
------------------------- ----- --------- -----
ORA$PTT_ FALSE DEFERRED TRUE
Copyright © 2018, Oracle and/or its affiliates. All rights reserved.Oracle Technology Monthly | BU Core & Cloud Technologies
Beispiel: Session-spezifisch
SQL> CREATE PRIVATE TEMPORARY TABLE ORA$PTT_sales_ptt_session
(time_id DATE,
amount_sold NUMBER(10,2))
ON COMMIT PRESERVE DEFINITION;
Table created.
SQL> insert into ora$ptt_sales_ptt_session values (sysdate,1);
1 row created.
SQL> commit;
SQL> select * from user_objects where object_name='ORA$PTT_SALES_PTT_SESSION';
no rows selected
SQL> select * from ora$ptt_sales_ptt_session;
TIME_ID AMOUNT_SOLD
--------- -----------
06-MAR-18 1
Copyright © 2018, Oracle and/or its affiliates. All rights reserved.Oracle Technology Monthly | BU Core & Cloud Technologies
Beispiel: Transaktions-spezifisch
SQL> CREATE PRIVATE TEMPORARY TABLE ORA$PTT_sales_ptt_transaction
(time_id DATE,
amount_sold NUMBER(10,2))
ON COMMIT DROP DEFINITION;
Table created.
SQL> insert into ora$ptt_sales_ptt_transaction values (sysdate,1);
1 row created.
-- nach Commit ist alles gelöscht
SQL> select owner, table_name, tablespace_name, duration
from user_private_temp_tables;
OWNER TABLE_NAME TABLESPACE DURATION
---------- ------------------------------ ---------- ---------------
SCOTT ORA$PTT_SALES_PTT_TRANSACTION TEMP TRANSACTION
SCOTT ORA$PTT_SALES_PTT_SESSION TEMP SESSION
Copyright © 2018, Oracle and/or its affiliates. All rights reserved.Oracle Technology Monthly | BU Core & Cloud Technologies
Wann sinnvoll?
• Temporäre Daten sollen in transienten Tabellen gespeichert werden und
– einmal befüllt, mehrmals gelesen und am Ende einer Transaktion oder Sitzung
gelöscht werden
• Wenn das Anlegen einer temporären Tabelle keine neue Transaktion
starten oder eine bestehende Transaktion festschreiben darf
• Wenn verschiedene Sessions desselben Benutzers den gleichen Namen für
eine temporäre Tabelle verwenden.
• Für Read-Only Datenbanken
Copyright © 2018, Oracle and/or its affiliates. All rights reserved.Oracle Technology Monthly | BU Core & Cloud Technologies
Zu Beachten
Zusätzlich gibt es folgende Einschränkungen:
• Dem Namen privater temporärer Tabellen muss immer ein Präfix
vorangestellt sein (definierbar über init.ora Parameter)
• Keine Indizes, materialisierten Views oder Zone Maps sind möglich
• Spalten mit Default Werten sind nicht möglich
• Können nicht in permanenten Objekten (wie z.B. Views oder Trigger)
referenziert werden
• Sind nicht über Database Links sichtbar
• Details: SQL Language Reference Guide
Copyright © 2018, Oracle and/or its affiliates. All rights reserved.Oracle Technology Monthly | BU Core & Cloud Technologies
Statistiken für private temporäre Tabellen
• Manuelles Sammeln von Statistiken ist nicht möglich …
Ausnahme: CREATE TABLE AS SELECT …
• Das bedeutet SQL> set autotrace on explain
SQL> select * from ORA$PTT_SALES_PTT_SESSION;
TIME_ID AMOUNT_SOLD
--------- -----------
05-MAR-18 1
Execution Plan
--------------------------------------------------------------------------------------------
Plan hash value: 3883909658
--------------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes |Cost(%CPU)|Time |
--------------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | 22 | 2(0) |00:00:01 |
| 1 | TABLE ACCESS FULL| ORA$PTT_SALES_PTT_SESSION | 1 | 22 | 2(0) |00:00:01 |
--------------------------------------------------------------------------------------------
Note
-----
- dynamic statistics used: dynamic sampling (level=2)
Copyright © 2018, Oracle and/or its affiliates. All rights reserved.Oracle Technology Monthly | BU Core & Cloud Technologies
Informationen
• Handbücher
– SQL Language Reference Guide
– Database Administrator’s Guide
– Database Concepts Guide
• blogs.oracle.com/coretec:
https://apex.oracle.com/pls/apex/germancommunities/dbacommunity/tipp/6581/index.html
• Youtube:
https://www.youtube.com/watch?v=q8vCRk_cgUU&list=PLHA__TOeNI7PYtnDhAy186sI-C3LjjrZX
• livesql.oracle.com
Copyright © 2018, Oracle and/or its affiliates. All rights reserved.Oracle Technology Monthly | BU Core & Cloud Technologies
Live SQL – Private Temporary Tables

Weitere ähnliche Inhalte

Ähnlich wie 18c: private temporary tables

Norbert Rieger – IT-Tage 2015 – Optimierung der Performance bei Oracle-Datenb...
Norbert Rieger – IT-Tage 2015 – Optimierung der Performance bei Oracle-Datenb...Norbert Rieger – IT-Tage 2015 – Optimierung der Performance bei Oracle-Datenb...
Norbert Rieger – IT-Tage 2015 – Optimierung der Performance bei Oracle-Datenb...Informatik Aktuell
 
Datentransfer mit Oracle Tools
Datentransfer mit Oracle ToolsDatentransfer mit Oracle Tools
Datentransfer mit Oracle ToolsChristian Gohmann
 
Performance-Analyse von Oracle-Datenbanken mit Panorama
Performance-Analyse von Oracle-Datenbanken mit PanoramaPerformance-Analyse von Oracle-Datenbanken mit Panorama
Performance-Analyse von Oracle-Datenbanken mit PanoramaPeter Ramm
 
Oracle-DB: Panorama-Sampler - Eigenes Workload Repository für Panorama
Oracle-DB: Panorama-Sampler - Eigenes Workload Repository für PanoramaOracle-DB: Panorama-Sampler - Eigenes Workload Repository für Panorama
Oracle-DB: Panorama-Sampler - Eigenes Workload Repository für PanoramaPeter Ramm
 
Ausgewählte PL/SQL Packages (3)
Ausgewählte PL/SQL Packages (3)Ausgewählte PL/SQL Packages (3)
Ausgewählte PL/SQL Packages (3)Ulrike Schwinn
 
Komprimierung in der Oracle Datenbank (Stand 11gR2, 12c)
Komprimierung in der Oracle Datenbank (Stand 11gR2, 12c)Komprimierung in der Oracle Datenbank (Stand 11gR2, 12c)
Komprimierung in der Oracle Datenbank (Stand 11gR2, 12c)Ulrike Schwinn
 
SQL Tuning Sets: Generieren, Verwenden, Transferieren, Szenarios
SQL Tuning Sets: Generieren, Verwenden, Transferieren, Szenarios SQL Tuning Sets: Generieren, Verwenden, Transferieren, Szenarios
SQL Tuning Sets: Generieren, Verwenden, Transferieren, Szenarios Ulrike Schwinn
 
Datenbank-Hausputz für Einsteiger
Datenbank-Hausputz für EinsteigerDatenbank-Hausputz für Einsteiger
Datenbank-Hausputz für EinsteigerMarkus Flechtner
 
Oracle Database 12c Release 2
Oracle Database 12c Release 2 Oracle Database 12c Release 2
Oracle Database 12c Release 2 oraclebudb
 
Überblick zu Oracle Database 12c Release 2
Überblick zu Oracle Database 12c Release 2Überblick zu Oracle Database 12c Release 2
Überblick zu Oracle Database 12c Release 2Ulrike Schwinn
 
Sensitive Daten in der Oracle Datenbank
Sensitive Daten in der Oracle DatenbankSensitive Daten in der Oracle Datenbank
Sensitive Daten in der Oracle DatenbankUlrike Schwinn
 
Migration auf die OBIEE - OPITZ CONSULTING - Till Sander
Migration auf die OBIEE - OPITZ CONSULTING - Till SanderMigration auf die OBIEE - OPITZ CONSULTING - Till Sander
Migration auf die OBIEE - OPITZ CONSULTING - Till SanderOPITZ CONSULTING Deutschland
 
Oracle workshop sessiontracing
Oracle workshop sessiontracingOracle workshop sessiontracing
Oracle workshop sessiontracingciganek
 
Oracle Datenbank Architektur - nicht nur für Einsteiger
Oracle Datenbank Architektur - nicht nur für EinsteigerOracle Datenbank Architektur - nicht nur für Einsteiger
Oracle Datenbank Architektur - nicht nur für EinsteigerMartin Klier
 
Schlaglichter Oracle DB 11gR2 - DOAG Regio-Treffen 2010 - OPITZ CONSULTING - ...
Schlaglichter Oracle DB 11gR2 - DOAG Regio-Treffen 2010 - OPITZ CONSULTING - ...Schlaglichter Oracle DB 11gR2 - DOAG Regio-Treffen 2010 - OPITZ CONSULTING - ...
Schlaglichter Oracle DB 11gR2 - DOAG Regio-Treffen 2010 - OPITZ CONSULTING - ...OPITZ CONSULTING Deutschland
 
Robert Panther – IT-Tage 2015 – SQL Server Indizes
Robert Panther – IT-Tage 2015 – SQL Server IndizesRobert Panther – IT-Tage 2015 – SQL Server Indizes
Robert Panther – IT-Tage 2015 – SQL Server IndizesInformatik Aktuell
 
Ausgewählte PL/SQL Packages (1)
Ausgewählte PL/SQL Packages (1)Ausgewählte PL/SQL Packages (1)
Ausgewählte PL/SQL Packages (1)Ulrike Schwinn
 
DOAG 2015 enterprise_securitymitlda_pundpki-pub
DOAG 2015 enterprise_securitymitlda_pundpki-pubDOAG 2015 enterprise_securitymitlda_pundpki-pub
DOAG 2015 enterprise_securitymitlda_pundpki-pubLoopback.ORG
 
Oracle 11g - Neuerungen im Überblick
Oracle 11g - Neuerungen im ÜberblickOracle 11g - Neuerungen im Überblick
Oracle 11g - Neuerungen im ÜberblickGFU Cyrus AG
 
Oracle Old Features DOAG 2011
Oracle Old Features DOAG 2011Oracle Old Features DOAG 2011
Oracle Old Features DOAG 2011Uwe Küchler
 

Ähnlich wie 18c: private temporary tables (20)

Norbert Rieger – IT-Tage 2015 – Optimierung der Performance bei Oracle-Datenb...
Norbert Rieger – IT-Tage 2015 – Optimierung der Performance bei Oracle-Datenb...Norbert Rieger – IT-Tage 2015 – Optimierung der Performance bei Oracle-Datenb...
Norbert Rieger – IT-Tage 2015 – Optimierung der Performance bei Oracle-Datenb...
 
Datentransfer mit Oracle Tools
Datentransfer mit Oracle ToolsDatentransfer mit Oracle Tools
Datentransfer mit Oracle Tools
 
Performance-Analyse von Oracle-Datenbanken mit Panorama
Performance-Analyse von Oracle-Datenbanken mit PanoramaPerformance-Analyse von Oracle-Datenbanken mit Panorama
Performance-Analyse von Oracle-Datenbanken mit Panorama
 
Oracle-DB: Panorama-Sampler - Eigenes Workload Repository für Panorama
Oracle-DB: Panorama-Sampler - Eigenes Workload Repository für PanoramaOracle-DB: Panorama-Sampler - Eigenes Workload Repository für Panorama
Oracle-DB: Panorama-Sampler - Eigenes Workload Repository für Panorama
 
Ausgewählte PL/SQL Packages (3)
Ausgewählte PL/SQL Packages (3)Ausgewählte PL/SQL Packages (3)
Ausgewählte PL/SQL Packages (3)
 
Komprimierung in der Oracle Datenbank (Stand 11gR2, 12c)
Komprimierung in der Oracle Datenbank (Stand 11gR2, 12c)Komprimierung in der Oracle Datenbank (Stand 11gR2, 12c)
Komprimierung in der Oracle Datenbank (Stand 11gR2, 12c)
 
SQL Tuning Sets: Generieren, Verwenden, Transferieren, Szenarios
SQL Tuning Sets: Generieren, Verwenden, Transferieren, Szenarios SQL Tuning Sets: Generieren, Verwenden, Transferieren, Szenarios
SQL Tuning Sets: Generieren, Verwenden, Transferieren, Szenarios
 
Datenbank-Hausputz für Einsteiger
Datenbank-Hausputz für EinsteigerDatenbank-Hausputz für Einsteiger
Datenbank-Hausputz für Einsteiger
 
Oracle Database 12c Release 2
Oracle Database 12c Release 2 Oracle Database 12c Release 2
Oracle Database 12c Release 2
 
Überblick zu Oracle Database 12c Release 2
Überblick zu Oracle Database 12c Release 2Überblick zu Oracle Database 12c Release 2
Überblick zu Oracle Database 12c Release 2
 
Sensitive Daten in der Oracle Datenbank
Sensitive Daten in der Oracle DatenbankSensitive Daten in der Oracle Datenbank
Sensitive Daten in der Oracle Datenbank
 
Migration auf die OBIEE - OPITZ CONSULTING - Till Sander
Migration auf die OBIEE - OPITZ CONSULTING - Till SanderMigration auf die OBIEE - OPITZ CONSULTING - Till Sander
Migration auf die OBIEE - OPITZ CONSULTING - Till Sander
 
Oracle workshop sessiontracing
Oracle workshop sessiontracingOracle workshop sessiontracing
Oracle workshop sessiontracing
 
Oracle Datenbank Architektur - nicht nur für Einsteiger
Oracle Datenbank Architektur - nicht nur für EinsteigerOracle Datenbank Architektur - nicht nur für Einsteiger
Oracle Datenbank Architektur - nicht nur für Einsteiger
 
Schlaglichter Oracle DB 11gR2 - DOAG Regio-Treffen 2010 - OPITZ CONSULTING - ...
Schlaglichter Oracle DB 11gR2 - DOAG Regio-Treffen 2010 - OPITZ CONSULTING - ...Schlaglichter Oracle DB 11gR2 - DOAG Regio-Treffen 2010 - OPITZ CONSULTING - ...
Schlaglichter Oracle DB 11gR2 - DOAG Regio-Treffen 2010 - OPITZ CONSULTING - ...
 
Robert Panther – IT-Tage 2015 – SQL Server Indizes
Robert Panther – IT-Tage 2015 – SQL Server IndizesRobert Panther – IT-Tage 2015 – SQL Server Indizes
Robert Panther – IT-Tage 2015 – SQL Server Indizes
 
Ausgewählte PL/SQL Packages (1)
Ausgewählte PL/SQL Packages (1)Ausgewählte PL/SQL Packages (1)
Ausgewählte PL/SQL Packages (1)
 
DOAG 2015 enterprise_securitymitlda_pundpki-pub
DOAG 2015 enterprise_securitymitlda_pundpki-pubDOAG 2015 enterprise_securitymitlda_pundpki-pub
DOAG 2015 enterprise_securitymitlda_pundpki-pub
 
Oracle 11g - Neuerungen im Überblick
Oracle 11g - Neuerungen im ÜberblickOracle 11g - Neuerungen im Überblick
Oracle 11g - Neuerungen im Überblick
 
Oracle Old Features DOAG 2011
Oracle Old Features DOAG 2011Oracle Old Features DOAG 2011
Oracle Old Features DOAG 2011
 

18c: private temporary tables

  • 1. Oracle Technology Monthly | BU Core & Cloud Technologies Feature des Monats 18c Developer Feature: Private Temporary Tables Ulrike Schwinn (ulrike.schwinn@oracle.com) BU Database & Cloud Technologies ORACLE Deutschland B.V. & Co. KG Twitter: @oraclebudb, @uschwinn Blogs: https://blogs.oracle.com/coretec/ https://oraclecloud.de
  • 2. Copyright © 2018, Oracle and/or its affiliates. All rights reserved.Oracle Technology Monthly | BU Core & Cloud Technologies Developer Features in 18c – eine Auswahl • Verbesserte JSON-Unterstützung • Unterstützung von PGQL (SQL-ähnliche Abfragesprache für Property Graph) • Faceted Navigation in Oracle Text • External Tables: In-Memory und inline • PL/SQL Hierarchical Profiler (DBMS_HPROF) Erweiterungen • Nicht persistente Datentypen • Large Objects (Binary und Text) mit Oracle Database In-Memory und Big Data SQL • Mehr Approximate Query Funktionen • Polymorphe Table Funktion • Private Temporäre Tabellen
  • 3. Copyright © 2018, Oracle and/or its affiliates. All rights reserved.Oracle Technology Monthly | BU Core & Cloud Technologies Temporäre Tabellen (temporary tables) • Eine globale temporäre Tabelle ist ein explizit erzeugtes persistentes Objekt, das Session-private Daten für eine spezifizierte Dauer speichert. • Eigenschaften: – verfügbar seit Oracle 8i – Tabellenstruktur ist für alle berechtigten Sessions sicht- und nutzbar – Dateninhalt ist jeweils transaktions-spezifisch oder session-spezifisch – Optimizer Statistiken können gemeinsam (shared) oder session-spezifisch verwendet werden (seit 12.1) – Können dynamisch für Oracle Active Data Guard Standby erzeugt werden (18c)
  • 4. Copyright © 2018, Oracle and/or its affiliates. All rights reserved.Oracle Technology Monthly | BU Core & Cloud Technologies Einschränkungen • Können nicht partitioniert, ge-clustered oder index organisiert sein • Können keinen Foreign Key, Spalten von “nested tables” oder invisible Columns haben • Paralleles UPDATE, DELETE und MERGE sind nicht unterstützt • Nur die TABLESPACE Klausel kann spezifiziert werden • Verteilte Transaktionen sind nicht unterstützt • Details: SQL Language Reference Guide
  • 5. Copyright © 2018, Oracle and/or its affiliates. All rights reserved.Oracle Technology Monthly | BU Core & Cloud Technologies Private temporäre Tabellen • Eine private temporäre Tabelle – ist explizit definiert durch private memory-only Metadaten – ist nur für die Session sichtbar, die sie erstellt hat – ist transaktions-spezifisch oder session-spezifisch
  • 6. Copyright © 2018, Oracle and/or its affiliates. All rights reserved.Oracle Technology Monthly | BU Core & Cloud Technologies Globale vs private temporäre Tabellen Eigenschaft Global Privat Namen Wie bei permanten Tabellen Präfix definiert über private_temp_table_prefix Sichtbarkeit Alle Sessions Nur Session, die erzeugt hat Typen Transaktions-spezifisch Session-spezifisch Transaktions-spezifisch Session-spezifisch Dauer Bis zum DROP Bis zum DROP oder Ende der Session oder Transaktion Erzeugen CREATE GLOBAL TEMPORARY TABLE CREATE PRIVATE TEMPORARY TABLE Löschen DROP GLOBAL TEMPORARY TABLE DROP PRIVATE TEMPORARY TABLE oder implizit am Ende der Session oder Transaktion
  • 7. Copyright © 2018, Oracle and/or its affiliates. All rights reserved.Oracle Technology Monthly | BU Core & Cloud Technologies Private temporäre Tabellen • Private temporäre Tabellen-Namen beginnen mit ORA$PTT_ • Lassen sich über CREATE PRIVATE TEMPORARY TABLE erzeugen – standardmässige Speicherung im Default TEMP Tablespace • Kein implizites COMMIT • keine Informationen in Data Dictionary Views wie USER_SEGMENTS/OBJECTS • Überprüfung in DBA/USER_PRIVATE_TEMP_TABLES SQL> select value, ISSES_MODIFIABLE, ISSYS_MODIFIABLE, ISPDB_MODIFIABLE from v$parameter where name='private_temp_table_prefix' VALUE ISSES ISSYS_MOD ISPDB ------------------------- ----- --------- ----- ORA$PTT_ FALSE DEFERRED TRUE
  • 8. Copyright © 2018, Oracle and/or its affiliates. All rights reserved.Oracle Technology Monthly | BU Core & Cloud Technologies Beispiel: Session-spezifisch SQL> CREATE PRIVATE TEMPORARY TABLE ORA$PTT_sales_ptt_session (time_id DATE, amount_sold NUMBER(10,2)) ON COMMIT PRESERVE DEFINITION; Table created. SQL> insert into ora$ptt_sales_ptt_session values (sysdate,1); 1 row created. SQL> commit; SQL> select * from user_objects where object_name='ORA$PTT_SALES_PTT_SESSION'; no rows selected SQL> select * from ora$ptt_sales_ptt_session; TIME_ID AMOUNT_SOLD --------- ----------- 06-MAR-18 1
  • 9. Copyright © 2018, Oracle and/or its affiliates. All rights reserved.Oracle Technology Monthly | BU Core & Cloud Technologies Beispiel: Transaktions-spezifisch SQL> CREATE PRIVATE TEMPORARY TABLE ORA$PTT_sales_ptt_transaction (time_id DATE, amount_sold NUMBER(10,2)) ON COMMIT DROP DEFINITION; Table created. SQL> insert into ora$ptt_sales_ptt_transaction values (sysdate,1); 1 row created. -- nach Commit ist alles gelöscht SQL> select owner, table_name, tablespace_name, duration from user_private_temp_tables; OWNER TABLE_NAME TABLESPACE DURATION ---------- ------------------------------ ---------- --------------- SCOTT ORA$PTT_SALES_PTT_TRANSACTION TEMP TRANSACTION SCOTT ORA$PTT_SALES_PTT_SESSION TEMP SESSION
  • 10. Copyright © 2018, Oracle and/or its affiliates. All rights reserved.Oracle Technology Monthly | BU Core & Cloud Technologies Wann sinnvoll? • Temporäre Daten sollen in transienten Tabellen gespeichert werden und – einmal befüllt, mehrmals gelesen und am Ende einer Transaktion oder Sitzung gelöscht werden • Wenn das Anlegen einer temporären Tabelle keine neue Transaktion starten oder eine bestehende Transaktion festschreiben darf • Wenn verschiedene Sessions desselben Benutzers den gleichen Namen für eine temporäre Tabelle verwenden. • Für Read-Only Datenbanken
  • 11. Copyright © 2018, Oracle and/or its affiliates. All rights reserved.Oracle Technology Monthly | BU Core & Cloud Technologies Zu Beachten Zusätzlich gibt es folgende Einschränkungen: • Dem Namen privater temporärer Tabellen muss immer ein Präfix vorangestellt sein (definierbar über init.ora Parameter) • Keine Indizes, materialisierten Views oder Zone Maps sind möglich • Spalten mit Default Werten sind nicht möglich • Können nicht in permanenten Objekten (wie z.B. Views oder Trigger) referenziert werden • Sind nicht über Database Links sichtbar • Details: SQL Language Reference Guide
  • 12. Copyright © 2018, Oracle and/or its affiliates. All rights reserved.Oracle Technology Monthly | BU Core & Cloud Technologies Statistiken für private temporäre Tabellen • Manuelles Sammeln von Statistiken ist nicht möglich … Ausnahme: CREATE TABLE AS SELECT … • Das bedeutet SQL> set autotrace on explain SQL> select * from ORA$PTT_SALES_PTT_SESSION; TIME_ID AMOUNT_SOLD --------- ----------- 05-MAR-18 1 Execution Plan -------------------------------------------------------------------------------------------- Plan hash value: 3883909658 -------------------------------------------------------------------------------------------- | Id | Operation | Name | Rows | Bytes |Cost(%CPU)|Time | -------------------------------------------------------------------------------------------- | 0 | SELECT STATEMENT | | 1 | 22 | 2(0) |00:00:01 | | 1 | TABLE ACCESS FULL| ORA$PTT_SALES_PTT_SESSION | 1 | 22 | 2(0) |00:00:01 | -------------------------------------------------------------------------------------------- Note ----- - dynamic statistics used: dynamic sampling (level=2)
  • 13. Copyright © 2018, Oracle and/or its affiliates. All rights reserved.Oracle Technology Monthly | BU Core & Cloud Technologies Informationen • Handbücher – SQL Language Reference Guide – Database Administrator’s Guide – Database Concepts Guide • blogs.oracle.com/coretec: https://apex.oracle.com/pls/apex/germancommunities/dbacommunity/tipp/6581/index.html • Youtube: https://www.youtube.com/watch?v=q8vCRk_cgUU&list=PLHA__TOeNI7PYtnDhAy186sI-C3LjjrZX • livesql.oracle.com
  • 14. Copyright © 2018, Oracle and/or its affiliates. All rights reserved.Oracle Technology Monthly | BU Core & Cloud Technologies Live SQL – Private Temporary Tables