Rastgele Yazılar : Unix İşletim Sistemi Dosyaları Görüntüleme
Rastgele Yazılar : Oracle WRAP Utility
Rastgele Yazılar : Oracle Profiles
Rastgele Yazılar : Veri Ambarlarında Staging Alanının Önemi
Rastgele Yazılar : SQL ile Stored Procedure Kullanımı
Rastgele Yazılar : IBM'den çevre dostu veritabanı sistemi
Rastgele Yazılar : Mükerrer kayıtların silinmesi
Rastgele Yazılar : Rman Restore - Recover Operasyonuna Canlı Bir Ornek (re...
Rastgele Yazılar : Veritabanı Host Adı / IP Adresi Değiştiğinde OEM Konfig...
Rastgele Yazılar : Rman ile archive logları silmek (crontab)
Merhabalar,
Sequence
Oracle'da "sequence" yani Türkçe'si ile sıra, dizi veya sekans olarak adlandırdığımız yapılar bulunmaktadır. Bu yapıların amacı belirlediğimiz bir başlangıç noktasından başlayarak, artı veya eksi yönde sayı arttırmaktır. Dizi, sürekli olarak kullanımdan doğan numara artış veya azalışlarını temin etmektedir. Diziler genelde sanal bir anahtar olarak kullanılır ve bir çeşit sıralama yapabilmemiz için faydalıdır. Tıpkı constraint'ler gibi, sequence'lar da data dictionary içerisinde bulunur ve kayıtları tutulur. Herhangi bir alan tahsis etmezler, yalnızca sayalar ve sıra tutarlar. Dizilere bir üst veya alt limit vererek, nerede biteceğini ve yeniden başlaması gerektiğini de söyleyebiliyoruz.
Sequence Yaratmak ve Düşürmek
Sekans veya diziler CREATE SEQUENCE ifadesi ile yaratılırlar. İlk önce bu ifade ile birlikte nelerin varsayılan olarak gösterildiğini ve hangi parametreleri değiştirebileceğimize bakalım.
SQL> CREATE SEQUENCE ogan_seq START WITH 1001;
Sequence created.
START WITH: Sekansın hangi numara veya sayı ile başlayacağını ifade eder. Azalan sekanslar için MAXVALUE değeri -1 iken artış gösterecek olan sekanslar için varsayılan MINVALUE değeri 1'dir.
INCREMENT BY: Arka arkaya devamı gelecek ve üretilecek olan numara veya sayıların hangi aralıklarla üretileceğini ifade eder. Eğer azalan sekans yaratmak isterseniz INCREMENT BY değerini negatif olarak ayarlamanız gerekmektedir. Varsayılan INCREMENT BY değeri 1'dir ve özellikle tanımlanmadığı zaman geçerlidir.
MINVALUE: Azalan sekanslar için sınırlayıcı değer olabilir çünkü bir sekansın gidebileceği en az değeri ifade eder. Azalan sekanslar için özellikle bir MINVALUE tanımlanmaz ise sekansın gideceği limitte -10 üzeri 26 olacaktır.
MAXVALUE: Artan sekanslar için sınırlayıcı değer olabilir çünkü bir sekansın gidebileceği en fazla değeri ifade eder. Artan sekanslar için özellike bir MAXVALUE tanımlanmaz ise sekansın gideceği limitte 10 üzeri 27 olacaktır.
CYCLE: Sınırlayıcı eşik değere ulaştıktan sonra sekansın göstereceği davranışı belirler. CYCLE ifadesi ile sekans yaratılmış ise eşik değere ulaşıldıktan sonra sekans, başlangıç noktasına geri döner.
NOCYCLE: Bir sekans yaratırken varsayılan olarak NOCYCLE yaratılır yani sınırlayıcı eşik değere ulaşıldığı zaman sekans tamamlanır.
CACHE: Hafızada tutulması planlanan ve istenen sekans bloklarını ifade eder. Varsayılan blok sayısı 20'dir.
NOCACHE: Data Dictionary'i sürekli olarak zorlayacak bu özellikle birlikte sekansın numaraların her güncellemede tutulmasını isteyebiliriz. Bunu yaparsak sekansın performansı azalacak ancak oluşturulacak olan sayılar arasında bir kopukluk olmaması garanti altına alınacaktır.
Önemli; bir sekans yaratılırken START WITH mutlaka MINVALUE'dan büyük veya eşit olmalıdır. Aksi halde;
SQL> CREATE SEQUENCE ogan_seq START WITH -100; CREATE SEQUENCE ogan_seq START WITH -100 * ERROR at line 1: ORA-04006: START WITH cannot be less than MINVALUE
Sekanslar basit bir drop ifadesi ile düşürülebilirler;
SQL> DROP SEQUENCE ogan_seq;
Sequence dropped.