İçindekilerGirişİndex
YukarıİlkÖncekiSonrakiSon
Geriİleri
Yazdır
Oğuz Asiltürk
aslantur@ata.cs.hacettepe.edu.tr

Oracle Nedir?

Oracle Veritabani Yapilari

1. Mantiksal Yapilar

Tablespaces: Veritabani, tablespace olarak adlandirilan mantiksal saklama birimlerine bölünür. Tablespace, aralarinda bir iliski olan mantiksal yapilarin gruplandirilmasinda kullanilir. Bir tablespace online (erisilebilir) ya da offline (erisilemez) olabilir. Normalde tablespace‘ler üzerlerindeki bilgiye erisimin yapilabilmesi için online konumundadir. Fakat bazi özel amaçlarla tablespace‘ler offline konumuna alinabilirler.

Sema ve Sema nesneleri: Sema, nesnelerden olusan bir derlemdir. Sema nesneleri dogrudan veritabaninin verilerine karsilik gelen mantiksal yapilardir. Çizelge (table): Oracle veritabaninda verileri saklamak için kullanilan temel birimdir. Çizelgeler satirlar (rows) ve sütunlar (columns) olarak tutulurlar. Her çizelge, adi ve sütun kümesi (nitelik) ile tanimlanir. Her sütunun bir adi, türü ve genislik ya da duyarliligi verilir. Çizelge bir kez yaratildiktan sonra içine geçerli satirlar konulabilir ve daha sonra da bu çizelgenin satirlari sorgulanabilir, silinebilir ya da günlenebilir.

Görüntü (view): Bir ya da daha fazla çizelgedeki verilerin özel bir gösterimidir. Bir görüntü, saklanmis bir sorgu (stored query) olarak da düsünülebilir. Görüntüler, gerçekte veri içermezler. Verilerini, temel çizelgeler (base tables) olarak adlandirilan çizelgelerden ya da baska görüntülerden türetirler.

Görüntüler, çizelgeler gibi, üzerlerinde bazi sinirlamalarla ekleme, silme, günleme ve sorgulama islemlerine izin verirler. Görüntü üzerinde gerçeklestirilen tüm islemler, görüntünün temel tablolarini da etkiler.

Seriler (sequences): Seri, veritabani çizelgelerinin numerik sutunlari için biricik (unique) numaralar üretir. Çizelge satirlari için otomatik olarak biricik numaralar olusturmaya yarar. Sira numaralari çizelgelerden bagimsizdir. Bu yüzden ayni seri fakli çizelgelerce kullanilabilir.

Program birimleri (program units): Bu terim, yordam (procedure) ve islev (function) ile paketler (package) için kullanilir.

Esanlamlilar (synonyms): Çizelge, görüntü, sequence ya da bir program birimi bir takma addir (alias). synonym‘in kendisi bir nesne degildir, sadece gerçek nesneye bir referanstir. Su amaçlarla kullanilir;

Index, Cluster ve Hash cluster: Çizelgelerle ilgil seçimlik ve veri erisimindeki performansi artirmaya yönelik yapilardir.

Database links: Bir veritabanindan digerine bir yol tanimlayan bir nesnedir.

Data block, Extent ve Segment:

2. Fiziksel Yapilar

Oracle veritabani, bir ya da daha fazla kontrol kütügünden, veri kütüklerinden ve adlari kontrol kütüklerinde bulunan redo log kütüklerinden olusur.

Fiziksel YapiTanimi
Veri Kütükleri (Data Files)Tüm veritabani verilerini içerir. Mantiksal yapilar (table, index..) veri kütükleri içinde fiziksel olarak saklanir.
Redo Log Kütükleri (Redo Log Files) Kurtarma amaciyla kullanilmak üzere, veritabanina yapilan tüm degisiklikleri tutar.
Kontrol Kütükleri (Control Files) Veritabaninin fiziksel yapisini ve durumunu kaydeder.

Oracle veritabani bir ya da daha fazla veri kütügünden olusur. Veri kütükleri; veritabaninin kendisi hakkindaki bilgiyi saklayan veri sözlügünü (data dictionary) ve kullanici verilerini içerir. Sql*Plus ya da Sql*DBA kullanilarak SQL deyimleri yardimiyla yaratilabilir ve mantiksal Oracle bloklarina bölünebilir.

Oracle, gerekli alani isletim sistemi tarafindan yaratilirken ayirilan büyük ve sabit boylu kütükler kullanir. Her kütük, çizelge (table) ya da dizin (index) gibi bir çok nesne içerir.

