ORACLE nasıl kullanılır?
İlişkisel Veritabanı Yönetim
Sistemleri (Relational Database Management Systems - RDBMS) büyük
miktarlardaki verilerin güvenli bir şekilde tutulabildiği, bilgilere hızlı
erişim imkanlarının sağlandığı, bilgilerin bütünlük içerisinde tutulabildiği
ve birden fazla kullanıcıya aynı anda bilgiye erişim imkanının sağlandığı
programlardır. Oracle veritabanı da bir ilişkisel veri tabanı yönetim
sistemidir.
Oracle veritabanının özellikleri şunlardır:
Büyük miktarda veri tutabilmekte ve verilerin depolandığı alanları ayarlama
imkanı vermektedir.
Aynı anda çok sayıda kullanıcıya verilerin bütünlüğünü bozmadan hizmet
verebilmektedir. Oracle 8 sürümü ile birlikte on binlerce kullanıcıya hizmet
verebilmektedir.
Günün 24 saati ve haftalar boyu hiç kapatılmadan çalışabilmektedir.
İşletim sistemi, veri erişim dilleri ve ağ iletişim protokolleri
standartlarıyla uyumludur.
Yetkisiz erişimleri engelleme ve kontrol edebilme imkanı sağlamaktadır.
Bütünlüğü veritabanı düzeyinde sağlayabilmektedir, böylece daha az kod
yazılmaktadır.
İstemci/Sunucu mimarisinin bütün avantajlarını kullanabilmektedir.
Oracle ile ilk defa karşılaşan kullanıcılar genellikle Delphi, Visual Basic
gibi görsel programlama dillerine benzeyen uygulamalarla karşılaşmayı
umarlar. Oysa ki yukarıda da belirttiğimiz gibi Oracle bir ilişkisel
veritabanı yönetim sistemidir. Yani bir programlama dili değildir. Fakat
Oracle tarafından geliştirilen ve Oracle’ın kendi uygulama geliştirme
araçları içerisinde kullanılan bir programlama dili vardır. Oracle ürünleri
genellikle büyük çaplı veri kontrolünü gerektiren uygulamalarda kullanılır.
Öncelikle bir ağda Oracle veritabanı sadece sunucu olarak adlandırılan
bilgisayara yüklenir. Bu sunucu Oracle’ın desteklediği herhangi bir işletim
sistemiyle çalışıyor olabilir. Yani Oracle’ın faklı işletim sistemleri için
farklı sürümleri vardır. Bu sunucu bilgisayara kurulan veritabanı üzerinde
tablolar, indeksler, eşanlamlar,tablo uzayları ve ihtiyaç duyulan kayıtlı
prosedürler oluşturulur. Bunlar raporun sonraki bölümlerinde
anlatılmaktadır. Oracle’ın bu veritabanına erişerek uygulama programı
geliştirmeye yarayan diğer ürünleri de istemci bilgisayarlara kurulur. Tabi
sunucu bilgisayara da isteğe bağlı olarak bu ürünler kurulabilir. Şimdi
Oracle ürünlerini daha ayrıntılı olarak inceleyelim.
Oracle Ürünleri
Aşağıda şu an kullanımı en güncel olan değişik Oracle ürünleri
tanıtılımıştır.
Oracle RDBMS
Oracle ilişkisel veritabanı yönetim sistemi Oracle şirketinin ana ürünüdür.
Bu ürünün şu an en yeni sürümü Oracle9i RDBMS’dir. Biz bu çalışmada bir
önceki sürüm olan Oracle8i’yi esas alacağız. Oracle 8i’den bir önceki sürüm
Oracle 7 ve onun bir önceki sürümü de Oracle 6’dır.
Oracle Uygulama Geliştirme Araçları
Oracle’ın veritabanı uygulamaları geliştirmek için görsel ürünleri bu grupta
yer alır. Oracle’ın program geliştirmek için kullanılan bu ürünlerinin eski
adı Oracle Power Objects idi. Daha sonra Oracle Developer 2000 ve sonra da
Oracle Developer 6 ürünleri geliştirildi. Developer 2000 ve Developer 6
içerisinde Form Builder, Report Builder, Graphics Builder, Procedure Builder
ve Schema Builder ürünlerini içerir. Form Builder kullanıcıya sunulacak
arayüzlerin geliştirildiği programdır. İşte bu uygulama görsel bir
programlama dilinin uygulama geliştirme ortamına benzer. Report Builder
ürünü veritabanından elde edilen bilgiler ile raporlar hazırlamaya yarar.
Özellikle banka ve kamu kuruluşlarının ihtiyacı olan fatura, evrak gibi
belgelerin hazırlanıp, çıktı alınması için geliştirilmiş bir programdır.
Procedure Builder sürekli kullanılacak kodların prosedürler halinde
oluşturulup, kütüphaneler olarak kaydedilmesi işlemine yarayan bir
programdır. Schema Builder ise veritabanı nesnelerinin görsel olarak
oluşturulabilmesi için geliştirilmiş bir uygulamadır. Burada tablo, görüntü,
eşanlam oluşturma, tablolar arası ilişki kurma,tablo kısıtlamaları oluşturma
işlemleri görsel olarak yapılabilir.
SQL*Plus
SQL*Plus, Oracle veritabanında sorgulama yapmak ve SQL komutlarını
çalıştırmak için kullanılan bir araçtır. SQL*Plus’da SQL komutlarının
yanısıra PL/SQL komutları da kullanılabilmektedir. Bu çalışmanın diğer
bölümlerinde anlatılan SQL komutları SQL*Plus kullanılarak hazırlanmıştır.
PL/SQL
PL/SQL (Procedural Language/SQL), yapısal dillere ait özelliklerin standart
SQL’e eklenmesiyle ortaya çıkan Oracle’a has bir dildir. PL/SQL Oracle
firmasının piyasaya sürdüğü her üründe önemli bir yere sahiptir.
Kullanıcılar PL/SQL’i kullanarak programlarına bir çok yeni özellikler
katmaktadırlar. Bunlar arasında;
PL/SQL tabanlı kaydedilmiş yordamlar(stored procedures) ve veritabanı
tetiklemeleri(triggers) ile önemli iş kurallarını programlamak
Oracle Developer ürünleri ile güçlü ve kolay kullanılabilir görsel
ortamlarla programları detaylandırmak ve daha rahat kontrol etmek
Oracle tabanlı uygulamalarda nesne-tabanlı(object-oriented) tasarımlar yapma
Web sayfalarından Oracle veritabanlarına link yapma
PL/SQL’in belki de en önemli özelliği istemci-sunucu ortamları tasarlama ile
ağ üzerinde dağıtık işlemler yapma ve bir çok sorguyu çalıştırma imkanı
sunmasıdır. PL/SQL dili Ada dilinden sonra tasarlanmıştır. PL/SQL’de en
gelişmiş yordamsal dillerde olan veri tipleri, blok yapısı, şartlara bağlı
ve bağlı olmayan kontrol cümleleri, bir çok döngü tipi, hata durumlarında
kullanılacak yordamlar ve kullanıcı tarafından tanımlanabilecek nesneler yer
almaktadır.
Net8
Net8 Oracle’ın bir ağ ürünüdür. Farklı bilgisayarların veritabanına bağlantı
kurması ve ve istemci-sunucu arasında veri alışverişinin sağlanabilmesi
Net8’in ana görevidir. Net8 ağdaki her bilgisayara kurulur. Ağ bağlantısı
sağlandığında NET8 istemci ile sunucu arasında bir veri taşıyıcısı gibi
işlem görür.
Ağ üzerinde bir istemcinin sunucudaki veritabanına erişebilmesi için,
sunucuda bir ağ servis adının(Net Service Name) ve bir dinleyicinin(LISTENER)
oluşturulması gerekir. Oracle Enterprise Edition ile birlikte gelen Net8
Assistant ile bu gerçekleştirilebilir. Ağ servis adları, veritabanı gibi bir
servisi ağda tanımlamak amacıyla basit bir yöntem olarak kullanılır. Bir
kullanıcı ağ servis adını kullanarak bağlantısını şöyle sağlar:
Connect kullanıcı_adı/şifre@ağ_servis_adı
Aşağıda Ne8 Assistant görüntüsü verilmiştir. Verilen şekilde ağ erişimi
oluşturmak için gereken işlemler oldukça basittir. Bir ağ servis adı
oluşturmak için “Ağ Servis Adları” dizininin üzerine gelip, yandaki artı
işaretini tıklamak gerekir. Bundan sonra bazı bilgiler girmemiz istenir.
Önce kullancağımız ağ servis adı bilgisi girilir, sonra iletişimde
kullanılacak TCP/IP, SPX gibi protokollerden uygun olanın seçilmesi işlemi
tamamlanır. Bundan sonra ana bilgisayar adı ve port numarası girilir. Ana
bilgisayar adı veritabanının yüklü olduğu bilgisayarın adıdır. Port numarası
ise Oracle’ın veritabanları için kullandığı standart numara olarak 1521
girilir. Bu işlemden sonra veritabanın sürümü seçilir ve veritabanı
oluşturulurken girilen SID adı bilgisi verilir. Girilecek tüm bilgiler bu
kadardır. Erişimin sağlanıp sağlanmadığını anlamak için “Test” butonu ile
bağlantı denemesi yapılır. Ağ servis adları TNSNAMES.ORA adlı dosyaya
haydedilir. Bu dosyada yaptığımız bir kayıt şu şekilde yer alır.
OGR =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = bavenoglu)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = ogr)
) )
Ağ erişimi dinleyici(LISTENER) adı verilen bir yardımcı programla sağlanır.
Net8 Assistant içerisinde bir dinleyici oluşturulabilir. Bir istemci
sunucuya bağlanmak istediğinde bu isteği dinleyici karşılar ve istemcinin
konfigürasyon bilgileri ile kendi bilgilerini karşılaştırır eğer uygunsa
bağlantı sağlanır. Dinleyicinin konfigürasyonu ile ilgili bilgiler LISTENER.ORA
dosyasında saklanır.
SQL*Net
SQL*Net Net8’in yardımcı programıdır. Bir istemci bilgisayara Oracle Forms
ürününün yüklendiğini düşünelim. Bunun için istemci bilgisayar SQL*Net ile
oluşturulan veritabanı takma adını(alias) kullanır. Yukarıda Net8
konfigürasyonunun istemci bilgisayarlarda da yapılması gerektiğini
söylemiştik. İşte bu konfigürasyon istemci bilgisayarlarda SQL*Net sayesinde
yapılır. Burada veritabanına verilecek takma isim, protokol adı, ana
bilgisayar adı(veritabanının bulunduğu) ve veritabanının SID olarak girilen
ismi bilgileri girilerek düzenleme yapılır.
Oracle8i Enterprise Edition ve Gerekli Donanım
Bu rapor Oracle8i Enterprise Edition for Windows NT Release 8.1.5 sürümü
üzerine düzenlenmiştir. Oracle8i Enterprise Edition CD’sinde üç farklı ürün
yer almaktadır:
Oracle8i Enterprise Edition (Server)
Oracle8i Client
Oracle Programmer
Oracle8i Enterprise Edition(Windows NT)
Yükleme Türü Açıklama
Typical Tam anlamıyla bir veritabanı kullanmak isteyenler için tavsiye
edilen yükleme türüdür. Bir başlangıç veritabanı, ağ servisleri, Oracle
yardımcı ürünleri ve yardım dokümanları yüklenir.720 MB yer kaplar. Pentium
133 ya da Pentium 166 işlemci ile kurulabilir. Önerilen işlemci Pentium 200
dür. 96 MB RAM ile çalışabilir. Tavsiye edilen bellek ise 128 MB ‘tır.
Minimal Minimum veritabanı paketi kullanmak isteyenler için önerilir. Bir
başlangıç veritabanı, ağ servisleri ve bazı yardımcı ürünleri içerir. 520 MB
yer kaplar. Pentium 133 ya da Pentium 166 işlemci ile kurulabilir. Önerilen
işlemci Pentium 200 dür. 64 MB RAM ile çalışabilir. Tavsiye edilen bellek
ise 96 MB ‘tır.
Oracle8i Client(Windows NT ve Windows 95/98)
Yükleme Türü Açıklama
Typical Veritabanı yöneticileri için veritabanına bağlanma ve veritabanı
yönetim işlerini gerçekleştirme araçlarını yükler. 299 MB yer kaplar. Intel
80486 işlemci ile çalıştırılabilir. Tavsiye edilen Pentium 133 ya da Pentium
166 dır. En az 32 MB RAM ile çalıştırılabilir. Önerilen 64 MB’tır.
Oracle Programmer(Windows NT ve Windows 95/98)
Yükleme Türü Açıklama
Typical Veritabanına erişebilen geliştirme araçları ve ara yüzlerini yükler.
Bu paket, ön derleyicileri(precompilers), ağ servislerini ve yardım
dokümanlarını içerir. 267 MB yer kaplar. Intel 80486 işlemci ile
çalıştırılabilir. Tavsiye edilen Pentium 133 ya da Pentium 166 dır. En az 32
MB RAM ile çalıştırılabilir. Önerilen 64 MB’tır.
Oracle8i Enterprise Edition Kurulumu
Kuruluma başlamadan önce Windows NT sistemine “Administrator” olarak girin.
Eğer sistemde Oracle’ın daha önceki sürümleri varsa StartàControl
PanelàServices içerisinde tüm Oracle ile başlayan servisleri seçip, sağ
tıklayın ve açılan menüden “Stop” seçeneğini seçin.
CD-Rom’u takın ve otomatik olarak çalışmasını bekleyin. Eğer çalışmazsa cd-rom
sürücü dizinine geçip Setup.Exe dosyasını çalıştırın.
Şimdi “Oracle Universal Installer“ olarak adlandırılan ürün yükleme
sihirbazının çalışmış olması gerekir. Bu ana pencerede “Install/Deinstall
Products” seçeneğini tıklayın.
İlk karşınıza gelen tanıtım penceresidir. Burada daha önce yüklenmiş
ürünlerin listesi görülebilir. Yeni yükleme için “İleri” butonunu tıklayın.
“Dosya Yerleşimleri” penceresinde kaynak ve hedef dizin ve dosya adları
belirtilir. Kaynak dizin E:\STAGE\PRODUCTS.JAR şeklinde otomatik olarak
belirtilir. Bu dizin adı değiştirilmemelidir.
Hedef olarak bir Oracle giriş dizini adı ve yolu girmeniz beklenir. Otomatik
olarak giriş dizini adı için “OraHome81” ve yolu içinde “C:\Oracle\Ora81”
belirtilir. Bu alanlar değiştirilmeden “İleri” butonu tıklanabilir.
Ürün bilgileri listesinin yüklenmekte olduğunu belirten bir pencere
geldikten sonra karşınıza “Yüklenebilecek Ürünler” penceresi gelir. Yukarıda
da anlattığımız gibi burada üç ürün vardır. Oracle8i Enterprise Edition
seçeneğini işaretleyerek “İleri” butonuna basın.
“Yükleme Türleri” penceresinde tipik, minimum ya da özel seçeneklerinden
biri seçilerek “İleri” butonuna basılır.
Eğer tipik yükleme, ya da özel yükleme seçildiyse burada Oracle yardım
dosyalarını diskten ya da CD-Rom’dan çalıştırma seçeneklerinden birini
seçmeniz beklenir. Eğer diskte yaklaşık 133MB boş yeriniz varsa diske
yükleme seçeneğini seçebilirsiniz.
Bilgisayarınızda daha önceden yüklü bir Oracle veritabanı varsa bu kısımda
bunu güncellemek isteyip istemediğinizi soran bir pencere gelir. “Migrate an
Existing Database” kutusunu işaretlerseniz yüklemeden hemen sonra “Oracle
Data Migration Assistant” programı çalışır ve eski veritabanınızı yeni
sürüme terfi ettirir.
“İleri” butonunu tıkladığınızda karşınıza “Database Identification”
penceresi gelir. Burada “Global Database Name” ve “SID” alanlarını
doldurmanız istenir. Buraya vereceğiniz isim veritabanının adı olacaktır. Bu
alanlardan birini doldurduğunuzda diğeri de aynı değeri otomatik olarak
alır.
“İleri” butonunu tıkladığınızda genel ayarlar, ürün dilleri, alan
gereksinimleri ve yeni yüklenecek ürünleri kapsayan bir liste gelir. Listede
değişiklik yapılamaz. Sadece bildiri amaçlı bir listedir.
“İleri” butonunu tıkladığınızda ürünler yüklenmeye başlar. Oracle8i
Enterprise Edition sürümünün tipik olarak yüklenmesi minimum donanım
ayarlarında yaklaşık yarım saat sürer.
Dosyaların kopyalanması bittikten sonra “Konfigürasyon Penceresi”
gelir.Veritabanının oluşturulması, başlatılması ve ağ ayarlarının yapılması
burada otomatik olarak yapılır. Veritabanı oluşturma işlemleri bittikten
sonra karşınıza giriş şifrelerinin ve veritabanı ile ilgili bazı bilgilerin
verildiği bir pencere gelir. Buradaki şifreler daha sonra veritabanı
yönetimi için kullanılacak şifreler olduğundan, önemlidir.
Bu işlemler tamamlandıktan sonra “Universal Installer” kapatılabilir.
Oracle8i Enterprise Edition Ürününü Kaldırma
Bu ürünü kaldırmadan önce StartàControl PanelàServices seçilerek çalışan tüm
Oracle servisleri kapatılmalıdır.(“Oracle” kelimesi ile başlayan tüm
servisler)
“Start > Programs > Oracle Installation Products > Universal Installer”
seçilerek yükleme asistanı çalıştırılmalıdır.
Burada “Yüklü Ürünler” butonu tıklanır.
Kaldırmak istenilen ürünlerin solundaki kutular tıklanarak boşaltılır ve
“Kaldır” butonuna basılır.
Ekrana bu kaldırılacak ürünlerin listesi gelir ve kaldırmak için son kez
onay istenir.
“Evet” butonuna tıklanırsa seçili ürünler kaldırılır. Sonra “Universal
Installer” kapatılabilir.
Oracle Veritabanı Yapısı
Oracle veritabanının, işletim sistemi tarafından bakıldığında, biri fiziksel
diğeri mantıksal olmak üzere iki bölümü vardır. Fiziksel bölüm, işletim
sisteminden görünen kısımdır. Bunlar Data File(Veri Dosyası), Control
File(Kontrol Dosyası) ve Log File(Log Dosyası) ‘dan oluşmaktadır. Mantıksal
Bölüm, bir ya da daha fazla tablo uzayı(Tablespace) ve tablolar(table),
görüntüler(view), sıralar(sequence), eşanlamlar(synonym), indeksler(index),
kümeler(cluster), veritabanı bağlantıları (database link), prosedürler(procedure),
fonksiyonlar(function), ve paketlerden(package) oluşan şema nesnelerinden
oluşmaktadır. Fiziksel bölüm işletim sistemi tarafından görülebilmesine
rağmen, mantıksal bölüm ancak Oracle’a bağlanıp, SQL komutları
çalıştırılarak görülebilmektedir. Yani, Oracle kurulu herhangi bir makinede,
SQL bilgisi olmayan bir insan, Oracle’ın sadece fiziksel bölümünü
görebilmektedir.
Oracle veritabanındaki her nesnenin bir sahibi(kullanıcı olarak bahsedilir)
vardır. Her kullanıcı bir veya daha fazla tablo uzayına sahip olabilir. Her
nesne, ait olduğu kullanıcının herhangi bir tablo uzayında (mantıksal
olarak) bulunur. Her tablo uzayı da, kendisine sahip olan kullanıcının
nesnelerini tutmak için işletim sisteminde bir veya daha fazla veri
dosyasına sahip olabilmektedir.
Sonuç itibariyle, veritabanındaki her nesnenin bir kullanıcısı vardır ve bu
nesneler mantıksal olarak o kullanıcının sahip olduğu tablo uzaylarının
herhangi birinin (hangisi olduğu komutlarla öğrenilebilir) içerisinde,
fiziksel olarak da o kullanıcının sahip olduğu tablo uzayının herhangi bir
veri dosyasında bulunur. Fakat, o veri dosyasının içerisine işletim
sisteminden bu nesneyi bulmak için bakılamaz. Bu nesnenin sahibi ve
mantıksal yeri “DML”(veri işleme dili) komutları ile bulunabilmektedir.
Fiziksel Bölüm
Fiziksel bölüm veritabanını oluşturan işletim sistemi dosyalarıdır. Bir
Oracle veritabanı fiziksel olarak bir ya da daha fazla veri dosyası, iki ya
da daha fazla log dosyası, bir ya da daha fazla kontrol dosyasından oluşur.
Veri Dosyaları(Data Files)
Veri dosyaları veri tabanındaki tüm verileri tutan dosyalardır. Tablo,
indeks gibi mantıksal veritabanı yapılarının içerisindeki veriler fiziksel
olarak veri dosyalarında tutulurlar. Bir veri dosyası kendisi için ayrılan
alan dolduğunda, kendi sahip olduğu alanı artırabilecek özelliklere
sahiptir. Bir ya da daha fazla veri dosyası mantıksal bir veritabanı
depolama ünitesi olan bir tablo uzayını oluşturular.
Normal veritabanı işlemleri boyunca bir veri dosyası içerisindeki veriler
okunur ve Oracle için ayrılan belleğe getirilirler. Örneğin bir kullanıcının
veritabanındaki bir tablonun verilerine erişmek istediğini varsayalım. Eğer
istenilen veriler bellekte yer almıyorsa, ancak o zaman uygun veri
dosyasından okunur ve belleğe getirilirler.
Değişikliğe uğrayan veriler ya da yeni eklenen veriler veri dosyalarına
hemen yazılmazlar. Sabit diske erişimi azaltmak ve böylece sistemin
performansını artırmak için veriler bellek havuzunda tutulur ve gerektiğinde
hepsi birden uygun veri dosyalarına kaydedilirler. Bunu Oracle artalan
işlemleri belirler.
Kontrol Dosyaları(Control Files)
Tüm Oracle veritabanları kontrol dosyasına sahiptir. Bir kontrol dosyası
veritabanı adı, veri dosyaları ve log dosyalarının adı ve diskteki yeri,
veritabanının oluşturulma tarihi vb. veritabanı ile ilgili bilgileri tutar.
Her veritabanı oturumu açıldığında Oracle bu dosyayı kontrol ederek gerekli
bilgileri alır. Eğer veritabanında fiziksel bir değişme olursa(yeni bir log
dosyası ya da veri dosyası oluşturulması gibi), yapılan değişiklikler Oracle
tarafından otomatik olarak kontrol dosyalarına yansıtılır.
Log Dosyaları(Log Files)
Redo Log dosyaları olarak bilinen bu dosyaların amacı veriler üzerinde
yapılan tüm değişiklikleri kaydetmektir. Eğer veri dosyalarına kalıcı olarak
kaydedilmiş olan, değişikliğe uğramış kayıtlarda bir bozukluk olursa yapılan
değişiklikler redo log dosyalarından sağlanabilir ve işlemler kaybolmaz.
Birden fazla tekrarlanan bozukluk durumlarında redo log dosyalarının da
bozulmasını engellemek için Oracle farklı diskler üzerinde redo log
dosyalarının birden fazla kopyasının alınmasına olanak sağlar.
Bir veritabanı işlemi sırasında elektrik kesilirse, bellekteki veriler veri
dosyalarına kaydedilmeyecek ve verilerin kaybolması durumuyla
karşılaşılacaktır. Oracle veritabanı tekrar açıldığında redo log
dosyalarında yapılan son değişiklikler veri dosyalarına yansıtılarak
verilerin kaybolması engellenir.
Mantıksal Bölüm
Oracle veritabanının mantıksal yapısı tablo uzaylarını(tablespaces), şema
nesnelerini(schema objects), veri bloklarını(data blocks), genişlemeleri(extents)
ve parçaları(segments) içerir.
Tablo Uzayı(TableSpace)
Bir veritabanı, ilişkili mantıksal yapıların gruplanmasını sağlayan ve tablo
uzayı olarak bilinen mantıksal depolama ünitelerine bölünmüştür.
Yukarıdaki şekil veritabanı, tablo uzayı ve veri dosyaları arasındaki
ilişkiyi açıklamaktadır. Buna göre:
Bir veritabanı bir ya da daha fazla tablo uzayına bölünmüştür.
Tablo uzayı içerisindeki tüm mantıksal yapıları fiziksel olarak
depolayabilmek için, her tablo uzayı bir ya da daha fazla veri dosyasına
sahip olabilir.
Tablo uzaylarının toplam kapasitesi, sahip oldukları veri dosyalarının
toplam kapasitesine eşittir.(Yukarıdaki şekil için SYSTEM tablo uzayı 2MB,
USERS tablo uzayı 4MB).
Tablo uzaylarının toplam kapasitesi veritabanının toplam kapasitesini
belirler.(6 MB)
Bir tablo uzayı açık ya da kapalı olabilir. Tablo uzayı kapalı olduğunda bu
tablo uzayının içerisindeki nesnelere erişilemez. Bir tablo uzayı yönetim
amaçlı olarak kapalı duruma alınabilir.
Veri Tabanı Şema Nesneleri
Şema nesneleri mantıksal veri depolama yapıları olarak bilinir. Veritabanı
üzerinde kullanıcının belirli işleri yapabilmesi için tanımlanan bu yapılar
tablolar, görüntüler, sıralar, eşanlamlar, indeksler, kümeler, veritabanı
bağlantıları, prosedürler, fonksiyonlar, ve paketlerdir. Bir şema ise bu
nesnelerin oluşturduğu gruptur.
Küme(CLUSTER)
Aynı anda sorgulanan birden fazla tablonun bir arada kaydedilmesine
“cluster” denir. Bu yapı, beraber sorgulanan tablolarda hız kazanmak için
çok önemlidir. Örneğin “isci” tablosu ile “bolum” tablosunun(bu tabloların
yapısı için SQL bölümüne bkz.) her ikisi de ortak olarak “bolum” ve
“bolumno” alanlarını içermekte. Yani “isci” tablosundaki “bolum”, “bolum”
tablosundaki “bolumno” alanına karşılık geliyor. Burada oluşturulacak bir
cluster’da her iki tablo veritabanında yan yana getirilerek aynı veri bloğu
içerisine kaydedilir.Böylece daha hızlı erişim sağlanır.
İndeks(INDEX)
İndeksler tablo ve cluster’lar için kullanılan veri tabanı nesneleridir.
Burada amaç aranılan bir kayda daha hızlı erişimdir. Özellikle üzerinde çok
arama yapılan alan veya alanlar üzerinde indeks oluşturmak çok etkilidir.
İndeks oluşturulduğunda ilgili tablonun kayıtları yer değiştirmez. Sadece
ilgili kayıtların kayıt numaraları olarak adlandırılan “rowid” ‘ler alınarak
sıralama yapılır.
Bir tablo üzerinde oluşturulabilecek indeks sayısı sütunların
kombinasyonları farklı olduğu müddetçe sınırsızdır. Bir sütun diğer
sütunlarla değişik kombinasyonlarda kullanıldığı müddetçe birden fazla
indeks içerisinde yer alabilir. Aynı sütun kombinasyonlarının indeksi, faklı
indeks ismi kullanarak oluşturulmaya çalışılsa bile gerçekleştirilemez.
İndeksleme işleminin gerçekleştirilmesinde Oracle çoğunlukla B-tree
indeksleme metodunu kullanır. Bunun yanında “hash cluster indexes”, “reverse
key indexes”, ve “bitmap indexes” yöntemlerini de kullandığı bilinmektedir.
İndeksler mantıksal ve fiziksel olarak oluşturuldukları tablodan
bağımsızdırlar. Eğer bir indeks silinirse, ilgili tablo zarar görmez,
çalışmaya devam eder. Fakat indeks olmadığı için veri erişim süresi
artacaktır.
Oracle bir indeks oluşturulduğunda onu otomatik olarak kullanmaya başlar ve
indeksin oluşturulduğu tablodaki silme, güncelleme ve ekleme işlemleri
indekse otomatik olarak yansıtılır.
Rol(ROLE)
Oracle veritabanında her nesnenin ait olduğu bir kullanıcı vardır. Bir
kullanıcı bir başka kullanıcının nesneleri üzerinde işlem yapmak isterse
buna hakkı olması gerekir. Bir nesne üzerinde işlem yapabilme yetkisine hak
denir. Örneğin veritabanına bağlanma, tablo oluşturma, bir başkasına ait
tablodan kayıt listeleme, bir başkasının prosedürünü çalıştırma birer
haktır. Bu haklar kullanıcılara atanmak suretiyle kullanıcıların bu
işlemeleri gerçekleştirmeleri sağlanır. Hakların kullanıcılara atanması iki
şekilde olabilir. Birinci olarak bir tabloya kayıt ekleme, kayıt silme vb.
haklar bir kullanıcıya ya da kullanıcılara ayrı ayrı atanır. İkinci şekilde
ise verilmek istenen haklar bir rol altında birleştirilir ve bu rol istenen
kullanıcılara aktarılır.
Haklar “sistem hakları” ve “nesne hakları” olmak üzere ikiye ayrılır. Sistem
hakları veritabanı ile ilgili olarak önceden tanımlanmış rollerdir.
Oracle’da 60’tan fazla sistem hakkı tanımlanmıştır. Nesne hakları ise veri
tabanı nesneleri üzerinde işlem yapma haklarıdır. “Create Table”, “Create
TableSpace”, “Drop Any Index” gibi haklar sistem haklarına örnek olarak
verilebilir. Nesne hakları ise 8 çeşittir. “Select”, “Insert”, “Update”, “Delete”,
“Alter”, “Index”, “Execute”, “References”, “All” çeşittir. “All” ayrı bir
hak olarak adlandırılmaz. Diğer tüm hakları kapsar. Bu haklar sırayla kayıt
seçme, kayıt güncelleme, kayıt silme, nesnelerin yapısını değiştirme, indeks
oluşturma, alt program çalıştırma, yabancı anahtar tanımlayabilme
işlemlerini içerirler. Rol tanımlama ve hak verme komutları ileride
ayrıntılı olarak işlenecektir.
Geri Alma Parçası(ROLLBACK SEGMENT)
Oracle veritabanının güvenliği açısından “Select”, “Insert”, “Update”,
“Delete” gibi işlemlerin yedeğini almaktadır. Alınan bu yedeklerin konulduğu
yerlere geri alma parçası denir. Kullanıcı bu tip işlemleri yaptıktan sonra
“Rollback” komutunu uygularsa, yaptığı değişiklikler geri alma parçalarından
getirilir ve böylece kayıtlar eski haline dönmüş olur. Kullanıcı “Commit”
komutunu verirse yaptığı değişiklikler geri alma parçalarından geri
getirilemez. Her veritabanında bir ya da birkaç tane geri alma parçası
olabilir.
Sıra(SEQUENCE)
Tablolardaki kayıtlar için otomatik sıra numarası verilmesi isteniyorsa sıra
nesnesi kullanılabilir. Bu sıra numarası veritabanı tarafından otomatik
olarak üretilir. Özellikle çok kullanıcılı ortamlarda tekil olarak numara
üretilmek istendiğinde çok kullanışlıdır. Birden fazla kullanıcı aynı anda
böyle bir sayı üretmek isterse bunun program koduyla yapılması işlem hızını
yavaşlatır. Çünkü bir kullanıcı diğeri işini bitirene kadar beklemek
zorundadır. Sıra nesnesi bu işi otomatik olarak ve çok seri bir şekilde
başarır.
Sıra numaraları Oracle’da tanımlı 38 rakama kadar tamsayılardan oluşur. Bir
sıra tanımlaması sıranın adını, artan ya da azalan olacağını, iki sayı
arasındaki fark miktarını içerir. Oracle tüm sıra numarası tanımlarını
SYSTEM tablo uzayının içerisindeki bir veri sözlüğü tablosuna kaydeder.
SYSTEM tablo uzayı sürekli çalışır durumda olduğu için tüm sıra numaraları
da aktiftir. Sıra numaraları tablolardan bağımsız olarak üretilir. Yani bir
sıra numarası bir ya da daha çok tablo için kullanılabilir.
Kayıtlı Fonksiyonlar(STORED FUNCTION) ve Kayıtlı Prosedürler(STORED
PROCEDURE)
Bir grup SQL ya da PL/SQL komutunun belli bir işi gerçekleştirmek için bir
araya getirilip veritabanına kaydedilmesi kayıtlı prosedürler ve
fonksiyonlar sayesinde olur. Birden fazla uygulama programı içerisinde aynı
işi yapan kodları sürekli yazmak yerine kayıtlı prosedür ve fonksiyonlar bir
kere yazılır ve tüm uygulamalar tarafından kullanılır. SQL*Plus, Oracle
Forms ya da Oracle Reports içerisinden bu prosedürler çağrılabilir.
Prosedürler geriye birden fazla değer döndürebilirken, fonksiyonlar sadece
bir değer döndürürler.
Eşanlam(SYNONYM)
Eşanlam bir tablo, görüntü, sıra, prosedür, fonksiyon ya da paket için
“alias” olarak adlandırılan bir takma isimdir. Eşanlam bir takma isim olduğu
için veri sözlüğü içerisindeki tanımının kapladığı yer haricinde,
veritabanında yer kaplamaz. Eşanlamlar güvenlik ve daha rahat kod yazma
amacıyla kullanılırlar. Bir eşanlam kullanıldığında ilgili nesnenin adı ve
sahibi gizlenir ve SQL komutu içerisinde kullanımı kolaylaşır.
Eşanlamlar genel(Public) ve özel(Private) olarak tanımlanabilirler. “Genel”
olarak tanımlanan eşanlamlara tüm veritabanı kullanıcıları erişebilir.
“Özel” olarak tanımlanan eşanlamlara sadece ilgili nesnenin sahibi ve sahibi
tarafından hak verilmiş bir başka kullanıcı erişebilir.
Bir nesnenin adı değiştirilmek istendiğinde ya da silinmek istendiğinde, bu
nesneyi kullanan tüm uygulama programları değiştirilmek zorundadır. Oysa ki
bu nesnenin bir eşanlamı oluşturulursa ve uygulama programları bu eşanlamı
kullanırsa, eşanlam üzerinde yapılacak değişikliklerle bu silme vb.
işlemlerden uygulama programlarının etkilenmesi önlenebilir.
Bir kullanıcı bir başka kullanıcının nesnesini kullanmak istediğinde
“kullanıcı_adı.nesne_adı” şeklinde bir yazım kuralına uymak zorundadır. Eğer
bir “genel” olarak bir eşanlam tanımı yapılırsa tüm kullanıcılar direk
eşanlam ismini kullanarak işlemlerini gerçekleştirebilirler.
Tablo(TABLE)
İlişkisel Veri Tabanı Yönetim Sistemleri’nde veriler tablolar içerisinde yer
alır. Her tablo bir isimle tanımlanır ve her biri bir “kayıt” olarak
adlandırılan satırlar ile bu kayıtlardaki verilerin özelliklerini belirleyen
sütunlardan oluşur. Her tablo bir ya da daha fazla sütuna sahip olabilir.
Her sütunun bir adı ve veri tipi vardır.
Bir tablo oluşturulduğunda Oracle verileri depolamak için bir tablo uzayı
içerisinde bir veri segmenti ayırır. Veri segmentinin değerleri
değiştirilerek bir tablo için ayrılacak yer miktarı da değiştirilebilir.
Görüntü(VIEW)
Görüntü bir ya da birkaç tablodan istenilen alanların alınmasıyla
oluşturulan sanal bir tablodur. Görüntü bu tablolar üzerinde
gerçekleştirilen bir sorgu sonucu oluşturulur. Bir görüntü üzerinde silme,
güncelleme gibi işlemler yapılamaz. Çünkü görüntü oluşturulduğu tabloların
sadece o anlık görüntüsüdür ve veritabanında kendi tanımının kapladığı yer
haricinde yer kaplamaz.
Veri Blokları(Data Blocks), Genişlemeler(Extents),Parçalar(Segments)
Oracle veritabanında verilerin depolandığı en küçük birim veri bloğu olarak
adlandırılır.Bir veri bloğu veritabanının depolama alanı üzerindeki belli
bir byte uzunluğuna karşılık gelir. Veri bloğunun uzunluğu veritabanı
oluşturulurken belirlenir.
Veri bloklarının bir üst birimi genişleme olarak adlandırılır. Bir genişleme
art arda olan belirli sayıda veri bloğundan oluşur.
Genişleme’lerin bir üst birimi de parça’lardır. Parçalar belli bir mantıksal
yapı için ayrılmış bir dizi genişleme’den oluşurlar. Farklı amaçlar için
kullanılan parçalar vardır. Bunlar veri parçaları(data segments), indeks
parçaları(index segments), geri alma parçaları(rollback segments) ve geçici
parçalardır(temporary segment).
Bir tablo bir veri parça’sından oluşur. Tablonun verileri bu parça
içerisindeki genişlemelere kaydedilir.(Oracle8i ile birlikte gelen yeni bir
özellik olan bölümlenmiş tablo yapısında her bölüm bir veri parça’sına
karşılık gelir.). Yine bir küme(cluster)’de bir veri parça’sından oluşur ve
küme içerisindeki tüm tablolar o kümenin veri parça’sında yer alır.
Her bir indeks’te bir indeks parçasından oluşur ve indeks’in bütün verileri
indeks parça’sında yer alır. Bir veritabanında, veritabanı kurtarma
işlemleri(database recovery) ve yapılan değişkilikleri geri alma
işlemleri(rollback) için bir ya da daha fazla geri alma parça’ları yer alır.
Geçici parça’lar Oracle tarafından SQL komutları işletilirken ihtiyaç
olduğunda oluşturulur ve SQL komutu işlemini bitirdiğinde bu parça tekrar
sistemin kullanımına bırakılır.
Aşağıda veri blokları, genişlemeler ve parça ilişkisini gösteren bir şekil
yer almaktadır.
Bellek Yapısı(Memory Structure) ve Arka Plan İşlemleri(Background Processes)
Bu bölüm Oracle veritabanının yönetiminin sağlanmasında kullanılan işlemleri
ve bellek yapılarını içermektedir. Tüm bellek yapıları veritabanının
oluşturulduğu bilgisayarın ana belleğinde yer almaktadır. Bu bölüm birden
fazla kullanıcının aynı anda veritabanına erişip işlemlerini
gerçekleştirmesinin nasıl olduğunu anlamak açısından önemlidir. Aşağıdaki
şekil bu bölüm için temel alınacaktır.
Bellek Yapıları
Oracle işlemlerini gerçekleştirmek için bellek yapıları oluşturur ve bunları
kullanır. Örneğin bellek çalışan program kodlarını ve kullanıcılar arasında
paylaşılan verileri depolar. Oracle’da birkaç adet bellek yapısı mevcuttur:
SGA(System Global Area), veritabanı tamponları(database buffers), redo log
tamponları(redo log buffers) ve paylaşım havuzunu(shared pool) içerir.
SGA(System Global Area)
SGA bir oracle veritabanı oturumu için gerekli verileri ve kontrol
bilgilerini içeren paylaşımlı bellek bölgesidir. SGA ve Oracle arka plan
işlemleri bir Oracle veritabanı oturumunu oluşturur. Veritabanı oturumu
başladığında Oracle SGA’yı oluşturur ve veritabanı kapatıldığında yok eder.
Her bir veritabanı oturumunun kendine ait bir SGA ‘sı vardır. Oracle’a
bağlanan kullanıcılar SGA içerisinde verileri paylaşımlı olarak kullanırlar.
Yüksek performansın sağlanabilmesi için SGA’nın olabildiğince büyük olması
gerekir. SGA büyük olursa bu alanda daha fazla bilgi depolanabilir ve sabit
diske erişim sayısı azalır. SGA içerisinde depolanan bilgi veritabanı
tamponları, redo log tamponları ve paylaşım havuzunu içeren birkaç tip
bellek yapısına bölünmüştür. Bu alanlar sabit büyüklüktedir ve veritabanı
açılırken oluşturulurlar.
Veritabanı Tampon Belleği(Database Buffer Cache)
En son kullanılan veri blokları SGA içerisinde veritabanı tamponu denilen
yerde depolanır. Bu veritabanı tamponlarının hepsi veritabanı tampon
belleğini oluşturur. Veritabanı tampon belleği değiştirilmiş ve
değiştirilmemiş bilgileri içerir. Son kullanılan verilerin ya da çok
kullanılan verilerin bellekte depolanması sayesinde sabit disk erişim
işlemleri azalır.
Redo Log Tamponu(Redo Log Buffer)
SGA’nın redo log tamponu veritabanı verileri üzerinde yapılan son
değişiklikleri depolar. Redo log tamponunda depolanan değişiklik bilgileri
veritabanı kurtarma işlemlerinde gerekli olan redo log dosyalarına
kaydedilirler.
Paylaşım Havuzu(Shared Pool)
Paylaşım havuzu SGA’nın paylaşımlı SQL alanları gibi bellek yapılarını
içeren kısmıdır. Paylaşımlı SQL alanı veritabanına girilen her farklı SQL
komutunu işlemek için gerklidir. Her bir paylaşımlı SQL alanı aynı komutu
işleyen birden fazla uygulama tarafından kullanılır. Burada amaç diğer
kullanıcılar için daha fazla paylaşımlı bellek alanı bırakabilmektir.
Geniş Havuz(Large Pool)
Geniş havuz SGA içerisinde isteğe bağlı bir alandır. Bu alan yedekleme,
yapılan işlemleri geri yükleme, sunucunun giriş/çıkış işlemleri vb.
işlemlerde daha geniş bellek ihtiyacı için kullanılan alandır.
Program Genel Alanı(PGA)
PGA sunucu işlemleri için veri ve kontrol bilgilerini içeren bellek
tamponudur. Bir sunucu işlemi başlatıldığında PGA Oracle tarafından otomatik
olarak başlatılır. Genellikle PGA bir kullanıcı ya da bağlantı için ayrılan
belleğe denir. Bu bellek üç bölümü içerir: Birincisi yığın uzayı’dır(Stack
Space). Yığın bir her bir bağlantıya ait değişkenleri, dizileri vb. yapıları
tutan bellektir. İkincisi bağlantı bilgisi’dir(Session Information).
Bağlantı bilgisi, “multitheraeded” sunucu olarak adlandırılan bir
bilgisayarda çalışılmıyorsa PGA alanında, aksi halde SGA da
depolanır.(“multithreaded” uygulamalar aynı kod ve data segmenti kullanıp,
farklı program sayacı, kayıtlık ve yığın kullanan uygulamalar için
kullanılır.) Üçüncüsü Özel SQL alanıdır. Bu alanda farklı amaçla kulanılan
bazı değişkenleri tutmak için kullanılır.
İşlem Yapısı(Process Architecture)
İşlem, işletim sistemlerinde, belli bir işi yapmak için bir adımlar
dizisinin çalıştırılması olarak adlandırılmaktadır. Normalde her işlemin
çalışabilmesi için bellekte kendine özel bir yeri vardır. Oracle’da da iki
tür işlem vardır. Kullanıcı işlemleri(User Processes) ve Oracle
İşlemleri(Oracle Processes).
Kullanıcı İşlemleri(User(Client) Processes)
Bir kullanıcı işlemi bir uygulama ya da yazılımın çalıştırlmasını sağlamak
için oluşturulur. Kullanıcı işlemleri program arayüzü(program interface)
yoluyla sunucuyla iletişim işlemlerini sağlar.
Program arayüzü bir kullanıcı işlemlerinin sunucu ile ileitişim kurmasında
kullanılan mekanizmalar olark bilinir. Program arayüzü veritabanı ile bir
Oracle Forms ya da Reports programı arasında iletişim standartlarını sağlar.
Oracle İşlemleri(Oracle Processes)
Oracle işlemleri diğer işlemler tarafından işlemin belli adımlarını
gerçekleştirmesi için çağrılırlar. Oracle işlemleri de sunucu
işlemleri(Server Processes) ve arka plan işlemleri(Background Processes)
olarak ikiye ayrılır.
Sunucu İşlemleri(Server Processes)
Oracle, veritabanına bağlanan bir kullanıcının isteklerini
gerçekleştirebilmek için sunucu işlemlerini başlatır. Örneğin bir
kullanıcının, o an SGA’nın veritabanı belleği’nde yer almayan bir bilgiyi
sorgulaması, veri bloklarının veri dosyalarından okunup SGA’ya getirilmesini
sağlayan sunucu işlemini başlatır. İstemci/Sunucu mimarili sistemlerde
kullanıcı işlemleri ve sunucu işlemleri ayrı bilgisayarlarda çalıştırılır.
Arka Plan İşlemleri(Background Processes)
Oracle her veritabanı için ayrı olarak bir dizi arka plan işlemleri
oluşturur. Oracle veritabanına bir anda birden fazla kullanıcının
bağlandığını ve belli programları çalıştırdığını düşünelim. Oracle
programlar tarafından oluşturulan bu kullanıcı işlemleri’ni gerçekleştirmek
için arka planda bazı işlemler gerçekleştirir. Her bir veritabanı kendi arka
plan işlmelerine sahiptir. Şimdi bu arka plan işlmelerinin neler olduğuna
bakalım:
Veritabanı Yazıcısı(Database Writer- DBWn)
Veritabanı yazıcısı, veritabanı tampon belleğindeki değiştirilmiş veri
bloklarını veri dosyalarına yazmakla görevlidir. Normalde tek bir veritabanı
yazım işlemi bir çok sistemde yeterli olmasına rağmen, birden fazla yazım
işlemi tanımlanabilir. Bu işlemlere DBW0...DBW9 şeklinde isim verilir.
Veritabanı açılırken bu DB_WRITER_PROCESSES parametresi ile veritabına
bildirilir.
Bir kullanıcı yaptığı değişiklikleri “commit” komutuyla onayladığında
veritabanı yazıcısı bu değişiklikleri hemen veri dosyalarına kaydetmez.
Veritabanı yazıcısı veri dosyalarına yazma işlemini kendi belirler ve ya SGA
içerisine çok miktarda başka verilerin alınması gerektiği zaman ya da çok az
veritabanı tamponu kaldığı zaman yazma işlemini gerçekleştirir. Veri
dosyalarına yazım işlemi en son kullanılan verilerden başlanarak
gerçekleştirilir.
Log Yazıcısı(Log Writer LGWR)
Log yazıcısı SGA’nın redo log tamponundaki bilgileri diske kaydetmek için
kullanılır. LGWR tampondaki bilgileri o an kullanımda olan bir redo log
dosyasına sıra ile yazar. Bu yazma işlemi veritabanının sahip olduğu birden
fazla redo log dosyasına da yapılabilir.
Değişme Noktası(Checkpoint- CKPT)
Belirli zamanlarda SGA içerisindeki değişikliğe uğramış veritabanı
tamponları DBWn tarafından belleğe yazılır. Bu işlem değişme noktası işlemi
olarak adlandırılır. Değişme noktası işlemi DBWn’e değişme anlarını haber
vermekten ve veritabanındaki bütün veri dosyalarını ve kontrol dosyalarını
yeni değişme noktasından haberdar etmek için güncellemekten sorumludur.
Sistem Analizi(System Monitor-SMON)
Sistem Analizi veritabanı oturumu açılırken oturum için kurtarma yapar, yani
kontrol dosyalarını kontrol ederek geri alınması gereken bir işlemin olup
olmadığına bakar, eğer varsa geri allma işlemini gerçekleştirir. Birden
fazla veritabanı oturumunun olduğu ortamlarda SMON aynı zamanda bozulan
sistemler içinde ayrı ayrı kurtarma yapar. SMON aynı zamanda kullanılmayan
geçici parçaları(temporary segment) temizlemekte ve herhangi bir problemden
dolayı bozulan işlemleri kurtarmaktadır. Bozulan işlemlerin sorgu komutları
SMON tarafından tablo uzayı ve veri dosyası tekrar aktif hale getirildikten
sonra kurtarılır. Son olarak SMON veritabanında daha fazla boş yer açılsın
diye boş genişlemeleri birleştirmektedir.
İşlem analizi(Process Monitor-PMON)
İşlem Analizi herhangi bir kullanıcı işlemi bozulduğunda o işlemin
kurtarılmasını yapmaktadır. PMON işlemin kullandığı belleği ve kaynakları
temizlemekten sorumludur. PMON aynı zamanda dispatcher(ileride anlatılıyor)
ve sunucu işlemlerini kontrol eder ve kapandıklarında yeniden çalıştırır.
Yedekleyici(Archiver-ARCn)
Yeekleyici o an kullanılmakta olan redo log dosyalarını, doldukları zaman
yedek depolama ünitelerine kopyalar. Tüm sistemler için bir ARC0 işleminin
olması yeterli olsa da birden fazla işlem gerçekleştirilebilir. Bu
LOG_ARCHIVE_MAX_PROCESSES parametrsei ile belirlenir. ARCn işlemi veritabanı
ARCHIVELOG modda çalışırken kullanılır.
Geri Kurtarıcı(Recoverer-RECO)
Geri kurtarıcı dağıtık veritabanında sistem veya ağ hatalarından dolayı
bekleyen işlemleri düzenler. Belli aralıklarla, yerel RECO uzaktaki
veritabanına bağlanıp yereldeki dağıtık işlemlerle ilgili “commit” ve
“rollback” işlemlerini yapmaktadır.
Dispatcer(Dnnn)
Dispatcher’lar çoklu ortamlarda isteğe bağlı olarak çalıştırılmaktadırlar.
Her iletişim protokolü için en az bir dispatcher işlemi (D000,....,Dnnn)
oluşturulmaktadır. Her dispatcher işlemi kullanıcı işlemlerinden gelen
istekleri sunucu işlemlerine yönlendirmekte ve gelen cevapları da uygun
kullanıcılara tekrar döndürmekten sorumludur.
Kilit(Lock-LCKO)
Kilit işlemleri birden fazla veritabanı oturumunun çalıştığı sistemlerde
veritabanları arasında gereken bir takım kilitleme işlemlerini
gerçekleştirir.
İş Kuyruğu(Job Queue-SNPn)
Dağıtık veri tabanı uygulamalarında 38 adetten fazla
(SNP0,...,SNP9,SNPA,....SNPZ) iş kuyruğu işlemi tablo snapshot’larını
otomatik olarak güncelleyebilir. Bu işlemler periyodik olarak başlatılır.
Oracle’ın Çalışmasına Bir Örnek
Aşağıdaki örnek bir istemcinin ağ üzerinden sunucudaki veritabanına erişip
bir sorgulama yapmasının adımlarını içermektedir.
Oracle veritabanı “host” ya da “database server” olarak adlandırılan
bilgisayarda çalışıyor vaziyettedir.
Bir kullanıcı istemci bilgisayarda kullanıcı işlemlerini gerçekleştiren bir
uygulama programını çalıştırmaktadır. İstemci bilgisayar sunucu bilgisayar
ile bağlantısını uygun Net8 sürücüsünü kullanarak gerçekleştirir.
Sunucu bilgisayarda da uygun bir Net8 sürücüsü çalışıyor vaziyettedir.
Sunucu uygulama programından gelen bağlantı isteğini tespit eder ve
kullanıcı işlemine karşılık gelen sunucu işlemini oluşturur.
Kullanıcı bir SQL komutu çalıştırır ve yaptığı değişikliği “commit” eder,
yani onaylar.Örneğin kullanıcı bir tablo içerisindeki bir kaydı değiştirir.
Sunucu işlemi komutu alır ve paylaşım havuzunda bu SQL komutuna benzeyen bir
paylaşımlı SQL alanı olup olmadığına bakar. Eğer böyle bir alan bulunursa
sunucu işlemi kullanıcının bu SQL cümlesini çalıştırma haklarını kontrol
eder. Eğer böyle bir alan yoksa yeni bir paylaşımlı SQL alanı oluşturulur ve
SQL komutu çalıştırılır.
Sunucu işlemi bu SQL komutu için gerekli verilerin SGA’da olup olmadığına
bakar. Eğer burada yoksa ilgili veri dosyasından verileri alıp SGA’ya
getirir.
Sunucu işlemleri komutun gereklerine göre SGA’daki verileri değiştirir. DBWn
değiştirilmiş veri bloklarını gerekli olduğu zaman kalıcı olarak diske
kaydeder. SQL komutu onaylandığı için LGWR işlemi yapılan SQL işlemini redo
log dosyalarına kaydeder.
Eğer SQL komutunun çalıştırılması başarılı olduysa sunucu işlemi ağ
üzerinden istemcideki uygulamaya mesaj gönderir. Eğer başarılı olmadıysa
uygun hata mesajını gönderir.
Tüm bu işlemler yapılırken veritabanı sunucusu diğer kullanıcıların aynı ya
da farklı veriler üzerindeki işlemlerini de yürütür. Bu işlemlerin
yapılabilmesi ve performansın artırılması için örneğimiz içerisinde
anlatılmayan başka arka plan işlemleride gerçekleştirilir.
Veri Tanımlama Dili Komutları
SQL’de veritabanı nesnelerini oluşturma, silme, yapısını değiştirme
işlemleri için kullanılan komutlara veri tanımlama dili komutları denir. Bu
komutlar “create”, “alter”, “drop”, “grant”, “revoke”, “analyze”, “audit”,
“comment” komutlarıdır. |