sql >> Database >  >> RDS >> Oracle

Een globale tijdelijke tabel maken in Oracle

-Oracle stelt ons in staat  een tijdelijke tabel te maken .

-De definitie van een tijdelijke tabel is zichtbaar voor alle sessies, maar de gegevens in een tijdelijke tabel zijn alleen zichtbaar voor de sessie die de gegevens in de tabel invoegt.

-We moeten de instructie CREATE GLOBAL TEMPORARY TABLE gebruiken om een ​​tijdelijke tabel te maken.

-De clausule ON COMMIT geeft aan of de gegevens in de tabel transactiespecifiek (de standaard) of sessiespecifiek zijn

RIJEN VERWIJDEREN

Dit creëert een tijdelijke tabel die transactiespecifiek is. Een sessie wordt gebonden aan de tijdelijke tabel met een transactie die eerst in de tabel wordt ingevoegd. De binding verdwijnt aan het einde van de transactie. De database kapt de tabel af (wis alle rijen) na elke commit.

BEHOUD RIJEN

Hiermee wordt een tijdelijke tabel gemaakt die sessiespecifiek is. Een sessie wordt gebonden aan de tijdelijke tabel met de eerste invoeging in de tabel in de sessie. Deze binding verdwijnt aan het einde van de sessie of door een TRUNCATE van de tabel in de sessie uit te geven. De database kapt de tabel af wanneer u de sessie beëindigt.

Tijdelijke tabellen zijn handig in toepassingen waar een resultatenset moet worden gebufferd, misschien omdat deze is samengesteld door meerdere DML-bewerkingen uit te voeren

MAAK GLOBALE TIJDELIJKE TABEL GL_DATA_TEMP
(startdatum DATE,
einddatum DATE,
gl_id CHAR(20))
OP COMMIT VERWIJDER RIJEN;

Indexen kunnen worden gemaakt op tijdelijke tabellen . Ze zijn ook tijdelijk en de gegevens in de index hebben hetzelfde sessie- of transactiebereik als de gegevens in de onderliggende tabel.

Als de TRUNCATE-instructie wordt gegeven voor een tijdelijke tabel, worden alleen de sessiespecifieke gegevens afgekapt. Er is geen effect op de gegevens van andere sessies.

Als u een transactie terugdraait, gaan de ingevoerde gegevens verloren, hoewel de tabeldefinitie blijft bestaan.

Gegevens in tijdelijke tabellen worden opgeslagen in tijdelijke segmenten in de tijdelijke tabelruimte die geen herhalingen genereert, dus de bewerking met behulp van een globale tijdelijke tabel is relatief sneller. Maar ongedaan maken wordt nog steeds gegenereerd in de tabelruimte voor ongedaan maken met logboekregistratie voor opnieuw uitvoeren. Dus opnieuw uitvoeren wordt niet volledig geëlimineerd in Global tijdelijke tabellen, maar ze zijn relatief lager

Gegevens in tijdelijke tabellen worden automatisch verwijderd aan het einde van de databasesessie, zelfs als deze abnormaal eindigt.

Views kunnen worden gemaakt tegen tijdelijke tabellen en combinaties van tijdelijke en permanente tabellen. Er kunnen triggers aan zijn gekoppeld

Met 12.1 (12c database) Oracle release , is het concept van tijdelijk ongedaan maken geïntroduceerd waarmee de ongedaan maken segmenten voor globale tijdelijke tabellen kunnen worden opgeslagen in de tijdelijke tabelruimte. Hierdoor kunnen globale tijdelijke tabellen worden gebruikt in fysieke standby-databases en alleen-lezen databases, en is het niet meer nodig om opnieuw te maken.

WIJZIG SYSTEEMINSTELLING TEMP_UNDO_ENABLED =WAAR;
WIJZIG SYSTEEMINSTELLING TEMP_UNDO_ENABLED =ONWAAR;


  1. Microsoft T-SQL naar Oracle SQL vertaling

  2. Een goede referentie voor Oracle PL/SQL

  3. Is er een SQLite-equivalent van MySQL's DESCRIBE [tabel]?

  4. Hoe orakelindexen kiezen en optimaliseren?