← Back to list

Oracle SQL’de SEQUENCE ve SYNONYM Kullanımı

Oracle veritabanı, işletmelerin büyük veri kümelerini yönetmesine yardımcı olan güçlü bir veritabanı yönetim sistemidir. Oracle SQL ile…

Muhammed Sefa Taş · 2023-10-23 16:55 · 0 claps · 3.7 min read
#oracle-sql #sql #oracle-sql-training #sql-training #oracle-database
Open on Medium ↗

Oracle SQL’de SEQUENCE ve SYNONYM Kullanımı

Oracle veritabanı, işletmelerin büyük veri kümelerini yönetmesine yardımcı olan güçlü bir veritabanı yönetim sistemidir. Oracle SQL ile veritabanı yönetimi, çok sayıda araç ve özellik içerir. Bu yazıda, Oracle SQL’de bulunan iki önemli kavram olan “SEQUENCE” ve “SYNONYM” konularını inceleyeceğiz. SEQUENCE, otomatik olarak artan kimlik değerlerini üretmek için kullanılırken, SYNONYM, nesnelere daha basit ve anlaşılır bir isimle erişimi kolaylaştırır.

SQUENCE NEDİR

Oracle SQL’de “SEQUENCE” (dizi) bir nesne türüdür ve genellikle otomatik olarak artan numaralar üretmek için kullanılır. SEQUENCE’lar, özellikle bir tablodaki benzersiz kimlik sütunlarını oluşturmak için yaygın olarak kullanılır. SEQUENCE’lar, veritabanında belirli bir sırayı temsil eden ve her yeni değer üretildiğinde artan bir değer içeren bir veritabanı nesnesidir. Otomatik olarak tekil bir numara üretir. Paylaşılabilir bir nesnedir ortak olarak kullanılabilir. PRIMARY KEY yerine kullanılabilir. Cache bellek üzerinden hızlı erişilebilir. Syntax şu şekildedir:

CREATE SEQUENCE sequence_adı
-- SEQUENCE'in başlangıç değerini belirtirsiniz.
START WITH baslangıc_değeri
-- Her yeni değerin ne kadar artacağını belirtirsiniz.
INCREMENT BY artış_değeri
-- (opsiyonel): SEQUENCE'in ulaşabileceği en yüksek değeri belirtirsiniz.
MAXVALUE max_değer
-- (opsiyonel): SEQUENCE'in ulaşabileceği en düşük değeri belirtirsiniz.
MINVALUE min_değer
-- (opsiyonel): SEQUENCE, MAXVALUE veya MINVALUE sınırlarına 
   ulaştığında tekrar başa dönüp dönmemesini belirtirsiniz. 
   Bu kullanımda PRIMARY KEY özelliği taşımaz.
CYCLE | NOCYCLE
-- CACHE seçeneği, bir SEQUENCE'in bellekte önceden tahsis edilen bir 
   arabellekte (Cache) bir dizi numara tutmasına olanak tanır. 
   Bu şekilde sorguların performansını artırır fakat başka sorunlara 
   yol açabilir.
CACHE Cache_miktarı | NOCACHE;

Örnek: konum tablosunun kolon_id kolonu için 10'dan başlayarak birer birer artan bir SEQUENCE oluşturalım.

CREATE SEQUENCE sq_konum_id
                START WITH      10
                INCREMENT BY    1
                MAXVALUE        9999
                NOCACHE
                NOCYCLE;

İşlem sonucunda SEQUENCE nesnemiz oluşmuştur fakat fark ettiyseniz konum tablosuna hiçbir şekilde refere etmemektedir. Bunun nedeni SEQUENCE nesnesi tablolardan bağımsız oluşturulmasıdır ve birçok tablo tarafından ortaklaşa kullanılabilmektedir. Kullanımı ise INSERT işlemi sırasında başlar. Hepsinden önce SEQUENCE nesnesiyle kullanılan 2 farklı fonksiyonunu bilmek gerekir.

CURRVAL FONKSİYONU

SEQUENCE’nin o anki sahip olduğu değeri döndürür.

NEXTVAL FONKSİYONU

SEQUENCE’in bir sonraki değerini üreterek, sayacı arttırır.

Örnek: konum tablosunda birkaç satır ekleyelim.

INSERT INTO konum (konum_id, konum_adi, il_kodu)
VALUES (sq_konum_ıd.nextval, 'İstanbul - Mecidiyeköy', 34);


INSERT INTO konum (konum_id, konum_adi, il_kodu)
VALUES (sq_konum_ıd.nextval, 'İstanbul - Beşiktaş', 34);

İşlem sonucunda görüldüğü üzere SEQUENCE değeri sayesinde konum_id kolonu otomatik şekilde artmaktadır.

SEQUENCE BOŞLUKLARI

