Donanım Merkezi
 

Geri git   Donanım Merkezi > Yazılım > Programlama

Cevapla
 
LinkBack Seçenekler Stil
Alt 10-28-2006, 01:51 PM   #1 (permalink)
DM Sever
 
Üyelik tarihi: Jan 2006
Nerden: Ankara
Mesajlar: 128
İtibar Gücü: 0 kendo is an unknown quantity at this point
kendo - MSN üzeri Mesaj gönder
Oracle da Geçici Tablolar (Temporary Tables)

Oracle klasik olan ve verilerin kalıcı olarak tutulduğu tablo tiplerinden farklı olarak, verilerin geçici olarak tutulabildiği tablo desteği de sağlamaktadır.Geçicilikten kasıt bu tabloların transaction ya da session bazlı olarak tutulmasıdır.Yani bu tür tablolardaki veriler ya transaction sonunda “COMMIT” edilene kadar ya da session sonlandırılana kadar tutulur.

Genel olarak incelemek gerekirse aşağıdaki noktalara değinmekte fayda var:

1) Geçici tablolar , geçici segmentleri (temporary segments) kullanırlar.Normal tablolardan farklı olarak, kendileri (ve oluşturulduysa indeks(ler)i) oluşturuldukları zaman değil INSERT (ya da CREATE TABLE AS SELECT) işleminden sonra veritabanında yer işgal etmeye başlarlar. Transaction bazlı ise transaction sonlandıgında (COMMIT), session bazlı ise session sonlandığında geçici segmentte yazılan bilgiler silinir.

2) Bu tabloları oluşturmak için “CREATE GLOBAL TEMPORARY TABLE” anahtar sözcükleri kullanılır.Temel olarak session bazlıdırlar.Bundan kasıt aynı geçici tabloyu kullanacak olan 2 farklı session diğer session’da kullanılan geçici tablodan bağımsızdır, veri o session’a özgüdür.(Bu sebeble DML lock mekanizmasına ihtiyaç yoktur.)Örneğin bir session’da geçici tabloya yapılan truncate işlemi diğer session’daki geçici tabloyu etkilemez.Diğer session’daki tablo truncate olmaz.Session herhangibir sekilde sonlandıgında geçici tablodaki bilgiler otomatik olarak silinir, kaybedilir.Her session kendi session’ındaki geçici tablo bilgilerini görür.

3) Geçici tablolar üzerinde yapılan herhangibir DML sonrasında veri değişikliği sebebi ile bir “redo log” üretimi olmaz.Bununla birlikte veri için “undo log” ve “undo log”’lar için de bir redo log üretimi olur.(Redo log: commit yapılmadan evvel tüm değişikliklerin tutulduğu yer, Undo : -rollback- ,verinin DML yapılmadan (değiştirilmeden) evvelki hali)

4) Geçici de olsalar bu tablolar üzerinde CREATE INDEX ile indeks oluşturmak mümkündür.Tabi bu indekste tablonun kendisi gibi geçicidir.Oluşturulan indeks bilgisi de session bazlıdır.Diğer session’lar bunu görmez.Hatta bu tablolar ile VIEW lar da oluşturulabilir , üzerlerinde trigger bile yazılabilir.Yine bu tabloların tanımları (verileri değil) EXPORT ve IMPORT yapılabilir.

5) Transaction bazlı geçici tablolar o transaction ya da bu transaction’ın alt transaction’ları tarafından ulaşılabilirdirler.Bununla birlikte aynı session içersindeki transctionlar gecici tabloyu “concurrent” olarak kullanamazlar.Örneğin bir transaction geçici tablota bir INSERT yaptığında bu transaction’ın alt transaction’ları artık bu geçici tabloyu kullanamazlar.Tersi durumda yani alt transaciton INSERT yaparsa , bu transaciton sonunda veri kaybolur ve ne kendisi ne de ana transaction tabloya ulaşamaz.

Kullanıma örnekler verecek olursak : transaction sürerken ara sonuçları tutabileciğimiz bir tablo olarak kullanılbileceği gibi ,çok fazla “redo” üretileceği ama bunu istemediğimiz durumlarda ya da bir rapor cekileceğinde referans tablo olarak uygun şekilde kullanılabilir.

sentaks

Transaction bazlı geçici tablo oluşturmak için (Her commit’te veriler silinir):
create global temporary table
table_name [ table definition ]
on commit delete rows;

Session bazlı geçici tablo oluşturmak için (veriler session sonuna kadar tutulur.)
create global temporary table
table_name [ table definition ]
on commit preserve rows;

ALINTIDIR
kendo Çevrimdışı  
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Stumble this Post!Google Bookmark this Post!
Alıntı ile Cevapla
Cevapla


Konuyu Toplam 1 Üye okuyor. (0 Kayıtlı üye ve 1 Misafir)
 
Seçenekler
Stil

Yetkileriniz
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Açık
Smileler Açık
[IMG] Kodları Açık
HTML-KodlarıKapalı
Trackbacks are Açık
Pingbacks are Açık
Refbacks are Açık


Bütün Zaman Ayarları WEZ +4 olarak düzenlenmiştir. Şu Anki Saat: 08:09 PM .


Donanım forumu - oyun - gtaoyun hilelerioyun - voip  - eğlence - barbie oyunları
 

Powered by vBulletin® Version 3.7.3
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.2.0