Kütük alanlarinin yönetimi, veritabani yöneticisinin (Database Administrator- DBA) baslica görevlerinden biridir.

Günlük Kütükleri (Redo Log Files)

Çoklanmis (multiplexed) Günlük Kütükleri

Enaz iki tane redo log grubu olmalidir. Redo log kütükleri için önerilen konfigürasyon her grup için herbiri farkli disklerde olan enaz iki üye gerektirir. Grup üyeleri ayni zamanda günlenir ve her grupta ayni sayida üye vardir. Bir grubun tüm üyeleri ayni bilgiyi tasir .

Kontrol Kütükleri (Control Files)

Kontrol kütügü, veritabaninin yapisini tarif eden küçük bir ikili (binary) kütüktür. Bu kütük;

Güvenlik için her biri farkli diskler üzerinde olan en az iki tane kontrol kütügü olmalidir. Tüm kontrol kütükleri ayni bilgiyi içerir. Eger biri kaybolacak olursa digerleri kullanilir durumda kalacaktir. Kontrol kütügünün öngörülen ismi isletim sistemine baglidir.

3. Bellek Yapilari (memory structures)

Sistem Genel Alani (System Global Area - SGA)

SGA ‘nin üç tane bileseni vardir;

Database Buffer Cache: Veritabaninin yakin zamanlarda kullanilan veri bloklarinin tutuldugu buffer ‘larin kümesidir. Bu buffer ‘lar, degisiklige ugramis fakat diske henüz yazilmamis verilere sahip olabilirler. Sik kullanilan verileri tuttuklari için de diske erisimi azaltip performansi artirirlar.

Redo Log Buffer: Veritabaninda yapilan degisikliklerin tutuldugu buffer ‘lardir. redo log buffer ‘larinda tutulan redo girisleri kurtarma gerekli oldugu anda kullanilmak üzere redo log kütüklerine yazilirlar .

Paylasilmis SQL Alani (Shared SQL Area) ve Paylasilmis Havuz (Shared Pool): Paylasilmis SQL Alani, Oracle ‘in özel SQL deyimlerini çalistirmak için kullandigi bilgileri içerir. Bir SQL sorgusu isletilmeden önce ayristirilir ve bu sorgunun çalistirilmasi için bir çalisma plani hazirlanir. Isletilen sorgular bu alanda saklanir. Ayni sorgu birkez daha isletilmek istenirse bu çalistirma plani dogrudan uygulanabilir.

Paylasilmis SQL Alani, SGA içindeki Paylasilmis Havuz ‘un bir parçasidir.

Paylasilmis Havuz;

PGA, tek bir kullanici yada sunumcu görevi hakkindaki verileri yada kontrol bilgisini içeren yazilabilir fakat paylasilmamis bir bellek alanidir. Kullanici görevi Oracle veritabanina baglandigi ve bir oturum (session) baslatigi zaman bu alan bellekte ayrilir (allocate) .

PGA yigit alani (stack space) oturum degiskenlerini ve dizileri tutmak için ayrilan bellek alanidir. Kullanici oturum verileri (user session data) oturum için fazladan bellek alanidir.

4. Görevler (processes)

Kullanici ve Sunumcu Görevleri (User and Server Processes)

UNIX sistemlerinde, kullanici bir uygulama programi çalistirdiginda Oracle bir kullanici görevi yaratir. Oracle ayrica baglanacak kullanici görevlerine hizmet verebilmesi için bir sunumcu görev yaratir. Sunumcu görev kullanici görevleri ile iletisim kurar.

Sunumcu Görev;

Görevin AdıTanimi
Ayristirma (Parse)Tüm veritabani verilerini içerir. Mantiksal yapilar (table, index..) veri kütükleri içinde fiziksel olarak saklanir.
Redo Log Kütükleri (Redo Log Files)Sözdizim dogrulugu, erisim gizliligi, nesne çözünürlügü ve eniyileme kontrolünü yapar. Ayristirim agacini (Parse Tree) olusturur.
Çalistirma (Execute)Sözdizim dogrulugu, erisim gizliligi, nesne çözünürlügü ve eniyileme kontrolünü yapar. Ayristirim agacini (Parse Tree) olusturur.
Getirme (Fetch)

DBWR Görevi: DBWR görevi, kullanici görevlerinin her zaman bos bellek alanu bulabilmeleri için database buffer cache ‘i yönetir. DBWR Görevi;

Veri, erisilmeden önce sunumcu (server) görev tarafindan mutlaka database buffer cache içine getirilmelidir. Sunumcu görev sorgulari islemek için SGA içindeki paylasilmis bellegi kullanir.

