Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Erstellen einer globalen temporären Tabelle in Oracle

- Oracle erlaubt uns,  eine temporäre Tabelle zu erstellen .

-Die Definition einer temporären Tabelle ist für alle Sitzungen sichtbar, aber die Daten in einer temporären Tabelle sind nur für die Sitzung sichtbar, die die Daten in die Tabelle einfügt.

- Wir müssen die Anweisung CREATE GLOBAL TEMPORARY TABLE verwenden, um eine temporäre Tabelle zu erstellen.

- Die ON COMMIT-Klausel gibt an, ob die Daten in der Tabelle transaktionsspezifisch (Standardeinstellung) oder sitzungsspezifisch sind

ZEILEN LÖSCHEN

Dadurch wird eine transaktionsspezifische temporäre Tabelle erstellt. Eine Sitzung wird an die temporäre Tabelle gebunden, indem zuerst eine Transaktion in die Tabelle eingefügt wird. Die Bindung verschwindet am Ende der Transaktion. Die Datenbank schneidet die Tabelle nach jedem Commit ab (löscht alle Zeilen).

REIHEN ERHALTEN

Dadurch wird eine sitzungsspezifische temporäre Tabelle erstellt. Eine Sitzung wird mit der ersten Einfügung in die Tabelle in der Sitzung an die temporäre Tabelle gebunden. Diese Bindung verschwindet am Ende der Sitzung oder durch Ausgabe eines TRUNCATE der Tabelle in der Sitzung. Die Datenbank schneidet die Tabelle ab, wenn Sie die Sitzung beenden.

Temporäre Tabellen sind in Anwendungen nützlich, in denen eine Ergebnismenge gepuffert werden soll, vielleicht weil sie durch Ausführen mehrerer DML-Operationen erstellt wird

CREATE GLOBAL TEMPORARY TABLE GL_DATA_TEMP
(startdate DATE,
enddate DATE,
gl_id CHAR(20))
ON COMMIT DELETE ROWS;

Indizes können auf temporären Tabellen erstellt werden . Sie sind außerdem temporär und die Daten im Index haben denselben Sitzungs- oder Transaktionsbereich wie die Daten in der zugrunde liegenden Tabelle..

Wenn die TRUNCATE-Anweisung für eine temporäre Tabelle ausgegeben wird, werden nur die sitzungsspezifischen Daten abgeschnitten. Es gibt keine Auswirkung auf die Daten anderer Sitzungen.

Wenn Sie eine Transaktion rückgängig machen, gehen die eingegebenen Daten verloren, obwohl die Tabellendefinition bestehen bleibt.

Daten in temporären Tabellen werden in temporären Segmenten im temporären Tabellenbereich gespeichert, der keine Wiederholungen erzeugt, sodass Operationen mit globalen temporären Tabellen relativ schneller sind. Rückgängigmachen wird jedoch immer noch im Undo-Tablespace generiert, der über Redo-Protokollierung verfügt. Daher werden Redo-Operationen in globalen temporären Tabellen nicht vollständig eliminiert, aber sie sind relativ geringer

Daten in temporären Tabellen werden am Ende der Datenbanksitzung automatisch gelöscht, auch wenn sie nicht normal endet.

Ansichten können für temporäre Tabellen und Kombinationen aus temporären und permanenten Tabellen erstellt werden. Ihnen können Trigger zugeordnet werden

Mit der Oracle-Version 12.1 (12c-Datenbank) wurde das Konzept des temporären Rückgängigmachens eingeführt, das es ermöglicht, die Undo-Segmente für globale temporäre Tabellen im temporären Tablespace zu speichern. Dadurch können globale temporäre Tabellen in physischen Standby-Datenbanken und Nur-Lese-Datenbanken verwendet werden, und es entfällt die Notwendigkeit, redo.

zu erstellen

ALTER SYSTEM SET TEMP_UNDO_ENABLED =TRUE;
ALTER SYSTEM SET TEMP_UNDO_ENABLED =FALSE;