ROLLBACK işlemlerinde, Sistem çökmelerinde, SEQUENCE başka bir tabloda kullanıldığında ve gereksiz yere .NEXTVAL komutu çalıştırıldığında SEQUENCE tarafından oluşturulan bazı değerler boşa veya başka tablolara gittiği için asıl tablomuzda boşluklara sebebiyet verebilmektedir.

Örnek: oluşturmuş olduğumuz sq_konum_id SEQUENCE nesnesini ilk olarak .CURRVAL komutu ile çalıştırarak son değerimizi görelim.

SELECT sq_konum_id.CURRVAL FROM dual;

Son değerimizin görüntüledikten sonra 2 kere .NEXTVAL fonksiyonunu çalıştıralım komutun her çalışmasından sonra .CURRVAL komutu ile yeni değeri görüntüleyelim.

  1. çalıştırma
SELECT sq_konum_id.NEXTVAL FROM dual;

SELECT sq_konum_id.CURRVAL FROM dual;

  1. çalıştırma

SEQUENCE nesnesini 2 kere boşa çalıştırdıktan sonra konum tablosuna yeni bir kayıt eklemeye çalışalım.

INSERT INTO konum (konum_id, konum_adi, il_kodu)
VALUES (sq_konum_id.NEXTVAL, 'İstanbul - Beşiktaş', 34);

Görüldüğü üzere tablomuza eklediğimiz son kayıdın id değeri 13 olması gerekirken id değeri bizim 2 defa SEQUENCE nesnesini boşa çalıştırmamız sonucunda boşa değer üretmiş bundan dolayıda yeni kayıt ekleme işleminde satır id’leri arasında boşluk oluşmasına sebep olmuştur.

SEQUENCE ÖZELLİKLERİNİ DEĞİŞTİRMEK

-- INCREMENT 
-- MAXVALUE
-- MINVALUE
-- CYCLE
-- CACHE

Yukarıda yazılan özellikler ALTER komutu ile değiştirilebilmektedir.

Örnek: oluşturmuş olduğumuz sq_konum_id nesnesinin özelliklerini değiştirelim.

ALTER SEQUENCE sq_konum_id
               INCREMENT BY 11
               MAXVALUE 100000
               NOCACHE
               NOCYCLE;

SEQUENCE nesnesinin devam ettiği numara değiştirilmek istendiğinde SEQUENCE nesnesini öncelikle DROP edilmeli ve tekrar CREATE edilerek kullanılmaya devam etmek gerekir.

SYNONYM NEDİR

SYNONYM, Oracle veritabanlarında kullanılan nesnelere daha anlaşılır ve kısa bir isimle erişimi sağlamak için kullanılır. Özellikle büyük ve karmaşık veritabanlarında, SYNONYM’ler nesnelerin adlarını daha basit bir şekilde temsil eder. Oluşturulan SYNONYM nesnesinin başka kullanıcılar tarafından ulaşılabilir olabilmesi için oluşturulurken PUBLIC anahtarı kullanılmalıdır. Başka kullanıcıların göremeyeceği şekilde tanımlanan SYNONYM’lerde ise öncelik DROP komutu kullanılarak SYNONYM silinir ve tekrardan PUBLIC olacak şekilde CREATE edilmelidir. Syntax şu şekildedir:

CREATE [PUBLIC] SYNONYM synonym_adi FOR nesne_adi;

Örnek: müdürlük şube tablosuna SYNONYM verelim ve kullanalım.

CREATE SYNONYM sube FOR mudurluk_sube;

SELECT * FROM sube;

Oracle SQL’de SEQUENCE ve SYNONYM, veritabanı yönetimi ve veri erişimi için güçlü araçlardır. SEQUENCE’ler, otomatik olarak artan kimlik değerlerini oluşturmak ve benzersiz kimliklerin çakışmasını önlemek için kullanılırken, SYNONYM’ler nesnelere daha basit ve anlaşılır isimlerle erişimi kolaylaştırır. Doğru şekilde kullanıldığında, bu iki kavram veritabanı yönetimini daha etkili ve kullanıcı dostu hale getirebilir. Oracle veritabanlarının karmaşıklığına rağmen, bu iki araç veri erişimi ve kimlik yönetimi konularında önemli kolaylıklar sunar.


메타데이터
post_id
493e56b8d3ee
slug
oracle-sqlde-sequence-ve-synonym-kullanımı-493e56b8d3ee
url
https://medium.com/@SefaTas/oracle-sqlde-sequence-ve-synonym-kullan%C4%B1m%C4%B1-493e56b8d3ee
canonical_url
https://medium.com/@SefaTas/oracle-sqlde-sequence-ve-synonym-kullan%C4%B1m%C4%B1-493e56b8d3ee
author_url
https://medium.com/@SefaTas
status
ok
fetched_at
2026-07-27 07:49:50