Hareketlerin Günlüge Islenmesi (Log Transactions): Oracle veritabaninda yapilan tüm degisiklikleri redo log buffer içine kaydeder. LGWR (Log Writer) arka plan görevi redo log buffer içindeki bilgiyi diske yazar. LGWR Görevi;

LGWR ,redo log buffer ‘larini su durumlar olustugunda diske yazar;

Her Oracle instance ‘i için bir tane LGWR görevi vardir. Bir transaction redo log kütügüne islenmeden commit edilmis sayilmaz. DBWR görevi, veri bloklarini veritabanina geri yazmadan önce yapilan degisiklikleri korumak amaciyla LGWR görevine redo log buffer ‘larini bosaltmasi sinyalini gönderir.

Arch Görevi (arsivleyici)

ARCH (archive - arsiv) görevi aslinda seçimlik bir arka plan görevi olmasina ragmen bir çok sistem için özellikle tavsiye edilir. Eger bu görev çalistiriliyorsa veritabani ARCHIVELOG kipinde çalisiyor demektir. Bu seçenek;

ARCH görevi, günlük kütüklerinin kopyalarini, yerleri daha önce belirlenmis disk ya da teyp birimleri üzerine çikarir.

PMON (Process Monitor)

SMON (System Monitor)

DBA bu görevlerin hizi ya da uyarilma araligi üzerinde bir kontrole sahip degildir. DBWR ve LGWR gibi bu iki görev de instance çalistirildiginda hazir olmalidir.

Diger Arka Plan Görevleri

5. Oracle An ‘i (Oracle Instance)

Oracle her baslatildiginda Sistem Genel Alani (System Global Area - SGA) olarak adlandirilan paylasilmis bir bellek alani bellekte ayrilir. Oracle arka plan görevleri baslatilir. Bellek alanlari ve arka plan görevlerinden olusan bu bilesim Oracle instance olarak adlandirilir. Mutlaka olmasi gereken dört tane arka plan görevi vardir (DBWR, LGWR, PMON and SMON). Bunlardan baska görevler de vardir fakat kullanimlari seçimliktir. Bir instance sadece bir veritabanini açabilir. Bir instance‘in baslatilabilmesi için mutlaka bir veritabani olmasi gerekmez. Eger Parallel Server seçenegi kullanilirsa, veritabani birden fazla instance tarafindan açilabilir. Kullanici ve sunumcu görevleri Oracle instance‘in bir parçasi olarak tanimlanmazlar.

Database Buffer Cache, Diskten okunan veri bloklarinin kopyalarini tutar.

Kontrol Noktalari (Checkpoints)

checkpoint sirasinda DBWR, database buffer cache içindeki tüm dirty buffer ‘lari diske yazar (dirty buffer : Degisiklige ugramis fakat diske yazilmamis). checkpoint su durumlarda görülür;

Bir veri blogu database buffer cache içinde çok uzun süre kalabilir ve bu süre zarfinda birçok degisikliklere mazur kalabilir. Yani commit edilen bir kayit hala diske yazilmamis olabilir. Fakat tüm commit edilmis islemler güvendedir çünkü LGWR onlarin kaydini redo log kütüklerinde tutar.

Checkpoint sirasinda DBWR bir önceki checkpoint ‘ten sonra degisiklige ugramis verileri diske yazar. Eger instance kurtarmaya ihtiyaç duyarsa Oracle sadece son checkpoint ‘ten sonra yazilan redo log kayitlarini dikkate alacaktir. Çünkü checkpoint, daha önceki degisiklerin veri kütüklerine yazildigini garanti eder.

Trace ve Alert Kütükleri

Oracle instance çalisiyorken bir hata olustugu zaman, bu hata ile ilgili mesajlar alert kütügüne yazilir. Eger hata sunumcu ya da arka plan görevlerince yakalanirsa, hata ile ilgili bilgiler trace kütügüne bosaltilir.

Alert kütügü mesaj ve hatalarin kronolojik olarak tutludugu bir kütüktür. Sunlari içerir;

Alert kütügü BACKGROUND_DUMP_DEST parametresi ile belirtilen konumda bulunur. Bu kütügün günlük olarak kontrol edilmesi problerin daha da ciddilesmeden çözülebilmesi açisindan çok önemlidir.

Trace kütükleri eger bilgi arka plan görevi tarafindan yazilmissa BACKGROUND_DUMP_DEST, sunumcu görevi tarafindan yazilmissa USER_DUMP_DEST ile belirtilen konumlarda bulunur. Trace günlükleme SQL_TRACE parametresinin TRUE ya da FALSE olmasina göre yapilir ya da yapilmaz Asagidaki deyim trace kütüklerinin yazilmasini saglar.

SQL> alter session set sql_trace true;

Veritabanina internal olarak baglanmak: Veritabaninin açilip kapanma islemleri önemli islemlerdir ve Oracle ‘a internal olarak baglanmayi gerektirir. Eger kullanici internal olarak baglanirsa, artik sistemde en yetkili kullanici olan SYS olarak taninir.

Instance ‘in baslatilmasi

Veritabani baslatilmadan önce veritabaninin hangi durumda baslatilacaginin seçilmesi gerekir.

Baslangiç DurumuKullanimi
Ayristirma (Parse)Tüm veritabani verilerini içerir. Mantiksal yapilar (table, index..) veri kütükleri içinde fiziksel olarak saklanir.
NOMOUNT Veritabanini yaratmak için kullanilir
MOUNTVeritabaninda bakim ya da kurtarma gerektiginde kullanilir..
OPEN Veritabanini tüm kullanicilara açmak için kullanilir.

start up islemi;

Veritabaninin kapatilmasi

SHUTDOWN [NORMAL | IMMEDIATE | ABORT ]

6. Veri Sözlügü(Data Dictionary)

Oracle ‘in en önemli kisimlarindan biridir. Veri sözlügü, sys tarafindan sahiplenen tablolar ve görüntülerden olusur. Veritabanina salt-okunur bilgi saglamak amaciyla kullanilir. Mesela;

Veri Sözlügü Kullanicilari

Oracle her DDL (Veri Tanimlama Dili - Data Definition Language) deyimi çalistirilmak istendiginde veri sözlügüne erisir.

Herhangi bir Oracle kullanicisi veri sözlügünü salt-okunur bir referans olarak kullanabilir.

Veri sözlügü çok sik erisildigi için SGA içinde cache ‘lenmelidir. Bu islem için bazen row cache olarak adlandirilan paylasilmis havuz kullanilir.

Hiçbir kullanici veri sözlügündeki veriyi degistiremez ya da silemez.

Veri sözlügü görüntüleri su kategorilere ayrilir;

Kategori Tanim
DBA_xxx Sistem yöneticine açik nesneler. Veritabanindaki herhangi bir nesnenin tanim bilgisini verir.
USER_xxxHerhangi bir kullaniciya açik nesneler. Kullaniciya, kendisine ait bir nesnenin tanim bilgisini verir.
ALL_xxx Tüm kullanicilara açik nesneler. Kulaniciya açik olan tüm nesnelerin tanim bilgisini verir.
Non-standardÖzel islevsellikle ilgili görüntülerdir.

Kullanici Olusturma ve Yönetme

Her Oracle veritabani kullanici kodlari (username) ile tanimlanan kullanicilara sahiptir. Kullanici kodu;

Not : Kullanici kodu ve parola (password) verme gerekliligini ortadan kaldirmak için üzerinde çalisilan isletim sisteminin authentication denetiminden yararlanilabilir.

Yaratilan her kullanici için öngörülen tablespace baskasi belirtilmedikçe SYSTEM‘dir. Geçici (temporary) bir tablespace SQL deyimleri için gerekli olabilir. Eger belirtilmemisse, geçici tablespace olarak da SYSTEM kullanilir.

Veri tabanina erisim denetimi: Oracle her kullanici kodu için bir parola yaratir. Kullanici bunu daha sonra degistirebilir. Oracle kullanici kodlarini ve kodlanmis parolalari saklar. Kullanici veri tabanina baglanmak istediginde kullanici kodu ve parolasi dogrulanir. Kullaniciya yetkiyi isletim sistemi verir.

Sadece SYS kullanicisi öngörülen tablespace olarak SYSTEM ‘e sahip olmalidir. SYSTEM tablespace‘i herhangi bir kullaniciya geçici tablespace olarak atanmamalidir.

Sistemde tanimli olan kullanicilar all_users adli bir tabloda tutulurlar. Veri tabani ilk kez yaratildiginda sistem sadece iki kullanici bulunur.

Yetkilendirilmenin isletim sistemi tarafindan yapilmasi: Eger gerek duyulursa, kullanicilarin Oracle‘a log in olmalari isletim sisteminin denetiminde yapilabilir. Bunun için externally anahtar kelimesi kullanilir.

Veritabani Önceliklerinin Denetlenmesi: DBA,

Roller: Önceliklerin yönetimini basitlestirmek için kullanilir. Roller;

Rollerin tanimi veri sözlügünde tutulur

Eger B rolü daha önceden A rolüne verilmisse, A rolü B rolüne verilemez.

7. Kurtarma ve Yedekleme

Yedekleme (Backup):

Yedekleme Yöntemleri

Veritabani Kütük Zamanuyumlamasi: Oracle ‘in kurtarma yöntemlerini bilmek için önce veritabani kütük zamanuyumlama kavraminin bilinmesi gerekir .

Kontrol kütügü, veritabani için log sequence bilgisinin (log anahtarlanmasinda günlenir) ve her veri kütügü için log sequence numarasinin (NORMAL ya da IMMEDIATE SHUTDOWN sirasinda günlenir) kaydini tutar.

Bir log anahtarlanmasi görüldügünde yeni sequence numarasi veritabani kontrol kütügüne ve çevrim-içi konumundaki tüm kütük basliklarina (header) yazilir.

STARTUP komutu isletildiginde SMON görevi kontrol kütügündeki sequence numarasi ile diger kütüklerdeki sequence numarasini karsilastirir. Numaralar ayni ise kurtarma gerekli degildir. Veri kütüklerinin sequnce numaralari sonsuz olacak sekilde kontrol kütügünü günler.

NORMAL ya da IMMEDIATE shutdown sirasinda SMON kontrol kütügünü her veri kütügü için gerçek sequence numaralarini kaydetmek için günler. Veri kütügünün startup ‘tan itibaren kullanilip kullanilmadigi dikkate alinmaz .

Herhangi anormal shutdown sonrasinda kontrol kütügündeki her veri kütügü kayidi sonsuz degerini tasiyor olacaktir. Instance‘in bir sonraki çalistirilmasinda SMON görevi bir kurtarmanin gerekli oldugu bu sayede anlasilacaktir. Kütük basligi, kaydedilen son log sequence numarasi için kontrol edilecek ve sonra gelen tüm log‘lar yeniden uygulanacaktir.

Eger sadece online redo log ‘lar gerekliyse ve bunlar varsa kurtarma herzaman mümkündür. Fakat daha eski sequence numaralari gerekliyse ve redo log ‘lar arsivlenmemisse kurtarma mümkün olamaz.

Arsivlemesiz Isletim Sistemi Yedekleri

Avantajlari

Dezavantajlari

Kontrol Kütügünün Yedeklenmesi: Kontrol kütügü ayni zamanda güncellenen iki ya da daha fazla kopyaya sahip olmalidir. Bu sayede birisi bozuldugunda digeri kullanilabilir. Eger tüm kopyalar kaybolursa ve bunlarin var olan kütük yapisini gösteren bir yedegi varsa veritabanini hala kurtarabiliriz. Bunun için RECOVER DATABASE komutu USING BACKUP CONTROLFILE parametresi ile çalistirilir. Veritabani yapisinda yapilan bir degisiklikten sonra kontrol kütügünün yedegi alinmalidir.

Kurtarma (Recovery):

Her veritabani sisteminde sistemde bir failure olma olasiligi her zaman vardir.

SGA içindeki veritabani buffer 'lari LRU algoritmasina göre gerektiginde sadece diske yazilirlar. DBWR 'in bu algoritmayi kullanmasi, bellekte günlenmis fakat diske yazilmamis kayitlarin olmasina imkan verir. Ayrica commit edilmemis fakat redo log'lara yazilmis kayitlar da olabilir. Eger instance failure olusursa bu iki potansiyel sorun karsimiza çikar.

Bu sorunu Oracle iki adimda asar;

Veritabaninda kurtarmaya neden olacak durumlar

Instance failure: Donanim ya da yazilim hatalari sonucu meydana gelen bellek yapilarinin ya da arka plan görevlerinin kaybolmasi seklinde görülen durumdur. Özel bir DBA islemi gerektirir.

SMON görevi son checkpoint ‘ten sonraki degisiklikleri yeniden uygulayacaktir. Herhangi bir commit edilmemis degisiklik veri ve log kütüklerinden yararlanilarak geri döndürülecektir .

Mmedia failure:

Kurtarma adimlari:

Eger gerekiyorsa Oracle, redo log‘lari tekrar uygular. Yani yeniden yüklenen yedekleri redo log kütüklerini kullanarak veritabanini arizanin oldugu anki durumuna getirir. Bu islem yapildiktan sonra commit edilmemis degisikliklerin temizlenmesi amaciyla rollback islemi gerçeklestirilir.

İçindekilerGirişİndex
YukarıİlkÖncekiSonrakiSon
Geriİleri
Yazdır