You are on page 1of 167

__________________________

Oracle Veritabanı
Yönetim Sistemi’ne Giriş

__________________________
İçerik

1. Oracle Veritabanı Yönetim Sistemine Giriş ……………….. 4


• Veritabanı Yapısı ve Alan Yönetimi
• Veri Erişimi
• Tablespaceler
• Uygulama Mimarisi
• Dağıtılmış Veritabanları
• Eşzamanlı ve Tutarlı Veri Erişimi
• Veritabanı Güvenliği
• Veritabanı Yönetimi
• Veri Ambarı
• İçerik Yönetimi

2. Veri Blokları, Uzantılar (Extents), ve Segmentler …………… 53


• Veri blokları, uzantılar ve segmentlere giriş
• Veri bloklarını gözden geçirme
• Uzantıları gözden geçirme
• Segmentleri gözden geçirme

3. Tablo Alanları, Veri Dosyaları, ve Kontrol Dosyaları ………. 77


• Tablo alanlarına, veri dosyalarına, ve kontrol dosyalarına giriş
• Tablo alanlarını Gözden Geçirme
• Veri Dosyalarını Gözden Geçirme
• Kontrol Dosyalarını Gözden Geçirme

4. Veritabanı ve Oracle Anını Açma ve Kapama ………………. 104


• Oracle Instance’ına Giriş
• Oracle Instance’ı ve Veritabanının Başlatılması
• Veritabanı ve Oracle Instance’ının Kapatılması
2
5. Küme Veritabanı İşletimi Temel İlkeleri …………………… 114
• “Real Application Clusters’a Giriş”
• “Real Application Clusters Sistemlerin Mimarisi”
• “Real Application Clusters Yazılım Mimarisi”
• “Real Application Clusters’ta Ölçeklenirlik”

6. Bölümlenmiş Tablolar ve Indeksler ………………………. 141


• Bölümlemeye giriş
• Bölümleme yöntemleri
• Bölümlenmiş indeksler
• Performansı arttırmak için Bölümleme

3
Oracle Veritabanı Yönetim Sistemine Giriş

Bu bölümde aşağıdaki konular anlatılacaktır;

• Veritabanı Yapısı ve Alan Yönetimi


• Veri Erişimi
• Tablespaceler
• Uygulama Mimarisi
• Dağıtılmış Veritabanları
• Eşzamanlı ve Tutarlı Veri Erişimi
• Veritabanı Güvenliği
• Veritabanı Yönetimi
• Veri Ambarı
• İçerik Yönetimi

4
Veritabanı Yapısı ve Alan Yönetimi:

Oracle Veritabanı, birim olarak kabul edilen verilerin bir araya


toplanmasından oluşur. Veritabanının amacı birbiriyle ilişkili bilgilerin
depolanması ve sorgulanmasıdır. Bir veritabanı sunucusu bilgi
yönetimiyle ilgili problemleri çözmede anahtar roldedir. Genel olarak bir
sunucu, büyük miktardaki veriye çok kullanıcılı bir ortamda, bir çok
kullanıcının aynı anda aynı veriye ulaşabilmelerini güvenilir bir şekilde
sağlar ve bunu aynı zamanda yüksek bir performansla gerçekleştirir. Bir
veritabanı sunucusu aynı zamanda izinsiz erişimi engeller ve hata
durumundan kurtulmak için gereken en uygun çözümleri sağlar.

Veritabanı fiziksel ve mantıksal olmak üzere iki yapıdan oluşur. Fiziksel


ve mantıksal yapı biribirinden ayrı olduğu için verinin fiziksel olarak
saklanma şekli mantıksal yapıya erişimi etkilemez.

Mantıksal Veritabanı Yapıları:

Oracle veritabanındaki mantıksal yapılar şema nesneleri, veri blokları,


extentler, segmentler ve tablespacelerdir.

Şemalar ve Şema Nesneleri:

Şema, veritabanı nesnelerinin oluşturduğu topluluktur. Bir şemanın


sahibi bir veritabanı kulanıcısıdır ve bu şema o kullanıcıyla aynı isme
sahiptir. Şema nesneleri direk olarak veriyle bağlantılı olan mantıksal
yapılardır (Şema ve tablespace arasında bir bağlantı yoktur. Aynı

5
şemadaki nesneler farklı tablespacelerde bulunabileceği gibi
tablespacelerde farklı şemalara ait nesneler bulunabilir.). Başlıca şema
nesneleri şunlardır:

- Tablolar : Oracle veritabanındaki en temel veri saklama birimidir.


Veritabanı tabloları, kullanıcılar tarafından ulaşılabilecek tüm veriyi
bulundururlar. Her tablonun kolonları ve satırları vardır. Oracle 256
veya daha az kolon içeren bir veritabanı tablosunun her satırını bir veya
daha fazla satır parçası halinde saklar. Örnek olarak, çalışanların
bilgilerini tutan tabloda, çalışan numarası diye bir kolon varsa, o
kolondaki her satır bir çalışanın çalışan numarasını tutar.

- Viewler : Viewler bir veya birden fazla tablo yada view'deki


verinin özelleştirilmiş bir gösterim şeklidir. Bir view aynı zamanda
saklanmış bir sorgu olarak da değerlendirilebilir. Viewlar aslında veri
içermezler. Bunun yerine verilerini kendilerine temel teşkil eden ve
viewın temel tabloları olarak adlandırılan tablolardan çıkartırlar.
Tablolar gibi viewlerin de bazı kısıtlamalar olmakla birlikte verisi
sorgulanabilir, değiştirilebilir, silinebilir ve yeni veri girilebilir. Viewler
üzerinde yapılan her işlem aslında viewın temel tablolarını etkiler.
Viewler tablonun önceden belirlenmiş satır ve kolonlarına erişimi
kısıtlayarak, tablo güvenliğinde ekstra bir seviye sağlar.

- İndeksler : İndeksler tablolarla ilişkilendirilen opsiyonel


yapılardır. Data erişim performansını arttırmak için yaratılırlar. Bir
Oracle indeksi tablo verisine direk bir erişim yolu sağlar. Oracle bir
isteği cevaplarken, istenilen satırları daha hızlı bir şekilde bulmak için
tablo ile ilişkilendirilmiş olan indekslerin bir kısmını yada hepsini
kullanabilir. İndeksler, uygulamalar bir tablonun satırlarının belli bir
bölümünü veya belli bir satırı sorguladıklarında işe yarar (Mesela, maaşı
1 Milyar'dan yüksek olan tüm çalışanlar). İndeksler bir tablonun bir veya

6
birden çok kolonu üzerinde yaratılır. İndeksler yaratıldıktan sonra Oracle
tarafından otomatik olarak bakılır ve kullanılır. Tablolar üzerinde
yapılacak olan değişiklikler otomatik olarak ilişkili indekslere yansıtılır.

- Kümeler : Kümeler, fiziksel olarak birlikte saklanan bir veya


birden fazla tablonun oluşturduğu gruba denir. Bu tablolar ortak kolonlar
içerir ve genelde birlikte kullanılır. Birbiriyle ilişkili satırlar fiziksel
olarak bir arada saklandığı için, disk erişim süresinde bir kazanç sağlar.
İndekslerde olduğu gibi kümeler uygulama dizaynını etkilemez.
Tablonun bir kümeye dahil olup olmaması kullanıcılar ve uygulama
tarafından bilinmez. Kümelenmiş edilmiş bir tablodaki veriye SQL ile
aynı kümelenmemiş bir tabloya erişildiği gibi erişilir.

Veri Blokları, Extentler ve Segmentler:

Veri blokları, extentler ve segmentlerden oluşan mantıksal saklama


yapıları sayesinde Oracle'ın disk alanı üzerinde ayrıntılı bir kontrolü
vardır.

- Oracle Veri Blokları : Veri blokları, Oracle veritabanında verinin


saklandığı en küçük yapıdır. Bir veri bloğu, fiziksel veritabanı alanında
belirli sayıdaki byte'a karşılık gelir. Standard blok büyüklüğü
DB_BLOCK_SIZE başlangıç parametresiyle belirlenir. Bunun dışında
en çok 5 adet blok büyüklüğü belirtilebilir.

- Extentler : Mantıksal veritabanı alanındaki bir sonraki seviye


extentlerdir. Bir extent, belirli sayıdaki ardışık veritabanı bloğundan
oluşur, bir seferde alınır ve belirli bir tipteki bilgiyi tutmak için
kullanılır.

7
- Segmentler : Extentlerin üzerindeki mantıksal veritabanı depolama
seviyesi segmentlerdir. Segment, belirli bir mantıksal yapı için tahsis
edilmiş extentler kümesidir. Bir segmentin içindeki tüm extentler
dolduğunda, Oracle dinamik olarak yeni yer tahsis eder. Başka bir
deyişle, bir segmente ait bütün extentler dolduğunda, Oracle bu segment
için yeni bir extent tahsis eder. Extentler gerek duyulduğunda tahsis
edildiğinden, segmente ait extentlerin ardışık olma zorunlulukları
yoktur. Üç çeşit segment tipi vardır:

- Veri Segmenti : Her kümelenmemiş tablonun bir segmenti vardır.


Tablonun bütün verisi, veri segmentinin extentlerinde tutulur.
Bölümlenmiş tablolarda, her parça için bir veri segmenti bulunur. Her
küme için bir veri segmenti vardır. Kümedeki her tablonun verisi
kümeye ait olan veri segmentinde tutulur.

- İndeks Segmenti : Her indeksin kendi verisinin tutulduğu bir indeks


segment vardır. Bölümlenmiş bir indeksin her bölümüne ait bir indeks
segment vardır.

- Temporary segment : Temporary segmentler bir SQL cümlesinin


işini tamamlamak için geçici bir alana ihtiyaç duyulduğunda Oracle
tarafından yaratılır. SQL cümlesinin çalıştırılması tamamlandığında
temporary segment yeniden kullanılabilmesi için sisteme geri verilir.

- Rollback Segment : "Automatic Undo Management" modundayken,


veritabanı sunucusu tablespaceleri kullanarak undo alanını yönetir.
"Manual Undo Management" modundayken, veritabanı yöneticisi
tarafından undo bilgisini geçici olarak tutması için rollback segmentler
yaratılır. Rollback segmentlerdeki bilgi veritabanının kurtarılması
sırasında kullanılır.

8
Tablespaceler

Her veritabanı, tablespace adı verilen ve biribiriyle ilişkili mantıksal


yapıları gruplayan mantıksal depolama birimlerine bölünmüştür.
Örneğin, tablespaceler genelde yönetimsel işleri kolaylaştırmak için
bütün uygulama nesnelerini birlikte gruplar. Tablespace içindeki tüm
mantıksal yapıları fiziksel olarak tutması için bir veya birden fazla
datafile yaratılır. Datafileların toplam büyüklüğü, tablespace'in toplam
depolama kapasitesini verir. Tablespacelerin toplam depolama
kapasitesi, database'in toplam depolama kapasitesini verir. Şekil 1'de
Veritabanları, tablespaceler ve datafilelar arasındaki ilişki
gösterilmektedir.

Şekil 1 - Veritabanları, Tablespaceler, ve Datafilelar

Bir tablespace online(erişilebilir) yada offline(erişilemez) olabilir.


Tablespaceler, kullanıcıların içindeki veriye ulaşabilmesi için, genelde
online durumdadır. Fakat bazı durumlarda veritabanının bir kısmını
erişilemez hale getirmek için tablespacelerin bir kısmı offline hale
getirilir. Bu birçok yönetimsel işlerin yapılmasını kolaylaştırır.

9
Fiziksel Veritabanı Yapıları

Oracle veritabanında kullanılan fiziksel yapılar şunlardır:

- Datafilelar : Her Oracle veritabanı bir veya birden fazla fiziksel


datafile içerir. Datafilelar bütün veritabanının verisini tutar. Tablo ve
indeksler gibi mantıksal yapıların verileri, fiziksel olarak veritabanı için
tahsis edilmiş datafilelarda saklanır. Bir datafile ancak bir veritabanı ile
ilişkilendirilebilir. İçlerindeki boş yer bittiğinde otomatik olarak
büyümelerini sağlayacak şekilde yaratılabilirler. Datafile'lardaki veri
normal veritabanı işlemleri sırasında belleğe okunur. Değişikliğe
uğramış yada yeni girilen verilerin hemen datafile'lara yazılması
gerekmez. Disk erişim sayısını azaltmak ve performansı arttırmak için,
verinin bir kısmı bellekte tutulur ve gereken datafile'lara bir kerede
yazılır.

- Redo Log dosyaları : Her Oracle veritabanında iki veya daha


fazla redo log dosyası bulunur. Bu redo loglar kümesine genel olarak
veritabanının redo logu olarak bilinir. Bir redo log, redo kayıtlarından
oluşur. Redo logun ana görevi veri üzerinde yapılan tüm değişikliklerin
kaydını tutmaktır. Bir sebepten dolayı bellekteki veriler datafile'lara
yazılamazsa, değişiklikler redo loglardan elde edilebilir, yani yapılan iş
hiçbir zaman kaybolmaz. Redo logları da içeren bir hata durumu
oluşması halinde, redo bilgilerini kurtarmak için Oracle "Multiplexed
Redo Log" tutulmasına izin verir. Bunun anlamı bir redo logun aynı
anda iki yada daha fazla kopyasının tutulmasıdır. Redo log dosyasındaki
bilgiler sadece sistem yada medya hatası nedeniyle datafile'lara

10
yazılamayan verileri kurtarmak için kullanılır. Redo log'daki bilgiler
kullanılarak veri kurtarılmasına "Rolling Forward" denir.

- Kontrol Dosyaları : Her Oracle veritabanının bir kontrol dosyası


vardır. Kontrol dosyasında veritabanının fiziksel yapısı ile ilgili bilgileri
tutulur. Veritabanı, redo log dosyalarında olduğu gibi kontrol
dosyalarının da birden fazla kopyasının tutulmasını desktekler. Kontrol
dosyalarında tutulan bilgilerin bazıları veritabanının adı, redo log
dosyalarının yerleri ve adları, veritabanın yaratıldığı zamandır. Oracle
veritabanı örneğinin her açılışında, kontrol dosyası veritabanı ve redo
dosyalarının yerlerinin bulunup veritabanı işlemlerine açılması için
kullanılır. Eğer veritabanının fiziksel yapısında bir değişiklik olursa,
kontrol dosyası Oracle tarafından otomatik olarak değiştirilir. Kontrol
dosyası veritabanının kurtarılmasında da kullanılır.

- Veri Araçları : Oracle veritabanının altkümesinin başka bir


veritabanına taşınması için kullanılabilecek araçlar Export, Import ve
SQL*Loader araçlarıdır. Export aracı yazalım ve donanım ayarları
birbirinden tamamen farklı, farklı işletim sistemleri üzerinde çalışan
veritabanları arasında veri taşımak için kullanılır. Export, nesne
tanımlarını ve tablo verilerini Oracle veritabanından çıkarır ve bunu özel
bir formatta binary bir dosyaya yazar. Bu dosya, çeşitli taşıma
yöntemleriyle başka bir makinaya taşınabilir. İmport aracı, export aracı
tarafından yaratılmış olan export dosyasındaki veri nesnelerini,
veritabanına aktarmak için kullanılır. Export dosyaları ancak import
aracı tarafından okunabilir. İmport sadece export dosyalarını okuyabilir.
Eğer elinizde formatı belli bir ASCII veya delimited dosya varsa, bunun
içindeki veriyi SQL*Loader aracını kullanarak veritabanına
aktarabilirsiniz. SQL*Loader bir çok formattaki dosyayı input olarak
alıp, filtereden geçirip, bir seferde birden fazla veritabanı tablosuna
yükleme yapabilir.

11
Veri Sözlüğü

Her Oracle veritabanının bir veri sözlüğü vardır. Oracle veri sözlüğü,
veritabanı hakkında referans bilgisi içeren tablolar ve view'lar
kümesinden oluşur. Örnegin, veri sözlüğü veritabanının mantıksal ve
fiziksel yapıları hakkindaki bilgileri tutar. Veri sözlüğü aşağıda belirtilen
bilgileri de tutar:
- Veritabanı Kullanıcıları
- Tablolar üzerinde tanımlanmış bütünlük kısıtlamaları
- Şema nesneleri için tahsis edilmiş yer miktarı ve bu alanın ne
kadarının kullanılmakta olduğu

Veri sözlüğü, veri tabanının yaratılması sırasında yaratılır. İçindeki


bilginin daima doğru kalabilmesi için belirli durumlarda Oracle, veri
sözlüğünde gerekli değişiklikleri otomatik olarak yapar. Veritabanı
yürümekte olan işleri kaydetmek ve onaylamak için Veri sözlüğünü
kullanır. Örneğin, bir kullanıcının belli bir tabloya erişmek için yeterli
yetkiye sahip olup olmadığını kontrol etmek için Oracle, veri sözlüğünü
kullanır.

Veri Erişimi

SQL

Veritabanını tanımlamak ve yönlendirmek için kullanılan programlama


dili SQL'dir. SQL veritabanları ilişkisel veritabanlarıdır. Bunun anlamı
verinin basit ilişkiler kümesi içinde depolanmasıdır. Oracle
veritabanındaki tüm işlemler SQL cümleleriyle gerçekleştirilir. SQL
cümleleri 6 kategoriye ayrılır:

12
- Veri Tanımlama Dili Cümleleri (DDL) :
- Kullanıldığı yerler
Şema nesnesi yaratmak, saklamak ve silmek gibi işlemler
Kullanıcılara veritabanı içindeki nesneler için yetki verilmesi

- Veri Değiştirme Dili Cümleleri (DML) :


- Kullanıldığı yerler
Varolan veriyi sorgulamak, değiştirmek, silmek
Yeni veri girmek

- Veritabanı Hareketi Kontrol Cümleleri : DML cümlelerinin


veritabanına yansıma şeklini kontrol eden cümlelerdir. Örneğin,
COMMIT, ROLLBACK, SAVEPOINT.

- Oturum Kontrol Cümleleri : Kullanıcıların varolan oturumun


özelliklerini kontrol etmelerini sağlayan cümlelerdir.

- Sistem Kontrol Cümleleri : Oracle sunucu örneğine ait özellikleri


kontrol etmek için kullanılan cümlelerdir.

- Gömülü SQL Cümleleri : DML, DDL ve veritabanı hareketi


kontrol cümlelerinin prosedürel programlama dillerinin içinde gömülü
olarak kullanılmasıdır.

13
Nesneler

Varolan veritabanı tipleri yada daha önceden tanımlanmış nesne tipleri


ve nesne referansları kullanılarak yeni nesne tipleri yaratılabilir.
Kullanıcılar tarafından tanımlanmış tiplerinin bilgileri, SQL, PL/SQL,
Java gibi arayüzlerin de erişebilecekleri şekilde şemalarda saklanır.

Nesne tiplerinin SQL veri tiplerinden en önemli farkı bunların


kullanıcılar tarafından tanımlanmış olmalarıdır. Nesne tipleri gerçek
hayattaki varlıkları sembolize ederler. Örneğin, satınalma talebi. Nesne
tipleri ve onlarla ilgili nesne yönelimli özellikler, verinin organize
edilmesi ve erişimi için daha üst seviyede yollar sağlar. Nesne
katmanının altında veri gene tablolardaki kolonlarda tutulur ama siz
veriyle daha anlamlı olan gerçek dünya varlıkları olarak çalışmaya
devam edersiniz. Örneğin, bir sorguyu yazarken tablo ve kolonlarla
düşünmek yerine direk olarak bir müşteriyi sorgulayabilirsiniz.

Arka planda yazdığınız sorgular, gene temel SQL cümleleri olarak


çalışır. Aynı anda hem nesne yönelimli özellikleri hemde ilişkisel
veritabanı özelliklerini kullanabilirsiniz.

Genel olarak nesne tipi modeli C++ ve Java'daki class mekanizmasına


benzemektedir. Class'larda olduğu gibi, nesneler kullanılarak kompleks
gerçek dünya ticari varlıklarının ve mantığının modellenmesi çok daha
kolaydır ve nesnelerin yeniden kullanılabilmesi veritabanı
uygulamalarının geliştirilmesini hızlandırmakta ve kolaylaştırmaktadır.
Veritabanında nesne tiplerini direk olarak desteklenmesi, uygulama
geliştirenlerin uygulamalarındaki veri yapılarına direk olarak
erişmelerini sağlamaktadır. Bu sayede ilişkisel veritabanındaki kolon ve
tablolarla uygulamadaki nesneler arasında bir eşleştirmeye gerek

14
kalmaz. Ayrıca nesneler sayesinde uygulamalar çok daha kolay anlaşılır
hale gelir.

PL/SQL

PL/SQL, Oracle'ın normal SQL'e yaptığı prosedürel programlama


eklentilerinden oluşur. SQL'in kullanım kolaylığı ve esnekliği ile yapısal
programlama dillerinin prosedürel fonksiyonalitesini birleştirmiştir.
Veritabanı uygulaması dizayn ederken PL/SQL'in şu avantajları vardır:

- PL/SQL kodu direk olarak veritabanında saklanabildiği için


performansı çok daha iyidir.
- PL/SQL kodu içinde veri erişimi kontrol edilebilir. Bu sayede
PL/SQL kullanıcıları veriye uygulama geliştiricisinin istediği şekilde
ulaşırlar.
- Normal SQL'de olduğunun aksine cümle cümle yollamak yerine
PL/SQL bloklar halinde yollanabilir, bu da kompleks işlemlerde
gereksiz network trafiği yapılmasını engeller.

Başlıca PL/SQL program birimleri şunlardır:

- Prosedürler ve Fonksiyonlar : Belirli işleri yapmak veya belirli


bir problemi çözmek üzere bir araya getirilmiş PL/SQL ve SQL
cümleleri kümeleridir. Bunlar derlenmiş bir şekilde veritabanında
saklanır ve kullancılar yada veritabanı uygulamaları tarafından
kullanılabilirler. Fonksiyonlar ve prosedürler arasındaki tek fark,
fonksiyonların en sonda bir değer geri dönmesidir.

- Paketler : Birbiriyle ilişkili olan prosedürlerin, fonksiyonların,


değişkenlerin ve diğer yapıların bir bütün haline getirildiği ve

15
veritabanında saklandığı yapıdır. Bu global değişken tanımlanıp paket
içindeki herhangi bir prosedürde çağrılabilme gibi ekstra
fonksiyonaliteler sağlar. Ayrıca paketler bir bütün halinde bir kerede
parse edilip, derlenip, belleğe yüklendiği için performans artışıda sağlar.

- Veritabanı Tetikleri : Bir tablo veya view'da değişiklik


olduğunda, bir kullanıcı yada veritabanı sistemi aksiyonu
gerçekleştiğinde, veritabanı tarafından otomatik olarak cağırılan,
PL/SQL, Java veya C prosedürleridir. Veritabanı tetikleri, veritabanı
yönetimi için çeşitli yollar sağlar. Örnegin, veri yaratmayı otomatize
etmek, veri değişimini izlemek, kompleks güvenlik yetkilendirilmesi
sağlamak gibi amaçlar için kullanılabilir.

- Bağımsız Bloklar : Bağımsız veritabanı haraketleri PL/SQL


bloklarının içinden çağırılabilirler. Bir bağımsız PL/SQL bloğuna
girildiğinde, onu çağıran veritabanı hareketi geçici olarak durdurulur. Bu
operasyon, bu blok içinde yada bu blok içinden çağırılan diğer bloklarda
yapılan işlemlerin, onları çağıran veritabanı hareketinin durumunu
etkilememesini sağlar.

Java

Java, nesne yönelimli programlama yapabilen uygulama seviyesinde bir


programlama dilidir. Java'nın en önemli özellikleri kolaylık,
taşınabilirlik, otomatik bellek yönetimi, değişkenlerin önceden
tanımlanma zorunluluğu, pointer kullanılmaması, istisnaların
işlenebilmesi, güvenlik, ilişkisel veritabanlarına ulaşmak için JDBC gibi
standartlara sahip olmasıdır.

16
XML
XML, web üzerinde verinin tanımlanması ve ayırt edilebilmesi için
standart yöntemdir. Ayrıca XML, insan tarafından okunabilen,
makinalar tarafından anlanabilen hiyerarşik veri tanımlamaya yarayan,
birçok uygulama tipine uygun genel bir söz dizimidir.

Oracle sunucusu "Oracle XML DB" denilen, yüksek performanslı XML


depolama ve sorgulama teknolojileri kümesi içermektedir. XML DB,
W3C XML veri modelinin tamamını deskteklemekle birlikte, yeni
standart erişim metodlarıda içermektedir. Tüm ilişkisel veritabanı
teknolojileriyle birlikte aynı anda XML teknolojilerini de kullanmak
mümkündür. Oracle veritabanında XML ile ilgili en anahtar özellikler
şunlardır:

- Depolamak ve yönlendirmek için XMLTYPE isimli bir veri tipi


olması
- XML için SQL operatörlerinin olması ve sorgu sonuçlarını XML
formatında almak için PL/SQL paketleri içermesi
- XML havuzu sayesinde versiyonlamayla birlikte klasörleme,
erişim kontrolü, FTP ve WebDav protokol desteği.

Oracle sunucusu XML DB ile birlikte kullanılmak üzere XDK adı


verilen ve uygulama geliştirme araçlarından oluşan bir küme içerir.
Oracle XDK, XML dökümanlarını okumak, yönlendirmek, dönüştürmek
ve göstermek için gereken arayüzleri içerir. XDK'nin, Java, JavaBean,
C, C++ ve PL/SQL için arayüzleri mevcutttur.

17
Veritabanı Hareketleri

Veritabanı hareketleri, tek bir kullanıcı tarafından çalıştırılan bir veya


daha fazla SQL cümlesinden oluşan mantıksal iş birimidir. Oracle'ın da
deskteklediği ANSI/SQL SQL standardına göre, bir veritabanı hareketi
bir kullanıcı tarafından çalıştırılan ilk SQL cümlesiyle başlar ve kullanıcı
tarafından Commit yada Rollback edilene kadar devam eder.

Bir bankacılık uygulamasını ele alalım. Bir müşterinin yatırım


hesabından, çek hesabına para aktarması işlemi üç aşamadan oluşan bir
veritabanı hareketidir. Bunlar yatırım hesabından para çekilmesi, paranın
çek hesabına aktarılması ve yapılan işlemin kaydının girilmesi. Oracle
bu üç işlemin de başarılı bir şekilde tamamlanmasını ve müşterinin
hesaplarında bir yanlışlık olmamasını sağlamaktır. Bu üç aşamanın
herhangi bir noktasında problem yaşandığında, diğer işlemlerin veri
üzerinde o ana kadar yaptığı değişikliklerin geri alınması gerekir. Buna
"Rolling Back" denir.

Veritabanı hareketi içeren SQL cümlelerinin yaptığı değişiklikler ya


Commit edilmeli yada Rollback edilmelidir. Bir veritabanı hareketi
Commit yada Rollback edildikten sonra sıradaki veritabanı hareketi
içindeki sıradaki SQL cümlesi çalışmaya başlar.

Commit işlemi gerçekleştiğinde veritabanı hareketi tarafından yapılan


değişiklikler kalıcı ve diğer kullanıcılarında görebileceği hale getirilir.

Rollback işlemi gerçekleştiğinde veritabanı hareketi tarafından yapılan


tüm değişiklikler geri alınır. Diğer kullanıcılar sanki bu veritabanı
hareketi hiç çalıştırılmamış gibi bu değişiklikleri hiç görmez.

18
Savepoints sayesinde çok uzun ve kompleks bir veritabanı hareketini
daha küçük parçalara bölmek mümkün olur. Veritabanı hareketinin
çalışması devam ederken, hareketin tamamını değil belirlenmiş
noktalara kadar Rollback yapılmasını mümkün kılar. Böylece yarıda
kalan bir hareketi tamamem iptal etmek yerine belli bir noktadan devam
etmesi sağlanabilir.

Veritabanı hareketleri sayesinde, kullanıcıların veri üzerinde tutarlı


değişiklikler yapması garanti edilir. Bir veritabanı hareketi mantıksal bir
iş biriminin tüm adımlarını içermelidir. Veritabanı hareketi başlamadan
önce ve sonra referans edilen tablolardaki veri tutarlı bir durumda
olmalıdır. Veritabanı hareketleri veri üzerinde tek bir tutarlı değişiklik
içeren SQL cümlelerinden oluşmalıdır.

Veri Bütünlüğü

Veri, veritabanı yöneticisi ve uygulama geliştiricisi tarafından


tanımlanmış iş kurallarına uygun olmalıdır. Veri üzerinde, veri
bütünlüğüne uygun olmayan bir değişiklik yapılmak istendiğinde,
Oracle yapılan değişiklikleri geri alır ve bir hata mesajı verir. Oracle veri
bütünlüğü kurallarını yönetebilmek için bütünlük kısıtlamalarını ve
veritabanı tetiklerini sağlar. Oracle’ın desteklediği veri bütünlüğü
kısıtlamaları ve onların açıklamaları şöyledir:

- NOT NULL : Boş bırakılamaz


- UNIQUE KEY : Çifte kayıt girilemez
- PRIMARY KEY : Çifte kayıt girilemez ve boş bırakılamaz
- FOREIGN KEY : Bir kolondaki tüm değerler bağlı olunan diğer
bir ilişkili tablonun bir kolonunda bulunmalıdır.

19
- CHECK : Önceden belirtilmiş mantıksal bir ifadeyi sağlamayan
değer girilemez.

Anahtarlar çeşitli veri bütünlüğü tanımlamalarının tanımlarında


kullanılır. Bir anahtar bir veya daha fazla kolondan oluşabilir. Anahtarlar
ilişkisel veritabanlarında farklı tabloların kolonları arasında ilişki
kurmak için kullanılır. Dört çeşit anahtar vardır:

- Primary key : Tablo için PRIMARY KEY kısıtlaması


tanımlanırken kullanılan kolon veya kolon kümesidir. Primary Key'in
değeri tablonun her bir satırı tek başına belirtmek için kullanılır. Her
tablo için bir primary key tanımlanabilir.
- Unique key : UNIQUE kısıtlaması tanımlanırken kullanılan kolon
veya kolon kümesidir
- Foreign key : FOREIGN KEY kısıtlaması tanımlanırken kullanılan
kolon veya kolon kümesidir
- Referenced key : FOREIGN KEY kısıtlamasının referans ettiği
aynı yada farklı tablodaki unique yada primary key.

SQL*Plus

SQL*Plus, veritabanı cümlelerini girmek ve çalıştırmak için kullanılan


bir araçtır. SQL*Plus kullanarak yapilabilecekler şunlardır:
- SQL cümleleri ve PL/SQL bloklarının girilmesi, değişitirilmesi,
saklanması ve çalıştırılması
- Sorgu sonuçlarının formatlanması
- Tabloların kolon tanımlarının listelenmesi
- Son kullanıcılara mesaj yollanması ve onlardan cevap alınması
- Veritabanı yönetimi

20
Bellek Yapısı ve İşlemleri
Oracle sunucusu, bellek yapılarını ve işlemlerini veritabanını yönetmek
ve erişmek için kullanır. Bütün bellek yapıları, veritabanı sisteminin
bulunduğu bilgisayarın ana belleğinde tutulur. İşlemler bilgisayarların
belleklerinde çalışan işlerdir.

Bu bölümde anlatılacak olan mimari özellikler, Oracle sunucusunun


şunları desteklemesini sağlamaktadır:
- Çok sayıda kullanıcının aynı anda tek bir veritabanına ulaşmaları
- Aynı anda çok sayıda kullanıcının ve uygulamanın bağlandığı bir
veritabanının ihtiyaç duyduğu yüksek performans

Şekil 2 Oracle sunucusunun temel bellek ve işlem yapılarını göstermektedir.

Şekil 2 – Oracle’ın Bellek Yapıları ve İşlemleri

21
Oracle sunucusu bir veritabanı ve bir sunucu örneğinden oluşur. Oracle
veritabanının her açılışında, bellekte sistem global alanı (SGA) tahsis
edilir ve Oracle arkaplan işlemleri başlatılır. Bu işlemler ve tahsis edilen
tampon belleğin birleşimi Oracle örneğini oluşturur.

Bazı donanım mimarileri, veri, uygulama veya aygıtların birçok


bilgisayar tarafından paylaşılmasına olanak verir. Gerçek Uygulama
Kümeleri (RAC) bu tür mimarilerden faydalanarak, tek bir fiziksel
veritabanına bağlı olarak birden fazla örneğin çalışmasına olanak verir.
RAC birden fazla makina üzerindeki kullanıcıların tek bir veritabanına
ulaşmalarına olanak vererek performans artışı sağlar. RAC yüksek
devamlılık özelliği taşıyan sistemlerin bir türevidir. RAC’a benzeyen
ortamlara sahip olan sistemler, planlı veya plansız kesintilere karşın
kesintisiz hizmet vermeye devam edebilirler.

--------------------------------------------------------------------------------
Not: RAC sadece Oracle9i Enterprise Edition’da mevcuttur.
--------------------------------------------------------------------------------

Bellek Yapıları

Oracle, çeşitli işleri tamamlayabilmek için çeşitli bellek yapıları yaratır


ve kullanır. Örneğin, çalıştırılacak program kodu ve kullanıcaların
paylaşacağı veriler bellek üzerinde saklanır. En temel iki bellek yapısı
Sistem Global Alanı ve Program Global Alanı’dır.

22
Sistem Global Alanı (SGA)

SGA, tek bir Oracle örneğinin ihtiyaç duyduğu veri ve kontrol


bilgilerinin tutulduğu paylaşıma açık bellek alandır. Oracle örneği ilk
açıldığı sırada tahsis edilir ve kapatılırken sisteme geri verilir. Her
örneğin kendine ait bir SGA’sı vardır. Sisteme bağlı olan kullanıcılar
SGA’daki bilgiyi paylaşırlar. En iyi performansı sağlaması için SGA’nın
ana bellek boyutlarını aşmama koşuluyla olabildiğince büyük olması
gerekir. Bu sayede bellekte daha fazla veri tutulabilir, bu da disk okuma
yazmasını azaltır. SGA’da tutulan bilgiler tiplerine göre farklı alt bellek
yapılarında saklanır. Bu yapılar ve içlerinde tuttukları bilgiler şöyledir:

- Veritabanı Tampon Önbelleği : İçinde en yakın zamanda


kullanılmış olan veri blokları tutulur. Bunun amacı, genelde en yakın
zamanda kullanılmış veri blokları aynı zamanda en sık kullanılanlar
olduğu için, bu blokları bellekte saklayıp disk okuma yazmasını
azaltmaktır.

- Redo Log Tampon Belleği : Database üzerinde yapılan


değişikliklerin kayıtları tutulur. Belli aralıklarla içeriği o anda
kullanımda olan ve veritabanının kurtarılmasında kullanılan Redo Log
dosyasına aktarılır.

- Ortak Havuz : Sisteme gönderilmiş olan SQL cümlelerinin parse


tree ve çalıştırma planı gibi bilgilerinin tutulduğu, tüm uygulamalar
tarafından paylaşılan alandır.

- Büyük Havuz : Veri yedekleme ve kurtarma, sunucu okuma


yazma işlemleri, oturum belleği ve birden fazla veritabanı üzerinde
çalışan hareketler(Oracle XA) gibi işlerde kullanmak üzere tahsis edilen
opsiyonel bir alandır.

23
- Cümle tanıtıcıları veya Kursörler : Kursör belirli bir cümle için
tahsis edilmiş olan bellek için yaratılmış bir göstergedir. Uygulama
geliştiriciler kursörleri kullanarak, SQL cümlesinin çalıştırılma
aşamalarında daha fazla kontrol sağlayıp uygulama performansını
arttırabilirler.

Program Global Alanı (PGA)

PGA, sunucu işlemleri için gereken veri ve kontrol bilgilerini tutmak


için tahsis edilen tampon bellektir. Oracle tarafından bir sunucu işlemi
başladığında otomatik olarak tahsis edilir. İçinde tutulacak bilgi Oracle
konfigürasyonuna bağlıdır.

İşlem Mimarisi

İşlem, işletim sisteminde belirli adımları çalıştırabilen mekanizmaya


verilen isimdir. Her işlemin kendisi için ayrılmış bellek alanı vardır.
Oracle sunucusunda genel olarak iki tip işlem vardır. Bunlar kullanıcı
işlemleri ve Oracle işlemleridir.

Kullanıcı İşlemleri

Kullanıcı işlemleri, uygulama kodunu veya Enterprise Manager gibi bir


Oracle aracını çalıştırmak için yaratılır. Kullanıcı işlemi ayrıca sunucu
işlemiyle olan iletişimi de sağlar.

24
Oracle İşlemleri

Oracle işlemleri, diğer işlemler tarafından çeşitli fonsiyonları yerine


getirmeleri için çağrılır. İki tip Oracle işlemi vardır. Bunlar sunucu
işlemleri ve arkaplan işlemleridir.

Sunucu işlemleri, kullanıcı işlemlerinden gelen isteklerle ilgilenmesi için


Oracle tarafından yaratılır. Bir sunucu işlemi, kullanıcı işlemiyle
iletişime geçip ondan gelen isteğin Oracle tarafından yerine getirilmesini
sağlar. Her kullanıcı işlemine karşılık yaratılacak sunucu işlemi sayısı
konfigürasyona göre değişir.

Oracle, her veritabanı örneği için belli sayıda arkaplan işlemi başlatır.
Bunlar her kullanıcı işleminin ortak olarak ihtiyaç duyduğu bazı
fonksiyonları yerine getirirler. Performans ve güveninirliği arttırmak için
diger Oracle işlemlerini izleyerek parelelliği arttırmaya çalışırlar. Bir
Oracle örneğinin kullanabileceği arkaplan işlemleri şunlardır:

- Veritabanı Yazıcısı (DBWn) : Veritabanı tampon önbelleğindeki


değişikliğe uğramış blokları datafile’lara yazar. Normalde bir tane
yeterlidir ama çok değişiklik yapılan sistemlerde yazma performansını
arttırmak için istendiğinde DB_WRITER_PROCESSES parametresi
kullanılarak sayısı arttırılabilir.

- Log Yazıcısı (LGWR) : Redo Log tampon belleğindeki bilgileri


belli aralıklarla o anda kullanımda olan Redo Log dosyasına aktarır.

- Checkpoint (CKPT) : Belirli zamanlarda SGA’daki herşey


datafile’lara yazılır. Bu duruma checkpoint denir. Checkpoint işlemi,
25
belirlenen zamanlarda bu işlemi yapar ve kontrol dosyalarına en son
checkpoint işleminin ne zaman yapıldığını kaydeder.

- Sistem Monitörü (SMON) : Oracle örneğinin bir hata sonucu


kapanması durumunda oluşan problemleri gidermek için örnek yeniden
açılırken kurtarma işlemi yapar. RAC ortamında, bir örneğin SMON
işlemi diğer örneklerde örnek kurtarma işlemi yapabilir. SMON’un diğer
görevleri kullanılmayan temporary segmentlerin temizlenmesi,
dosyalara ulaşılamadığı için kurtarması yarım kalanların ulaşılabilir hale
geldiklerinde kurtarılmasıdır.

- İşlem Monitörü (PMON) : Kullanıcı işlemlerinin başarıyla


tamamlanmasını engelleyen bir durum olduğunda işlem kurtarma
görevini yapar. İşlemin kullandığı tampon belleği temizler, işlem
tarafından tutulan kaynakları serbest bırakır. Ayrıca sunucu
işlemlerinden başarısız olanları yeniden başlatır.

- Arşivleyici (ARCn) : Sistemde Log Switch denilen işlem


gerçekleştiğinde boştaki redo log dosyalarının kopyalarını arşiv
depolamak için belirtilen yere alır. Sadece sistem arşiv modundaysa
aktif hale gelir.

- Kurtarıcı (RECO) : Ağ yada sistem problemi yüzünden


beklemekte olan dağıtılmış veritabanı hareketlerini tamamlamakla
görevlidir. Uzaktaki veritabanına belli aralıklarla ulaşıp yarım kalan
hareketi tamamlamaya çalışır.

- İş Kuyruğu İşlemleri (Jnnn) : İş kuyruğuna atılan işlerin


belirlenen zamanlarda çalıştırılmasıyla görevlidir.

26
- Dağıtıcı (Dnnn) : Sadece paylaşımlı sunucu konfigurasyonu
yapıldığında çalışır. Kullanıcı işlemlerinden gelen istekleri varolan
paylaşımlı sunucu işlemlerinden birine yönlendirmekle, geri dönen
cevabı da gereken kullanıcı işlemine iletmekle görevlidir.

- Kilit Yönetim Sunucusu (LMS) : RAC ortamında veritabanı


örnekleri arasındaki kilitleme mekanizması için kullanılır.

- Kuyruk Monitörü (QMNn) : Oracle Advanced Queuing


opsiyonuna ait olan mesaj kuyruklarını izlemesi için yaratılan opsiyonel
işlemlerdir. En çok on adet kuyruk mönitörü işlemi tanımlanabilir.

Program Arayüzü Mekanizması

Kullanıcı işlemleriyle sunucu işlemlerinin iletişim kurmasını sağlayan


mekanizmadır. İki fonksiyonu vardır:

- Veri talebi, veri aktarımı, hataların yakalanıp bildirilmesi gibi


işlemlerin iletişim formatını düzenler
- Değişik bilgisayar yada kullanıcı programları arasında verinin
dönüştürülmesini sağlar.

Kullanıcı ve sunucu işlemleri ayrı makinalardaysa yada kullanıcı işlemi


paylaşımlı sunucu işlemine dağıtıcı üzerinden bağlanıyorsa, bu işlemler
iletişim için Oracle Net Services protokolünü kullanırlar. Oracle Net
Services tüm bilinen önemli ağ protokollerinin üzerinde çalışabilir.

27
Uygulama Mimarisi

Bir veritabanı sistemi, istemci/sunucu ve .ok katmanlı olmak üzere iki


temel şekilde kurulabilir. İnternet’in yaygınlaşmasıyla birlikte veritabanı
yönetim sistemlerinin çoğu çok katmalı yapıya yönelmişlerdir.

İstemci/Sunucu Mimarisi

Bu mimaride, veritabanı sistemi iki parçaya ayrılmıştır. Ön uçta istemci


bulunurken, arka uçta ise sunucu bulunur.

İstemci, kullanıcıların klavye, ekran ve fare gibi bir gösterge aracı


kullanarak ulaştıkları ön uç veritabanı programıdır. Veritabanı tarafından
yönetilen veri, istemci tarafından talep edilir, işlenir ve gösterilir.
İstemci makinası, yapılacak işe göre optimize edilebilir. Birden fazla
istemci bir sunucu üzerinden çalışabilir.

Oracle yazılımını çalıştıran ve eşzamanlı paylaşımlı veri erişimi


fonksiyonlarını yerine getiren arka uç sunucudur. Sunucu, istemciden
gelen SQL ve PL/SQL komutlarını alır ve işler. Sunuculuk görevini
yerine getiren makina da yaptığı işe göre optimize edilebilir.

Çok Katmanlı Mimari: Uygulama Sunucuları

Çok katmanlı mimari şu bileşenlerden oluşur:

- Operasyonu başlatacak bir istemci yada başlatıcı işlem

28
- Operasyonun bazı parçalarını yürütecek bir veya daha fazla
uygulama sunucusu. (Bir uygulama sunucusu, istemci için veri erişimini
ve sorgu işlemeni yapar ve bu sayede veritabanı sunucusu üzerindeki
yükün bir kısmını alır. Ayrıca istemciyle birden fazla sayıda veritabanı
arasında arayüz görevi görerek, ekstra bir güvenlik seviyesi
sağlayabilir.)
- Operasyon sırasında kullanılan verinin büyük bir kısmının
bulunduğu veritabanı sunucusu.

Bu mimari uygulama sunucusunun şu amaçlar için kullanılmasını sağlar:


- Kullanıcının yetkilerinin kontrol edilmesi
- Oracle veritabanına bağlanılmasını
- İstenilen işlemin istemci adına yerine getirilmesi

Dağıtılmış Veritabanları

Dağıtılmış veritabanı, birçok veritabanı sunucusu tarafından yönetilen


bir veritabanları ağıdır. Genelde tek bir mantıksal veritabanı gibi
görülmezler. Dağıtılmış veritabanındaki veritabanlarına aynı anda
erişilip değişikliler yapılabir. Dağıtılmış veritabanlarının en önemli
yararı, fiziksel olarak ayrılmış veritabanlarının mantıksal olarak
birleştirilebilmesi ve ağ üzerindeki tüm kullanıcıların kullanımına
açılabilmesidir.

Dağıtılmış veritabanındaki veritabanlarını yöneten herbir bilgisayara


düğüm adı verilir. Kullanıcaıların direk olarak bağlı oldukları
veritabanına yerel veritabanı, bu kullanıcının ulaştığı diğer
veritabanlarına ise uzaktaki veritabanları denir. Yerel bir veritabanı
uzaktaki bir veritabanına bilgi almak için ulaştığında, uzaktaki
sunucunun istemcisi durumuna gelir.

29
Veritabanı bağı, bir veritabanından diğer veritabanına olan yolu tarif
eder. Veritabanı bağları, dağıtılmış veritabanlarındaki global nesnelere
ulaşılmak istenildiğinde kullanılır.

Dağıtılmış veritabanı ağ üzerindeki büyük miktardaki veriye


ulaşılmasını sağladığı gibi, ulaşılan verinin yerini ve ona ulaşmaktaki
karmaşık işlemleri gizlemelidir. Buna lokasyon saydamlığı denir ve
Oracle’a ait bir çok özellik bunu destekler. Ayrıca dağıtılmış bir
veritabanı sistemi, her yerel veritabanın sanki dağılmış bir sistemin
parçası değilmiş gibi yönetilebilmesinin getirdiği avatajların
kullanılmasına izin vermelidir. Buna bölge özerkliği denir.

Oracle dağıtılmış veritabanı mimarisi her türlü DML operasyonunu


desteklemektedir. Uzaktaki bir veriye ulaşmak için tek yapmanız
gereken uzaktaki nesnenin global nesne adını vermektir. Örneğin,
uzaktaki satis veritabanındaki calisan tablosunu sorgulamak için
yazmanız gereken sorgu şöyledir:

SELECT * FROM calisan@satis;

Oracle normal bir veritabanında olduğu gibi dağıtılmış bir ortamda da


veri tutarlığını tam olarak sağlar. Bunun için iki aşamalı commit
mekanizmasını kullanır.

Replikasyon

Replikasyon, tablo gibi bazı veritabanı nesnelerinin kopyalarının birden


fazla veritabanında tutulmasıdır. Nesneler üzerinde yapılan değişiklikler
daha sonra uzaktaki veritabanlarına gönderilmek üzere yerel
veritabanında saklanır. Bu özellik Oracle sunucusuna tamamen entegre
olarak çalışır, ayrı bir sunucu gibi çalışmaz.

30
Replikasyon, işlemlerini yürütmek için dağıtılmış veritabanı
teknolojisini kullanır ama bu iki teknoloji farklı konseptlerdir.
Replikasyonda bir nesnenin kopyası birden fazla yerde bulunabilirken,
dağıtılmış veritabanında bir nesne sadece bir yerde bulunabilir.

Yoğun bir şekilde sorgulanan tabloların kopyalarının birden fazla


düğümde bulunması büyük miktarda ağ trafiğini azalttığı için
performansa önemli derecede katkı yapar.

Veri replikasyonu için materialized view denilen nesnelerde


kullanılabilir. Oracle’da, hiyerarşik ve değiştirilebilir materialized view
desteğide mevcuttur. Birden fazla yerde değiştirilmiş veride çıkabilecek
uyumsuzlukları çözümlemek için sistemde önceden tanımlanmış
metodlar kullanılabileceği gibi kullanıcılar kendi metodlarınıda
yazabilirler.

Streams

Oracle Streams, verinin ve olayların veri akımları şeklinde iki veritabanı


arasında yada aynı veritabanı içinde paylaşılmasını sağlar. Akım,
belirlenmiş bir bilginin belirlenmiş bir yere yönlendirilmesini sağlar.
Aynı anda Oracle Streams’in tüm özelliklerini bir arada
kullanabilirsiniz.

Streams kullanarak, akıma hangi bilginin koyulacağını, akımın nasıl


akacağını, nereden nereye gideceğini ve akımın nasıl sonlanacağını
belirleyebilirsiniz. Streams, veritabanındaki DML ve DDL değişikleri
gibi birçok şeyi yakalayabildiği gibi kullanıcı tarafından tanımlanan
olaylarıda yakalayıp akımın içine yerleştirebilir. Streams’i şu işler için
kullanabilirsiniz:

31
- Veritabanındaki değişikliklerin yakalanması
- Yakalanan olayların bir kuyruğa atılması
- Kuyruğa atılan olayların aynı veya farklı veritabanlarındaki başka
kuyruklara gönderilmesi.
- Olayların kuyruktan çekilmesi
- Çekilen olaya göre gereken işlemin veritabanında
gerçekleştirilmesi

Advanced Queuing

Oracle Advanced Queuıing, dağıtılmış uygulamaların birbirleriyle


asenkronize mesajlar aracılığıyle konuşabilecekleri bir altyapı sağlar.
Oracle Advanced Queuıing, mesajları Oracle sunucusunun sonradan alıp
işlemsi için kuyruklarda saklar. Bu ekstra bir yazılıma gerek duymadan
güvenilir ve verimli bir kuyruk sistemi sağlar. Mesajlar istemci ve
sunucu arasında gidip gelebileceği gibi farklı serverlardaki işlemler
arasında da gidip gelebilir. İki tür mesajlaşma sistemi olabilir:
- Senkronize İletişim : İstek/Cevap paradigmasına göre çalışır. Bir
program diğer bir programa bir mesaj gönderir ve ondan cevap gelene
kadar bekler.
- Asenkronize İletişim : Bu tür iletişimde, programlar isteklerini bir
kuyruğa atar ve çalışmaya devam ederler.

Heterojen Servisler

Heterojen sistemler, Oracle dışı veritabanı sistemlerine ulaşılmasını


sağlar. Oracle dışı veritabanı sistemlerden kastedilenler şunlardır:

- C programlama diliyle yazılmış PL/SQL prosedürler aracılığıyla


erişilen sistemler (Dış prosedürler aracılığıyla)
32
- SQL aracılığıyla erişilen sistemler (Oracle aracılığıyla)
- Prosedürel olarak erişilen sistemler (Prosedürel Geçitler
aracılığıyla)

Heterojen servisler şunları mümkün kılar:

- SQL cümleleri ile Oracle dışı sistemlerden veri çekilmesi


- Oracle dağıtılmış ortamı içinden Oracle prosedürleri ile Oracle dışı
sistemlere, servislere veya API’lere ulaşılması

Genelde heterojen sistemler iki şekilde kullanılır:

- Oracle tarafından belirli bir Oracle dışı sistem için yazılmış


Transparent Gateway ile birlikte heterojen servisler kullanılması.
Örneğin Sybase için yazılmış geçit kullanılarak Oracle içinden Sybase
veritabanına ulaşılması.
-
- ODBC veya OLE DB gibi arayüzler kullanılarak Oracle dışı
veritabanlarına ulaşılması

Eşzamanlı ve Tutarlı Veri Erişimi

Eşzamanlı Erişim

Çok kullanıcılı bir veritabanı yönetim sistemi için dikkat edilmesi


gereken en önemli nokta, çok sayıda kullanıcının aynı veriye aynı anda
ulaşmaları anlamına gelen eşzamanlı erişimdir. Sistemde gerekli
kontroller olmazsa veri yanlış bir şekilde değiştirilebilir ve verinin
bütünlüğü bozulabilir.

33
Eşzamanlılığı sağlamanın bir yolu, birden fazla kullanıcı aynı veriye
erişmek istediğinde herkesin belli bir sırayla veriye erişmelerini
sağlamaktır. Veritabanı sisteminin görevi her kullanıcı için bekleme
süresini hissedilir seviyenin altına çekmektir. Bunu yaparken verinin
yanlış bir şekilde değiştirilmesine izin verilmemelidir. Performanstan da
veri bütünlüğünden de ödün verilemez.

Oracle bu meseleyi çeşitli tiplerdeki kilitler ve çok versiyonlu tutarlılığa


dayalı bir model ile çözmektedir. Bu özellikler, veritabanı hareketi
konseptine dayanır.

Okuma Tutarlılığı

Oracle tarafından deskteklenen okuma tutarlılığı şunları yapar:


- Bir veritabanı cümlesinin gördüğü veri kümesi zaman içinndeki
belirli bir noktaya göre tutarlıdır ve cümlenin çalışması bitene kadar
değişmez.
- Veritabanı verisini okumak isteyenler, aynı veriye yazmaya yada
okumaya çalışanları beklemez.
- Veritabanı verisine yazmak isteyenler, aynı veriyi okumaya
çalışanları beklemez.
- Veritabanı verisine yazmak isteyenler, sadece aynı data üzerinde
eşzamanlı bir veritabanı hareketi varsa diğer yazanları beklerler.

Oracle’ın bu yaklaşımını, her kullanıcının kendi veritabanı kopyası


olması gibi düşünebiliriz. Buna çok versiyonlu tutarlılık modeli denir.

Bir veride değişiklik yapıldığında, bu değişikliğin yapıldığı veritabanı


hareketi commit edilene kadar diğer kullanıcılara tutarlı bir görüntü
34
gösterebilmek için bu veritabanının undo kayıtları arasına kaydedilir.
Başka bir kullanıcı bu sırada veriye erişmek istediğinde undo kayıtları
kullanılarak verinin okuma tutarlı hali oluşturulur ve kullanıcıya bu
görüntü gösterilir. Ancak veritabanı hareketi commit edildikten sonra o
hareket tarafından yapılan değişiklikler kalıcı hale gelir. O andan
itibaren kullanıcılar sadece commit edilmiş veriyi görür.

Oracle bir veritabanı cümlesi içindeki okuma tutarlılığını garanti eder


fakat bazı durumlarda bir veritabanı hareketinin tamamında okuma
tutarlılığı olsun istenebilir. Bu durumda kullanmamız gerek mekanizma
Salt-Okunur Veritabanı hareketidir. Bunun için hareketin içinde bunun
belirtilmesi gerekir.

Kilitleme Mekanizması

Oracle eşzamanlı veri erişimini sağlamak için kilitleri kullanır. Gerekli


kilitlemeler SQL cümleleri için otomatik olarak Oracle tarafından
yapılır. Oracke’ın kilit yöneticisi tablo verisini sıra bazında kilitler. Bu
sayede, aynı veri için mücadele minimize edilmiş olur. Hangi işlem için
kilitin alındığına göre kilit yöneticisi değişik tipteki kilitler arasından en
uygun olanı seçer. Genel olarak iki temel kilit vardır. Bunlar salt kilitler
ve paylaşımlı kilitlerdir. Bir sistem kaynağı üzerinde sadece bir tane salt
kilit alınabilir ama çok sayıda paylaşımlı kilit alınabilir. Hem salt kilitler
hemde paylaşımlı kilitler veri üstünde sorguya izin verir ama başka bir
işlemin yapılmasına izin vermez.

Bazı durumlarda kullanıcılar, varolan kilitlemeyi manuel olarak ezmek


isteyebilir. Oracle kullanıcıların hem satır bazında hemde tablo
bazındaki kilitleri elle ezmelerine olanak verir.

35
Quiesce Veritabanı

Veritabanı yönetimi için yapılacak bazı işlemler, veritabanı üzerinde


veritabanı yöneticilerinin işlemleri dışında eşzamanlı işlem olmamasını
gerektirebilir. Bu durumda yapılabilecek şeylerden biri veritabanını
kapatıp, sınırlandırılmış olarak açmaktır. Fakat devamlı açık kalması
gereken sistemler için bu çoğu zaman mümkün değildir. Bu tür durumlar
için Oracle Quiesce Veritabanı özelliğini sağlar. Veritabanı açıkken
çalıstırılarak bir süreliğine veritabanı yöneticileri dışındaki kullanıcıların
eşzamanlı iş çalıştırmaları geçici süreyle engellenebilir.

Veritabanı Güvenliği

Oracle, veritabanına nasıl erişileceğini ve kullanılacağını kontrol eden


güvenlik özellikleri içerir. Her veritabanı kullanıcısı ile ilişkilendirilmiş
ve kendisiyle aynı ismi taşıyan bir şema vardır. Temelde her kullanıcı
kendi şeması içinde nesneler yaratır ve erişir. Bir kullanıcının diğer
şemalarda herhangi bir işlem yapabilmesi için gereken yetkilere sahip
olması gerekir.

Veritabanı güvenliği iki kategoriye ayrılabilir. Bunlar sistem güvenliği


ve veri güvenliğidir.

Sistem güvenliği, veritabanının sistem seviyesinde kullanımıyla ilgili


mekanizmaları kontrol eder. Örneğin, doğru kullanıcı adı ve şifreleri,
kullanıcıya ait şema nesneleri için ayrılan yer miktarı, kullanıcı için
ayrılan kaynak miktarları.

36
Sistem güvenliği mekanizmaları şunları kontrol eder:

- kullanıcının bağlanmaya yetkisi varmı


- veritabanı denetlemesi aktif mi
- kullanıcı hangi sistem operasyonlarını yapabilir

Veri güvenliği, veritabanının şema nesneleri seviyesinde kullanımıyla


ilgili mekanizmaları kontrol eder. Örneğin, kullanıcı hangi şema
nesnelerine erişebilir, kullanıcı belli bir şema nesnesi üzerinde hangi
işleri yapmaya yetkilidir.

Oracle veritabanı güvenliğini şunları kullanarak yönetir:

- Veritabanı kullanıcıları ve şemaları : Bir kullanıcının


veritabanına bağlanabilmesi için veritabanında tutulmakta olan geçerli
bir kullanıcı adı ve şifresi vermelidir. Kullanıcının yapabileceği
işlemlerin oluşturduğu kümeye kullanıcının güvenlik alanı denir.

- Yetkiler : Yetki, belli bir tipteki SQL cümlesini çalıştırabilme


hakkıdır. Örneğin, veritabanına bağlanabilme, kendi şeması içinde tablo
yaratabilme veya bir başkasına ait olan tabloyu sorgulayabilme. İki tür
yetki vardır. Bunlar sistem yetkileri ve şema yetkileridir. Sistem
yetkileri, sistem genelinde yapılacak işler içindir ve genelde sadece
sistem yöneticilerine verilir. Şema yetkileri, belirli bir şemadaki belirli
bir nesne üzerinde yapılabilecek işler için verilir. Bu yetkiler direk
olarak kullanıcalara verilebildiği gibi yetkiler kümesi olarak
tanımlanabilecek olan roller aracılığıylada verilebilir.

- Roller : Oracle yetki yönetimini roller aracılığıyla


kolaylaştırmaktadır. Roller, kullanıcılara ve diğer rollere verilecek,
birbiriyle alakalı, isimlendirilmiş yetkiler kümesidir.

37
- Depolama Ayarları ve Kotalar : Her kullanıcı yaratılırken bir
varsayılan birde geçici tablespace ile ilişkilendirilir. Bir nesne
yaratılacağı sırada eğer tablespace adı belirtilmezse kullanıcının
varsayılan tablespace’inde yaratılır. Bir SQL cümlesi çalıştırılırken
geçici segmente ihtiyaç duyulursa bu kullanıcının ilişkilendirilmiş
olduğu geçici tablespace içinde yaratılır. Kullanıcıların tablespace’ler
içinde kullanabilecekleri yer miktarı ise o kullanıcıya o tablespace
üzerinde verilmiş kotayla sınırlıdır.

- Profiller ve Kaynak Limitleri : Veritabanı kaynaklarının gereksiz


yere harcanmaması için her kullanıcıya kaynak kullanım limitlerini
belirleyen bir profil atanır. Profilin içereceği kayanaklardan bazıları
şunlardır:

o Kullanıcının aynı anda açabileceği maksimum oturum sayısı


o Kullanıcının oturumu ve çalıştıracağı SQL cümleleri için
kullanabileceği CPU zamanı ve manatıksal giriş çıkış miktarı
o Kullanıcının bir iş yapmadan bekleyebileceği süre
o Kullanıcının bağlı kalabileceği süre
o Kaç başarısız bağlanma denemesinden sonra kullanıcı hesabının
kilitleneceği, şifrenin ne kadar süre geçerli olduğu veya ne tür
şifrelere izin verileceği gibi şifre kısıtlamaları

- Seçilmiş Kullanıcını Hareketlerinin Denetlenmesi : Üç farklı


seviyede denetleme yapılabilir. Bunlar cümlelerin, yetkilerin ve şema
nesnelerinin denetlenmesidir. Cümle denetlemesi, belli veya tüm
kullanıcıların belirli tipteki SQL cümlelerinin denetlenmesini sağlar.
Yetki denetlemesi, belli veya tüm kullanıcılaların sistem yetkilerini
kullanımlarının denetlenmesini sağlar. Şema nesnelerinin denetlenmesi,
belli şemalardaki belli nesneler üzerinde yapılacak işlerin

38
denetlenmesini sağlar. Denetlemeler sonucunda elde edilen bilgiler
denetleme tablolarına yazılır. Kullanıcılar tanımlayacakları veritabanı
tetikleri ile daha karmaşık denetleme mekanizmaları kurabilirler.

- Ayrıntılı Denetleme : Erişilen verinin içeriğine göre denetleme


yapılmasını sağlar. Denetleme sırasında önceden belirlenen durumlar
tespit edildiğinde kullanıcının bu durum için tanımladığı veritabanı
prosedürlerinin çağrılması sağlanabilir. Ayrıntılı denetleme, uygulamalar
içinden DBMS_FGA paketi kullanılarak gerçekleştirilebilir.

Veritabanı Yönetimi

Oracle veritabanı sistemi, veritabanın yaratılması ve problemsiz bir


şekilde çalışmasını sağlamakla görevli veritabanı yöneticileri tarafından
yönetilir.

Enterprise Manager

Eterprise Manager, heterojen ortamlarınızın merkezi yönetimi için


kullanılan entegre bir sistem yönetim aracıdır. Grafik konsolu
aracılığıyla Oracle ürünlerinin yönetimi için tasarlanmıştır. Konsolu ile
yapılabilecek işlemler şunlardır:
- Oracle’a ait veritabanı, uygulama sunucusu, uygulamalar ve
servislerinden oluşan komple bir ortamın yönetimi
- Çok sayıda veritabanının izlenmesi, değişiklikler yapılması ve
ayarlanması
- Çok sayıda sistem üzerinde değişken zaman aralıklarında çeşitli
işlemlerin zamanlanması
- Ağ üzerindeki veritabanlarının durumlarının izlenmesi
- Birçok yerdeki çok sayıda ağ düğümü ve servisinin yönetilmesi
- Belirli işlerin diğer yöneticilerle paylaşılması
39
- Belirli hedeflerin bir arada gruplanarak yönetilmesi
- Entegre Oracle ve üçüncü parti araçların çalıştırılması
- Enterprise Manager’ın görüntüsünün kişiselleştirilebilmesi

Veritabanı Yedekleme ve Kurtarma

Her vertabanı sistemi, sistem yada donanım hatası olasılığıyla karşı


karşıyadır. Bir hata oluşup veritabanına zarar verdiğinde, veritabanının
hızlı bir şekilde kurtarılabilmesi gerekmektedir. Hata oluştuktan sonraki
amaç commit edilmiş tüm verinin kurtarılması ve en kısa sürede normal
işleyişe geri dönülmesidir. Oracle veritabanının durmasına sebep olacak
en önemli hata tipleri şunlardır:

- Kullanıcı Hatası : Hatanın oluştuğu andan daha geri zamana


kadar kurtarma gerektirir. Oracle, zamanda tam olarak belirli bir noktaya
göre kurtarmaya olanak verir. Bu hata tipine kullanıcının bir tabloyu
yanlışlıkla silmesi örnek olarak verebiliriz.

- Cümle Hatası : Bir Oracle programı içindeki cümle işlenirken


oluşan mantıksal hatalardır. Oracle tarafından otomatik olarak cümlenin
etkileri geçersiz kılınır.

- İşlem Hatası : Oracle’a erişen kullanıcı işleminin beklenmedik


şekilde sonlanması durumdur. PMON arakaplan işlemi otomatik olarak
bu durumu farkeder ve commit edilmemiş değişikleri geri alır ve işlemin
tuttuğu kaynakları serbest bırakır.

- Veritabanı Örneği Hatası : Örneğin çalışmasını engelleyecek bir


durum oluştuğunda ortaya çıkar. Hatanın sebebi, elektriklerin kesilmesi
gibi bir donanım probleminden kaynaklanabileceği gibi işletim
sisteminden kaynaklanan bir yazılım problemide olabilir. Bu durumda

40
Oracle otomatik olarak örnek kurtarma gerçekleştirir. Veritabanı
açılırken tüm redo bilgileri yeniden veritabanına uygulanır.

- Medya (Disk) Hatası : Oracle’ın diske yazma veya okuma


yapmasına engel olan bir durum olduğunda ortaya çıkar. Bu durum
veritabanına ait birçok dosyaya zarar verebilir. Bu tip hatalarda zarar
gören dosyalar geri yüklendikten sonra medya kurtarması işlemi
uygulanır. Örnek kurtarmasının aksine medya kurtarmasını kullanıcının
başlatması gerekir. Medya kurtarma işlemi geri yüklenen dosyalarda
değişiklikler yaparak onları hata oluşumundan önceki son haline kadar
getirebilir.

Eger sadece datafileların bir kısmında hata oluşursa tüm veritabanını


kapatmaya gerek kalmadan kurtarma işlemi uygulanabilir. Böylece zarar
görmeyen dosyalardaki veriler kullanıcıların erişimine açık kalır.

Kurtarma İşleminde Kullanılan Yapılar

Oracle, örnek yada disk hatalarında komple bir kurtarma sağlayabilmek


için şu yapıları kullanır:

- Redo Loglar : Veritabanı üzerinde yapılan değişikliklerin


tutulduğu dosyalardır. İki parçadan oluşurlar kullanımda olanlar ve
arşivlenmiş olanlar. Kullanımda olanlar iki yada daha fazla sayıda
dosyadan oluşur. Geçici olarak redo log tampon belleğinde tutulurlar ve
LGWR arkaplan işlemi tarafından belli aralıklarla diske yazılırlar. Dolan
redo log dosyaları elle yada otomatik olarak arşivlenebilir. Arşivlenen
bu dosyalara arşivlenmiş redo log dosyaları denir. Veritabanı arşiv
modundayken arşivleme işlemi otomatik olarak sistem tarafından
gerçekleştirilir. Arşiv modundan çalışan bir veritabanı her türlü hata

41
durumunda komple kurtarılabilir. Fakat arşiv modunda olmayan bir
veritabanı ancak örnek hatası durumunda komple kurtarılabilir.

- Geri Alma Kayıtları : Undo tablespacelerinde yada rollback


segmentlerde depolanırlar. Veritabanı geri alma kayıtlarını, commit
edilmemiş veritabanı hareketleri tarafından değiştirilmiş veritabanı
bloklarının eski görüntülerini oluşturmak gibi çeşitli işlerde kullanılırlar.
Veritabanı kurtarılması sırasında, Oracle redo loglardaki tüm
değişiklikleri uyguladıktan sonra commit edilmemiş veritabanı
hareketlerinin etkilerini kaldırmak için geri alma kayıtlarından
faydalanır.

- Kontrol Dosyaları : Bu dosyalar tuttukları diğer bilgilerin yanında


veritabanı dosyalarının yapısını ve o andaki LGWR tarafından yazılan
log sıra numarasını tutar. Normal kurtarma işlemleri sırasında kontrol
dosyalarındaki bilgiler, kurtarma işleminin ilerlemesinin otomatik
yönlendirilmesi için kulanılır.

- Veritabanı Yedekleri : Hatalar bir veya daha fazla fiziksel


dosyanın bozulmasına sebep olabileceği için medya kurtarma işlemi en
son alınan veritabanı yedeğindeki bazı dosyaların geri yüklenmesine
ihtiyaç duyabilir. Yedekleme için Oracle’ın Kurtarman Yöneticisi
(RMAN) isimli aracını yada işletim sistemi araçlarını kullanabilirsiniz.

Veri Ambarı

Veri ambarı, veritabanı hareketinden çok sorgulama ve analiz için


kullanılmak üzere dizayn edilmiş ilişkisel bir veritabanıdır. Genelde
hareket verisinden elde edilmiş tarihi bilgiler içerdiği gibi başka
kaynaklardan gelen bilgilerde içerebilir. Veritabanı hareketlerinden
kaynaklanan iş yüküyle analiz yükünü birbirinden ayırır ve bu sayede

42
değişik kaynaklardan toplanan bilgilerin daha kolay bir şekilde organize
edilmesine olanak sağlar.

Veri Ambarı ile OLTP Sistemler Arasındaki Farklar

Veri ambarı ve OLTP sistemlerin ihtiyaçları birbirinden çok farklıdır.


Tipik bir veri ambarı ile OLTP sistemler arasındaki bazı farklar
şunlardır:

- İşyükü : Veri ambarında ne tür bir iş yük olacağını önceden


bilmek zordur, bu sebeple veri ambarını muhtemel bir çok farklı sorguya
göre optimize etmeniz gerekir. Ama OLTP sistemlerin karşılaşacağı
operasyonlar önceden bellidir. Uygulamanızı özellikle bu operasyonlara
göre ayarlayabilirsiniz.

- Veri Değişimi : Veri ambarında uç kullanıcılar direk olarak


değişiklik yapmaz. Veri ambarında veri değişiklikleri günde veya
haftada bir kere olacak şekilde toptan yapılır. OLTP sistemlerde ise uç
kullanıcılar devamlı veri üzerinde değişiklik yapar ve sistemde
herzaman en güncel bilgi bulunur.

- Şema Dizaynı : Veri ambarlarında, sorgu performansını arttırmak


için genelde denormalize veya kısmen denormalize şemalar kullanılır.
OLTP sistemlerdeyse, veri değişimini optimize etmek ve veri
tutarlılığını garanti etmek için tamamen normalize edilmiş şemalar
kullanılır.

- Tipik Operasyonlar : Tipik bir veri ambarı sorgusu binlerce hatta


milyonlarca satır tarar ama OLTP sistemlerdeki operasyonlarda çok az
sayıda satıra erişilir.

43
- Tarihi Bilgi : Tarihi analizleri destekleyebilmek için veri
ambarlarında aylarca hatta yıllarca zamanlık veri depolanır. Ama OLTP
sistemlerde en fazla birkaç haftalık yada aylık bilgi depolanır.

Veri Ambarı Mimarisi

Veri ambarları ve onların mimarileri organizasyonların durumuna göre


değişkenlik gösterir. Üç temel mimari şunlardır:

- Veri Ambarı Mimarisi (Basit) : Uç kullanıcılar değişik


kaynaklardan toplanan veriye direk ulaşırlar. OLTP sistemlerden gelen
veri, metaveri ve ham veri olarak sistemde tutulur. Sistemde depolanan
bir diğer tipteki veri ise meta ve ham verinin işlenmesi sonucu elde
edilen ve veri amabarı için çok önemli olan özet veridir. Oracle’da
özetlere materialized view denir.

- Veri Ambarı Mimarisi (Sahneleme alanı içeren) : Operasyonel


verinin veri ambarına atılmasından önce temizlenmesi ve bir ön
işlemeden geçirilmesi gerekir. Bu iş için bir sahneleme alanı kullanılır.
Bu özet verinin çıkartılmasını ve veri ambarı yönetimini kolaylaştırır.

- Veri Ambarı Mimarisi (Sahneleme alanı ve veri çarşısı içeren)


Organizasyon içindeki değişik gruplara göre veri ambarının mimarisi
kişiselleştirilmek istenebilir. Bunu sağlamak için kullanılan yapılara veri
çarşısı denir. Veri çarşısı, yürütülmekte olan işin belirli alanları için
dizayn edilmiş sistemlerdir. Örneğin, veri ambarında satış yada satın
almayla ilgili verilere uç kullanıcılar ayrı ayrı ulaşmak isteyebilir.

44
Materialized View’lar

Bu yapı bir sorgunun sonuçlarını ayrı bir şema nesnesi içinde tutarak
tablolara dolaylı bir erişim sağlar. Yer kaplamayan normal viewların
aksine, bunlar bir veya daha fazla temel tablo yada viewden yapılan
sorgunun sonucunda oluşan satırları saklarlar. Sorgunun temel
tablolarıyla aynı veya farklı veritabanlarında olabilirler.

OLAP

Oracle, ticari bilgi desteği verebilmek için veritabanı ile çevirimiçi


analitik işlemeyi (OLAP) entegre etmiştir. Bu entegrasyon, Oracle
veritabanının yönetilebilirlik, ölçeklenebilirlik ve güveninirlik gibi temel
özelliklerini korurken, ona çok boyutlu veritabanı gücü sağlamaktadır.

İlişkisel yönetim sistemi ve Oracle OLAP, raporlama ve analitik


uygulamalar için tamamlayıcı bir fonksiyonalite sunmaktadır. Oracle
OLAP, çok boyutlu hesaplamalar, öngörü, modelleme gibi işler için
kullanılabilir. Bu hesaplamalar sayesinde, uygulama geliştiriciler çok
gelişmiş analitik ve planlama uygulamaları geliştirebilirler.

Veri ilişkisel tablolarda yada çokboyutlu nesnelerden hangisi performans


ve kaynak kullanımı açısından daha uygunsa onda depolanabilir. OLAP
makinası, verinin nerede tutulduğunu bakmaksızın Java ve SQL
aracılığıyla veriye ulaşabilir. İlişkisel ve çok boyutlu nesneler arasında
replikasyona gerek yoktur.

45
Oracle OLAP şu parçalardan oluşur:

- Hızlı hesaplamalar için optimize edilmiş hesaplama makinaları


- Çok boyulu veriyi geçici yada kalıcı olarak depolamak için analitik
çalışma alanı
- Çok boyutlu veri üzerinde matematiksel, istatiksel modelleme ve
diğer dönüştürme işlemlerini yapabilmek için OLAP veriyle oynama dili
- Çok boyutlu veriye SQL ile ulaşabilmek için Oracle OLAP’a SQL
arayüzü
- Ticari bilgi için java uygulaması geliştirebilmek için OLAP API’si
- OLAP API’sine çok boyutlu veriyi tanımlamak için OLAP
metaveri havuzu.

Veri Değişimi Yakalanması

Veri Değişimi Yakalanması özelliği ile Oracle değişikliğe uğrayan yada


yeni eklenen veriyi çok verimli bir şekilde yakalar ve uygulamaların
kullanımına sunar. Oracle yakaladığı değişimleri değişim tabloları içine
atar ve bunları uygulamarın kullanımına açar.

Veri ambarı sistemlerinin tüm tabloları her seferinde yeniden işlemek


yerine sadece değişiklikleri işlemesi çok daha verimli olur. Veri
değişimi yakalama özelliği sayesinde bu işi çok bir şekilde halledilebilir.

Yüksek Devamlılık

Kesintisiz çalışacak şekilde konfigüre edilen bilgisayar ortamlarına


yüksek devamlılıktaki sistemler denir. Bu tür sistemlerde hata
durumlarına rağmen bulunur kalabilmesi için genelde fazladan donanım
ve yazılım bulunur. Hata durumuna karşı bulundurulan yedek parçalar
aslıyla aynı tipte olmalıdır.
46
Bir hata anında işlemler hatalı parçadan yedek parçaya geçerler. Bu
işlemler sistem genelindeki kaynakları yeniden dağıtır, yarım kalan yada
kesilen hareketleri kurtarır ve sistemi olabildiğince hızlı bir şekilde
normal haline geri getirirler. Bu geçiş kullanıcılar için ne kadar saydam
olursa sistemin bulunurluluğu o kadar yüksek demektir.

Oracle’ın yüksek devamlılık için çok sayıda ürünü vardır. Bunlardan


bazıları:

- Saydam Uygulama Geçişi (TAF) : TAF sayesinde bağlantı


kesildiğinde uygulama kullanıcısı otomatik olarak yeniden bağlanır. O
sırada aktif olan hareketlerin etkileri geri alınır ama bağlantı kesilmemiş
gibi çalışma devam eder. Hangi uygulamanın hangi veritabanı örneğinde
çalışacağına ve geçiş sıralamasına veritabanı yöneticisi karar verir.

- Çevirimiçi Yeniden Yapılandırma Mimarisi : Oracle,


kullanıcılar tablolara tam olarak ulaşabilirlerken bu tablolar üzerinde
birçok operasyonun yapılmasına olanak tanır. Bu mimari şu olanakları
sağlar :

o Tablonun herhangi bir fiziksel özelliği değiştirilebilir. Örneğin,


tablonun yeri veya organizasyon şekli değiştirilebilir.
o Tablonun birçok mantıksal özelliğide değiştirilebilir. Örneğin,
kolon isimleri, tipleri ve büyüklükleri değiştirilebilir.
o İndeks ile organize edilmiş tablolar (IOT) için ikincil indeksler
yaratılabilir yada yeniden organize edilebilir.
o Aynı anda hem indeks yaratıp hemde analiz işlemi yapılabilir.
o IOT’lerdeki ikincil indekslerinde saklanan mantıksal sıra
numaralarının fiziksel tahmin parçaları düzeltilebilir.

47
- Veri Koruyucu : Oracle Veri Koruyucu, her türlü tehdide karşı
var olan veritabanının gerçek zamanlı kopyası olan ve bekleme
modunda en çok dokuz tane veritabanı sağlayabilir. Eğer ana
veritabanında bir problem olursa bekleme modundadakilerden birini ana
veritabanı haline getirebilirsiniz. Ayrıca sistem üzerinde önceden
planlanmış çalışmalar sırasında kapalı olma zamanını, bekleme
modundaki vertabanlarını çalışma sırasında ana veritabanı haline getirip
çalışmadan sonra geri alarak, minimize edebilirsiniz. Veri koruyucusu,
ana veritabanında redo log dosyalarına kaydedilen değişiklerin log
taşıma servisleri ile bekleme modundaki veritabanlarına taşınması ve
burda log uygulama servisleri ile veritabanlarına uygulanması
prensibiyle çalışır. Log uygulama servislerinin değişiklikleri kurtarma
modunda uyguladığı veritabanlarına fiziksel bekleme modundaki
veritabanı denirken, değişiklerin SQL cümleleriyle uygulandığı
veritabanlarına mantıksal bekleme modundaki veritabanı denir. Fiziksel
bekleme modundaki veritabanları, ana veritabanıyla tamamen aynıdır ve
ya kurtarma modunda yada sadece raporlama işlemleri için açık
konumda olabilir. Mantıksal bekleme modundaki veritabanları, ana
veritabanıyla birebir aynı değildir ve açık durumdadır ama ana
veritabanıyla mantıksal tutarlılığı koruyacak şekilde çalışır. Oracle
bekleme modundaki veri tabanlarının izlenmesi ve yönetilmesi için veri
koruyucu simsarı isimli bir araç sağlamaktadır. Veri koruyucu
konfigurasyonunu yapmak için iki arayüz vardır. Bunlar komut
satırından çalışan DGMGRL ve enterprise manager içine entegre olarak
çalişan Veri Koruyucu Yöneticisidir.

- Log Madencisi : Yöneticilerin SQL kullanarak log dosyalarını


okumalarını, analiz etmelerini sağlayan ilişkisel bir araçtır. Hem
kullanımdaki hemde arşivlenmiş log dosyaları için kullanılabilir.
Enterprise Manager içinde Log Madencisi Görüntüleyicisi adında grafik

48
bir arayüze sahip bir uygulama vardır. Log Madencisini kullanarak
yapılabilecek bazı işlemler şunlardır:

o Veritabanında yapılmış değişiklerin hareket, kullanıcı, tablo,


zaman gibi şeylere göre izlenmesi
o Veritabanında yapılmış olan hatanın yerinin tam olarak tesbit
edilmesi.
o Ayarlama ve kapasite planlaması için ekstra bilgi sağlaması
o Karmaşık uygulamaların çalışmalarının kontrol edilmesi

Gerçek Uygulama Kümeleri (RAC) : RAC yüksek devamlılık


sistemlerinin türevidir. RAC gibi küme ortamları planlı yada plansız
kesinti durumlarında kesintisiz servis verirler. RAC, standard Oracle
özelliklerinin üzerine yüksek seviyelerde devamlılık yapısı inşa eder.
Tek örnekli sistemlerdeki yüksek devamlılık özelliklerinin tamamı
RAC’tada geçerlidir. Bütün standart Oracle özelliklerinin yanında
kümelemenin sağladığı olarak sayesinde n düğümden oluşan bir kümede
n-1 düğüm çökse bile sistem çalışmaya devam eder. Yani kümede tek
bir düğüm kalsa bile kullanıcılar verinin tümüne erişebilirler. RAC
çalıştıran bir veritabanı sunucusu, Oracle veritabanı, RAC yazılımı ve
kullanıcı isteklerini kabul eden Oracle Net dinleyicilerden oluşur. Bu
yazılımlar kümenin her düğümünde çalışır ve bunlar donanım, işletim
sistemi ve küme yöneticisinin sağladığı servisleri kullanırlar. Küme
yöneticisi düğümleri izler ve kümedeki düğümlerin durumları hakkında
raporlar.

- Gerçek Uygulama Kümeleri Koruyucusu : Oracle Gerçek


Uygulama Kümeleri Koruyucusu, RAC’ın entegre bir parçasıdır ve şu
sağladığı fonsiyonlar şunlardır:

49
o Oracle örneğinin durmasına neden olan hatalarda
otomatikleştirilimiş, hızlı kurtarma ve sınırlı kurtarma zamanı
o Belirli hata durumları için otomatik teşhis verisinin toplanması
o Zorlanmış Birincil/İkincil konfigürasyonu. Oracle Net Service
üzerinden bağlanan kullanıcıların ikincil düğümlerden birine
bağlansa bile her zaman birincil düğüme yönlendirilmesi.
o Hata durumunda bağlantının yeniden sağlanması sırasında
kullanıcıların yaşadığı zaman kaybının en aza indirilmesi.

İçerik Yönetimi

Oracle, kişiselleştirilmiş zengin içerik yaratmak, yönetmek ve sunmak


gibi işlerin hepsini yapmak üzere tek bir platform sağlar. Döküman,
mültimedya, sunum, e-posta ve HTML dosyaları gibi değerli şirket
bilgileri için özel sunucular yada özel dosya sistemlerine ihtiyaç yoktur.
Otomatik arama yetenekleri sayesinde nerede ve hangi dilde olursa olsun
değerli içeriğe ulaşılabilir. Oracle’ın içerik yönetim özellikleri şunları
içerir:

- Oracle İnternet Dosya Sistemi (IFS), hem içeriğinin veritabanında


tutulduğu ve yönetildiği bir dosya sistemi hemde içerik yönetme
uygulamaları geliştirmek için bir uygulama geliştirme platformu sağlar.

- Oracle interMedia, resim, ses ve video dosyalarından metaveri


çıkarılmasını ve bu dosyaların veritabanı içinde yönetilmesini sağlar.

- Oracle Text, veritabanında saklanan metinlerin içeriklerinin


indekslenmesi ve bu indekslerin üzerinden içeriğe dayalı gelişmiş
sorgulamalar yapılmasına olanak verir. MS Office, Adobe PDF, HTML
ve XML gibi 150 döküman tipini ve 40’tan fazla dili destekler.

50
- Oracle Ultra Search, Oracle Text’i kullanarak veritabanı, dosya
sistemi ve web sitelerinde tutulan içeriğin sorgulanabilecek şekilde
indekslenmesini sağlar.

- Oracle eLocation, içeriğe bölgesel metaveri eklenmesi ve uzaysal


aramalar gerçekleştirilmesini sağlar.

- Dinamik servisler ve Syndication Server, içeriğin bir araya


getirilmesi ve üyelere dağıtılmasını sağlar.

- Çalışma alanları, veritabanındaki verinin versiyonlandırılmasını


sağlar.

- Oracle XML ayrıştırıcısı gibi XML servisleri, XML içeriğinin


ayrıştırılması ve XML tabanlı içeriğin diğer formatlara dönüştürülmesini
sağlar.

- Oracle Portal, içeriğin intranet ve internete dağıtılmasını sağladığı


gibi içerik sağlayıcılar için de bir yayınlama çatısı sağlar.

- Oracle9i Wireless Edition, veritabanından gelen içeriğin kablosuz


araçlara gönderilmesini sağlar.

Oracle İnternet Dosya Sistemi (IFS)

Kritik ticari bilgilerin çoğu genelde dökümanlarda, hesap çizelgelerinde,


e-postalarda ve web sayfalarında tutulur. Bu veriler genelde
oraganizayondan habersiz olarak birisinin dizüstü bilgisayarında yada
bölümünün dosya sunucularında tutulur. Oracle İnternet Dosya Sistemi,
bütün verileriniz için güvenli ve ölçeklenebilir bir dosya servisi sağlar.

51
- IFS, şirket dosya yönetim işlemlerinize ekstra fonksiyonalite ve
akıl katar. Örneğin, kullanıcılar dökümaların içinde kelime ve ibare
bazında arama yapabilirler.

- Oracle içinde saklanan veri ve dosyalara standart bir tarayıcı,


windows istemcisi veya e-posta sunucusundan özel bir eğitim
gerektirmeden ulaşmanızı sağlar. İnternet Dosya Sistemi HTTP,
WebDAV, SMB, FTP, NFS, IMAP4 ve SMTP gibi en popüler endistüri
standartlarını destekler.

- IFS, içeriğin güvenli bir şekilde saklanması ve yönetimi için


Oracle’ın çok seviyeli güvenlik modelini kullanmaktadır.

- Uygulama geliştirenler IFS’i, yeni döküman tiplerinin


desteklenmesi veya şirketler arası XML tabanlı iş kurallarının
onaylanması ve dönüştürülmesi gibi belirli uygulamarı destekleyecek
şekilde özellleştirebilirler.

52
Veri Blokları, Uzantılar (Extents), ve Segmentler

Bu bölüm Oracle sunucusundaki mantıksal depo yapıları arasındaki


ilişkiyi ve doğallığını tanımlar. Bu bölümün içerdikleri:

• Veri blokları, uzantılar ve segmentlere giriş


• Veri bloklarını gözden geçirme
• Uzantıları gözden geçirme
• Segmentleri gözden geçirme

53
Veri blokları, uzantılar ve segmentlere giriş

Oracle bir veritabanındaki bütün veriler için mantıksal veritabanı alanı


ayırır. Veri blokları, uzantılar ve segmentler veritabanı alanı ayırma
birimleridir. Şekil 2-1 veri yapıları arasındaki ilişkiyi gösterir.

Şekil 2-1 Segmentler, uzantılar ve veri blokları arasındaki


ilişkiler

54
En ince düzeyde, Oracle veriyi veri bloklarında depolar (aynı zamanda
mantıksal bloklar, Oracle blokları veya sayfalar olarak da adlandırılır).
Bir veri bloğu disk üzerindeki fiziksel veritabanı alanında belirli sayıda
bayta karşılık gelir.

Mantıksal veritabanı alanından sonraki düzeye uzantı denir. Uzantı,


belirli türde bilgiyi depolamak için ayrılan belirli sayıdaki bitişik veri
bloklarıdır.

Uzantının üstündeki mantıksal veritabanı deposuna segment adı verilir.


Her biri belirli veri yapıları için ayrılan ve hepsi aynı tablo alanında
depolanan uzantılar kümesine segment denir. Örneğin, her bir
indeksdeki veri kendine ait indeks segmentinde depolanırken, her bir
tablodaki veri kendisine ait veri segmentinde depolanır. Eğer tablo yada
indeks bölümlenirse, her bir bölüm kendine ait segmentde depolanır.

Oracle, segmentler için uzantı birimlerinde alan ayırır. Varolan


segmentteki uzantılar dolduğu zaman, Oracle o segment için başka
uzantı ayırır. Çünkü uzantılar gerektikçe ayrılırlar. Bir segmentteki
uzantılar disk üzerinde bitişik olabilir veya olmayabilir.

Bir segment ve onun bütün uzantıları bir tablo alanı(tablespace) içinde


depolanırlar. Bir tablo alanı içinde, bir segment birden fazla dosyadan
uzantılar içerebilir; yani segment veri dosyalarına yayılabilir.Bununla
birlikte, her bir uzantı sadece bir veri dosyasından veri kapsayabilir.

Ek uzantılar ayırabilmenize rağmen, bloklar ayrı olarak ayrılırlar. Eğer


belirli bir Oracle anına(instance) bir uzantı ayırırsanız, bloklar hemen
boş listeye ayrılırlar. Bununla birlikte, eğer uzantı belirli bir Oracle
anına ayrılmazsa, o zaman sadece “high water mark” hareket ettiğinde

55
bloklar ayrılırlar. Segment içindeki kullanılmış veya kullanılmamış
alanlar arasındaki sınıra “high water mark” denir.

Veri Bloklarını Gözden Geçirme

Oracle bir veritabanının veri dosyaları içindeki depo alanını veri blokları
adı verilen birimlerle yönetir. Veritabanı tarafından kullanılan en küçük
veri birimine veri bloğu denir. Buna karşılık, işletim sistemi seviyesinde
bütün veriler bayt olarak depolanır. Her bir işletim sistemi bir blok
büyüklüğüne sahiptir. Oracle, çoklu Oracle veri blokları içindeki veriden
istekte bulunur, işletim sistemi bloklarından istekte bulunmaz.

Standart blok uzunluğu başlangıç parametresi DB_BLOCK_SIZE


tarafından belirlenir. Ayrıca, standart olmayan beş blok büyüklüğüne
kadar belirleyebilirsiniz. Gereksiz giriş/çıkıştan kaçınmak için, veri blok
uzunluğu, maksimum sınırlar içinde işletim sisteminin blok
uzunluğunun bir kaç katı olmalıdır. Oracle’ın kullandığı veya ayırdığı en
küçük depo birimi Oracle veri bloğudur.

Veri Blok Formatı

Oracle veri blok formatı veri bloğu, tablo veya


kümelenmiş(clustered) veri kapsamasına önem vermeyerek
benzerdir. Şekil 2-2’de veri bloklarının biçimi resimlendirilmiştir.

56
Şekil 2-2 Veri Blok Formatı

Ortak ve Değişken Başlık (Header)

Başlık, blok adresi ve segmentin türü gibi genel blok bilgisini


içerir(örneğin, veri veya indeks).

Tablo Dizini

Veri bloğunun bu bölümü, bu blok içerisinde satırları olan tablolar


hakkında bilgi içerir.

57
Satır Dizini

Veri bloğunun bu bölümü, blok içindeki gerçek satırlar hakkında bilgi


verir (satır veri alanı içindeki her bir satır parçası için adresleri içerir).

Bir veri bloğunun ek yükünün(overhead) satır dizininde alan ayrıldıktan


sonra, satır silindiğinde bu alan geri istenmez. Dolayısıyla, halihazırda
boş olan ama bir kere 50 satıra sahip olmuş bir blok satır dizini için
başlıkta(header) yüz bayt ayırmaya devam eder. Sadece bloğa yeni
satırlar eklendiğinde, Oracle bu alanı tekrar kullanır.

Ek Yük(Overhead)

Veri blok başlığı, tablo dizini ve satır dizini toplu ek yük olarak
ilgilendirilir. Bazı blok ek yükünün büyüklüğü sabittir, toplam blok ek
yükü büyüklüğü degişkendir. Ortalama olarak, sabit ve değişken veri
blok ek yükünün payı toplamda 84’den 107 bayta kadardır.

Satır Verileri

Bu veri bloğunun payı tablo yada indeks veriyi kapsar. Satırlar bloklara
yayılabilirler.

Boş Alan

Yeni satır eklemeler ve satırlara yapılan güncellemeler için boş alan


ayrılmaktadır(örnegin, sondaki boşluk, boşluk olmayan bir değerle
güncellendiğinde). Gerçekten verilen veri bloğu içinde ekleme oluşup
oluşmadığı, bu veri bloğu içindeki mevcut boş alanın fonksiyonu ve alan
yönetimi parametresi PCTFREE’nin değeridir.

58
Veri bloklarında, tablo veya kümelerin(cluster) veri segmenti veya
indeksin indeks segmenti için yer ayrılır, boş alanlarda “hareket
girişlerinide“(transaction entry) tutabilirler. Bir veya birden çok satırlara
erişim her bir INSERT, UPDATE, DELETE, ve SELECT…FOR
deyimleri blok içinde hareket girişi gerektirir. Hareket girişleri için
gerekli olan alan işletim sistemine bağımlıdır. Bir çok işletim sisteminde
hareket girişleri yaklaşık olarak yirmi üç bayt gerekir.

Boş Alan Yönetimi

Boş alanlar otomatik olarak veya el ile(manually) yönetilebilir.

Boş alanlar veritabanı segmentlerinde otomatik olarak yönetilebilirler.


Boş listelere karşılık olarak segmentteki boş kullanılabilir alan
biteşlem(bitmap) kullanılarak takip edilir. Otomatik segment-alan
yönetimi aşağıdaki yararları sunar;

• Kullanım Kolaylığı
• Daha yararlı alanlar, özellikle cok değişgen büyük satırlı nesneler
için
• Eşzamanlı erişimdeki değişimi sağlamak için çalıştırmayı daha iyi
ayarlama
• Performans/alan yararı bakımından daha iyi çok-anlı(multi-
instance) davranış

Yerel yönetimli tablo alanı yarattığınızda, otomatik segment-alan


yönetimini belirlersiniz. Bu belirleme daha sonra bu tablo alanından
yaratılmış bütün segmentlere uygulanır.

59
Veri Bloklarında Kullanılabilirlik ve Boş Alanların Sıkıştırılması

DELETE ve UPDATE deyimleri ile bir veya birden çok veri


bloklarının boş alanı arttırılabilir. Bunlar varolan değerleri daha
küçük değerlerle günceller. Deyimlerin bu türlerinden serbest kalan
alan aşağıdaki koşullarda INSERT deyimleri için kullanıma hazır
hale gelir:

• Eğer INSERT deyimi aynı harekette(transaction) ve alanı boşaltan


deyimden sonra ise, o zaman INSERT deyimi kullanıma hazır hale gelen
alanı kullanabilir.

• Eğer INSERT deyimi alan boşaltan deyimlerden farklı


hareketlerde(transaction) ise(başka bir kullanıcı tarafından çalıştırılıyor
olabilir), INSERT deyimi müsait alanları kullanabilir sadece diğer
hareketler kaydedildikten(commit) sonra ve sadece alan gerekirse.

Serbest kalan alan veri bloklarındaki boşlukların ana alanı ile bitişik
olabilir yada olmayabilir. Oracle veri bloğunun boş alanını sadece -(1)
INSERT veya UPDATE deyimleri yeni satır parçası kapsayacak kadar
yeterli boş alan kapsayan blok kullanmaya kalkıştığında ve (2) boş
alanlar satır parçasının bloğun bitişik bir bölümüne eklenemeyeceği
kadar parçalanmışsa- birleştirir.

Oracle bu sıkıştırmayı sadece böyle durumlarda yapar. Aksi takdirde


veri bloklarının boş alanının sürekli sıkıştırılmasından dolayı veritabanı
sisteminin performansı düşer.

60
Satır Zincirleme(Row Chaining) ve Geçirme(Migrating)

İki durumda, tablonun bir satırındaki veri tek veri bloğuna sığmak için
çok büyük olabilir. Birinci durumda satır ilk eklendiğinde bir veri
bloğuna sığmak için çok büyüktür. Böyle olursa Oracle satır için gerekli
veriyi bu segment için ayrılmış zincirlenmiş veri blokları gibi depolar.
Satır zincirleme çoğunlukla büyük satırlarda meydana gelir. Örneğin
veri türü LONG veya LONG RAW olan satırları kapsayan satırlar.
Böyle durumlarda satır zincirleme kaçınılmazdır.

Bununla beraber ikinci durumda, başlangıçta bir veri bloğuna sığacak


satır güncellenir. Öyle ki, bir uçtan bir uca satır uzunluğu artar ve bloğun
boş alanı önceden tamamen dolar. Oracle bütün satırın yeni bloğa
sığacağını varsayarak bütün satır için veriyi yeni veri bloğuna geçirir
(migrate). Oracle orijinal satırı korur, geçirilmiş satırın bir kısmı
geçirilmiş satırları kapsayan yeni bloğu işaret eder. Geçirilmis satırların
“satır kimlik numarası”(ROWID) değişmez.

Bir satır zincirlendiğinde(chained) veya geçirildiğinde(migrated), bu


satıra ait giriş/çıkış başarımı azalır. Çünkü, Oracle satır için gerekli
bilgiyi çıkarmak için birden çok veri bloğunu iyice incelemek
zorundadır.

PCTFREE, PCTUSED ve Satır Zincirleme

PCTFREE ve PCTUSED, tablo alanlarını el ile yönetmek için kullanılan


iki alan yönetim parametresidir. Bunlar, belirli segmentteki bütün veri
bloklarında bulunan satırlara eklemek ve güncellemek için boş alanın
kullanımını denetleyebilmemizi sağlar. Tablo veya kümeyi (kendi veri
segmentine sahip olan) yarattığınızda veya değiştirdiğinizde bu
parametreleri açıkça belirleyebilirsiniz. İndeksi yaratırken veya
61
değiştirirken depo parametresi olan PCTFREE’yide açıkça
belirleyebilirsiniz(kendi indeks segmentine sahip olan).

Uzantıları(Extents) Gözden Geçirme

Depolanan alanların ayrılması ile belli sayıda bitişik veri bloklarından


meydana gelmiş veritabanı mantıksal birimine uzantı denir. Segment bir
veya birkaç uzantının bir araya gelmesinden meydana gelir. Segment
içinde varolan alan tamamen kullanıldığında, Oracle bu segment için
yeni uzantı ayırır.

Uzantı Ayrıldığında

Tablo yarattığınızda, Oracle bu tablodaki veri segmentine belli sayıda


veri bloklarından başlangıç uzantısı ayırır. Henüz yeni satır
eklenmemesine rağmen bu tablodaki satırlar için, başlangıç uzantılarına
karşılık gelen Oracle veri blokları ayrılır.

Eğer yeni veriyi tutmak için segmentin başlangıç uzantısının veri


blokları dolmuşsa ve daha fazla alan gerektiriyorsa, Oracle otomatik
olarak bu segment için “artan uzantı”(incremental extent) ayırır. Bu
segment içinde önceden ayrılan uzantının büyüklüğünde veya daha
büyük olan sonradan gelen uzantılara artan uzantı denir.

Bakım amacı için, her bir segmentin başlık(header) bloğu bu segment


içindeki uzantıların dizinini kapsar.

NOTE:Bu bölüm bir sunucu işleminin(process), SQL deyimin


ayrıştırdığı ve çalıştırdığı seri operasyonlar için geçerlidir. Uzantılar,
çoklu sunucu işlemleri gerektiren paralel SQL deyimleri içinde biraz
farklı olarak ayrılırlar.
62
Uzantının Sayısını ve Büyüklüğünü Belirleme

Her segmentte tanımlanan depolama parametreleri uzantılar cinsinden


ifade edilir. Depolama parametreleri bütün segment türlerine uygulanır.
Onlar Oracle’ın verilen segment için nasıl boş veritabanı alanı
ayıracağını kontrol eder. Örneğin, tablo veri segmenti için başlangıçta ne
kadar alan ayrılacağına karar verebilirsiniz, veya uzantı sayısını
kısıtlayabilir CREATE TABLE deyiminin STORAGE yantümcesi ile
tablonun depolama parametresini belirleyerek tablo ayırabilirsiniz. Eğer
tablonun depolama parametresini belirlemezseniz, Oracle tablo alanının
varsayılan depolama parametresini kullanır.

Oracle 8i’ye kadar bütün tablo alanları sözlük düzeninde(dictionary


managed) yaratıldı. Sözlük şeklinde tablo alanları alan kullanımını
izlemek için veri sözlüğüne güvenirdi. Oracle 8i’den itibaren kullanılmış
ve boş alanları izlemek için biteşlem(bitmap) kullanan yerel
yönetilmiş(locally managed) tablo alanları yaratabilirdiniz. Yerel
yönetilmiş tablo alanlarının performansı ve yönetiminin çok daha kolay
olması nedeniyle, sistem dışı kalıcı tablolar aksi belirtilmedikçe yerel
yönetilmiş kabul edilir.

Uzantılarını yerel olarak yöneten bir tabloalanı ya sabit uzantı ebatları


veya sistemin otomatik belirlediği değişken uzantı ebatlarına sahip
olabilir. Tablo alanı yarattığınızda ayırma türünü UNIFORM veya
AUTOALLOCATE(system-managed) yantümce belirler.

• System-managed uzantılarda başlangıç uzantının büyüklüğünü


belirleyebilirsiniz ve Oracle ek uzantıların en uygun büyüklüğüne karar
verir. Minimum uzantı büyüklüğü 64 KB’dir. Bu kalıcı tablo alanları
için varsayılandır.

63
• Uniform uzantılarda uzantının büyüklüğünü belirliyebilir yada
varsayılan değer olan 1MB kullanabilirsiniz. Uzantılarını yerel olarak
yöneten geçici tablo alanları sadece bu ayırma türlerini kullanırlar.

Depolama parametreleri NEXT, PCTINCREASE, MINEXTENTS,


MAXEXTENTS, ve DEFAULT STORAGE yerel yönetilen uzantılar
için geçerli değildir.

Uzantılar Nasıl Ayrılırlar

Oracle yerel yönetilmiş yada sözlüksel yönetilmiş uzantılar için farklı


algoritmalar kullanır.

Yerel yönetilmiş tablo alanlarında Oracle yeni uzantıyı ayırmak için boş
alan bakar, ilk önce tablo alanında aday veri dosyasına karar verir,
gerekli komşu boş blokların sayısı için veri dosyasının biteşleminde
araştırma yapar. Eğer veri dosyası yeterli sayıda komşu boş alana sahip
değilse Oracle başka veri dosyasına bakar.

NOTE: Oracle kesinlikle yerel yönetilmiş tablo alanlarının


kullanılmasını önerir.

Uzantılar Serbest Bırakıldığında

Segmentin içinde verisi depolanan şema nesnesi bırakılana (drop) kadar


segmentin uzantısı genelde tablo alanına geri donmez(DROP TABLE
yada DROP CLUSTER deyimlerini kullanarak). Bunun istisnaları
aşağıdaki gibidir :

64
• Bir tablo yada kümenin sahibi yada DELETE ANY hakkı olan bir
kullanıcı TRUNCATE…DROP STORAGE deyimi ile, bir tablo yada
kümeyi kesebilir(truncate).

• Veritabanı yöneticisi aşağıdaki SQL sözdizimini(syntax)


kullanarak kullanılmayan uzantıları serbest bırakabilir:
ALTER TABLE tablo_ismi DEALLOCATE UNUSED;

• Eğer belirlenen en uygun büyüklüğe ( OPTIMAL) sahipse Oracle


periyodik olarak bir veya birden çok geri alınan segmentlerin
uzantılarını serbest bırakır.

Uzantılar serbest bırakıldığında Oracle veri dosyasındaki biteşlemde


değişiklik yapar (yerel yönetilmiş tablo alanları için) yada kullanabilir
alan olarak tekrar kazanılmış uzantıları yansıtmak için veri sözlüğünü
günceller (sözlüksel yönetilmiş tablo alanları için). Bloklardaki serbest
kalan uzantılardaki veri erişilemez olur.

Kümeli Olmayan Tablodaki Uzantılar

Kümeli olmayan tablo varolduğu sürece veya tablo kesilinceye kadar,


kendi veri segmentine ayrılmış her veri bloğu tablo için ayrılmış kalır.
Eğer blokta yeteri kadar oda varsa Oracle bloğa yeni satırlar ekler.
Tablodaki bütün satırlar silindiği halde Oracle tablo alanındaki diğer
nesneleri kullanmak için veri bloklarını düzeltmez.

Kümeli olmayan tabloyu bıraktıktan(drop) sonra bu alan diğer uzantılara


boş alan gerektiğinde geri döner. Oracle tablodaki verinin bütün
uzantılarını ve aynı tablo alanlarındaki diğer şema nesneleri için
uzantıları kullanılabilir duruma getiren tablo alanları için indeks
segmentlerini düzeltir.

65
Sözlüksel yönetilmiş tablo alanlarında, segment kullanılabilir
uzantılardan daha büyük uzantı gerektirdiğinde Oracle birleşik
düzeltilmiş uzantıları daha büyük bir tane formda yapmak için belirler
ve birleştirir. Buna “bütünleşmiş”(coalescing) uzantılar denir.
Bütünleşmiş uzantılar yerel yönetilmiş tablo alanları için gerekli
değildir. Çünkü bir veya birkaç uzantı düzeltilmiş olup olmamasını
önemsemeden bütün bitişik boş alan yeni uzantı ayırmak için
kullanılabilir.

Kümelenmiş Tablolarda Uzantılar

Kümelenmiş tablolar küme için yaratılmış veri segmentindeki bilgiyi


depolar. Bu yüzden kümeden bir tablo çıkarırsanız(drop) kümelerdeki
diğer tablolar için veri segmenti değişmez ve hiçbir uzantı serbest
kalmaz. Ayrıca boş uzantılar için kümeleri kesebilirsiniz.

Materialized Views’deki uzantılar ve Günlüğü(Logs)

Oracle tablolarda ve kümelerde olduğu gibi materialized view’in


uzantılarını ve materialized view günlüğünü serbest bırakır.

İndeksdeki uzantılar

İndeks segmenti için ayrılmış bütün uzantılar indeksler varolduğu sürece


ayrı kalırlar. İndeksi yada ilgili tablo veya kümeyi çıkardığınızda Oracle
tablo alanlarındaki diğer kullanımlar için olan uzantıları düzeltir.

66
Geçici Segmentlerdeki Uzantılar

Geçici segmentleri gerektiren deyimleri çalıştırmayı bitirdiğinde Oracle


otomatik olarak geçici segmentleri çıkarır ve bu segment için ayrılmış
uzantıları ilgili tablo alanına geri döndürür. Basit bir sıralama, komutu
gönderen kullanıcının geçici tablo alanındaki kendine ait geçici
segmentini ayırır ve sonra uzantıları tablo alanına geri gönderir. Bununla
beraber çoklu sıralamalarda, sıralamalar için dizayn edilmiş geçici tablo
alanlarındaki sıralı segmentleri kullanabilir. Bu sıralı segmentler sadece
bir kez Oracle anı(instance) için ayrılırlar ve sıralamadan sonra geri
döndürülmezler fakat diğer çoklu sıralamalar için kullanılabilir durumda
beklerler.

Geçici tablodaki geçici segment tek hareketli veya oturumlu çoklu


deyimler için bilgi içerirler. Oracle hareketin veya oturumun sonundaki
geçici segmenti bırakır, bu segment için ayrılmış uzantıları ilgili tablo
alanına geri gönderir.

Geri Alınmış Segmentteki Uzantılar

Oracle veritabanındaki geri alınmış segmentleri en uygun


büyüklüğünden daha da büyük olduğunu görmek için belli zaman
aralıklarıyla kontrol eder. Eğer geri alınmış segment en uygun
büyüklüğünden daha büyükse (yani çok sayıda uzantıya sahipse) Oracle
geri alınmış segmentlerden bir veya birkaç tane uzantıyı otomatik olarak
serbest bırakır.

67
Segmentleri Gözden Geçirme

Segment tablo alanındaki belirli mantıksal depolanmış yapılar için bütün


verileri kapsayan uzantılar kümesidir. Örneğin Oracle her bir tablo için
tablonun veri segmentini biçimlendirmek için bir veya birkaç tane uzantı
ayırır ve her indeks için, kendi indeks segmentini biçimlendirmek üzere
bir veya birkaç uzantı ayırır.

Oracle veritabanı aşağıdaki bölümlerde tarif edilen dört çeşit segment


kullanır;

• Veri Segmentlerine Giriş


• İndeks Segmentlerine Giriş
• Geçici Segmentlere Giriş

Veri Segmentlerine Giriş

Oracle veritabanındaki tek veri segmenti aşağıdakilerin bir tanesi için


bütün verileri tutar:

• Bölümlenmemiş yada kümelenmemiş tablo


• Bölümlenmiş tablonun bölümü
• Tabloların Kümesi

CREATE deyimiyle tablo yada kümeyi yarattığınızda Oracle bu veri


segmentini yaratır.

68
Tablo yada küme için olan depolama parametreleri veri segmenti
uzantılarının nasıl ayrılacağına karar verir. Depolama parametrelerini
uygun CREATE yada ALTER deyimleri ile direkt olarak
belirleyebilirsiniz. Bu depolama parametreleri veri erişiminin
verimliliğini ve nesne ile ilgili veri segmenti için depolamayı etkiler.

NOTE: Oracle tablolarda ve kümelerde olduğu gibi materialized view’in


uzantılarını ve materialized view günlüğünü yaratır.

İndeks Segmentlerine Giriş

Oracle veritabanındaki her bölümlenmemiş indeks bütün verilerini


tutmak için tek indeks segmentine sahiptir. Bölümlenmiş indeks için
her bölüm verisini tutmak için tek indeks segmentine sahiptir.

CREATE INDEX deyimini yürüttüğünüzde Oracle indeks veya


indeks bölümü için indeks segmenti yaratır. Bu deyimle depolama
parametrelerini indeks segmentinin uzantısı ve indeks segmenti için
yaratılmış tablo alanları için belirleyebilirsiniz.(Tablonun
segmentleri ve onunla ilgili indeks aynı tablo alanını
kullanmamalıdır.) Depolama parametrelerinin direkt olarak
belirlenmesi veri erişiminin verimliliğini ve depolamayı etkiler.

Geçici Segmentlere Giriş

Sorgu işlenirken Oracle SQL deyimini ayrıştırma ve çalıştırma ara


aşaması için sık sık geçici çalışma alanı ister. Oracle otomatik olarak
geçici segment adı verilen bu disk alanını ayırır. Oracle sıralamak için
çalışma alanı olarak geçici segment ister. Eğer sıralama işlemi bellekte
yapılırsa veya Oracle indeksleri kullanarak operasyon yapmak için başka
bir yol bulursa Oracle segment yaratmaz.
69
Geçici Segmentleri Gerektiren İşlemler

Aşağıdaki deyimler bazen geçici segmentlerin kullanımını gerektirirler:

• CREATE INDEX

• SELECT … ORDER BY

• SELECT DISTINCT …

• SELECT … GROUP BY

• SELECT … UNION

• SELECT … INTERSECT

• SELECT … MINUS

Bazı indekslenmemiş birleşmeler(joins) ve ilintili(correlated) alt


sorgular geçici segmentin kullanımını gerektirebilir. Örneğin sorgu
DISTINCT yantümcesi, GROUP BY, ve bir ORDER BY içeriyorsa
Oracle iki geçici segment kadar ihtiyaç duyabilir. Uygulamalar sık sık
bir önceki listedeki deyimleri yürütüyorsa veritabanı yöneticisi
SORT_AREA_SIZE parametresinin başlangıç değerini ayarlıyarak
performansı yükseltebilir.

Geçici Tablolardaki ve İndekslerindeki Segmentler

Oracle geçici tablolar ve geçici tablolarda yaratılmış indeksler için


ayrıca geçici segmentlerde ayırır. Geçici tablolar sadece hareket ve
oturum süresince var olan veriyi tutarlar.

70
Geçici Segmentler Nasıl Ayrılırlar

Oracle sorgular ve geçici tablolar için geçici segmentleri farklı olarak


ayırır.

Sorgular İçin Geçici Segmentlerin Ayrımı

Oracle geçici segmentleri kullanıcının geçici tablo alanında kullanıcı


oturumu sırasında deyim yürütülürken gerektikçe ayırır. TEMPORARY
TABLESPACE yantümcesini kullanarak CREATE USER veya ALTER
USER deyimi ile bu tablo alanını belirleyin.

NOTE: Kullanıcının geçici tablo alanı olarak kalıcı tablo alanı


veremezsiniz.

Kullanıcı için geçici tablo alanı tanımlanmamışsa varsayılan tablo alanı


sistem(SYSTEM) tablo alanıdır. Tablo alanını kapsayan varsayılan depo
özelliğini bunların geçici segmentin uzantılarına karar verir. Deyim
bittiğinde Oracle geçici segmentleri çıkarır.

Geçici segmentleri ayırma ve serbest bırakma sık sık olduğundan dolayı


geçici segmentler için belirli tablo alanları yaratın. Böyle yapmakla disk
aygıtlarına karşılık giriş/çıkışı dağıtabilirsiniz ve sistem ve geçici
segmentleri tutan diğer tablo alanlarının parçalanmasını(fragmentation)
önleyebilirsiniz.

NOTE: Sistem tablo alanı yerel olarak yönetilmişse veritabanı


yaratılırken varsayılan geçici tablo alanı tanımlayabilirsiniz. Yerel
yönetilmiş sistem tablo alanı varsayılan geçici depo için kullanılamaz.

71
Girişleri değişen geçici segmentteki alan yönetim işlemleri hariç sıralı
işlemler için kullanılan geçici segmentler “yinele günlüğünde”(redo log)
depolanmazlar.

Geçici Tablolar ve İndeksler için Geçici Segmentlerin Ayrılması

Tabloya yapılan ilk INSERT yürütüldüğünde Oracle geçici tablolar için


segmentler ayırır.(Bu CREATE TABLE AS SELECT tarafından
yürütülen dahili ekleme işlemi olabilir.) Geçici tabloya yapılan ilk
INSERT deyimi tablo ve indeksleri için segmentler ayırır, indeksler için
kök sayfası yaratır, herhangi bir LOB segmentleri ayırır.

Geçici tablo için segmentler geçici tablo yaratan kullanıcının geçici tablo
alanına ayrılır.

Oracle hareketin sonunda hareketi belirli geçici tablo için segmentleri


çıkarır ve oturumun sonunda oturumu belirli geçici tablo için
segmentleri çıkarır. Diğer hareketler veya oturumlar bu geçici tablonun
kullanımını paylaşıyorsa verilerini kapsayan segmentler tabloda kalmaya
devam eder.

Otomatik “Geri Alma”(Undo) Yönetimi

Otomatik geri alma yönetimi “geri alma tablo alanı” tabanlıdır. Farklı
büyüklüklerde birçok geri alma(rollback) segmentleri ayırma yerine,
birkaç geri alma(undo) tablo alanları oluşturmak için alan ayırabilirsiniz.

Otomatik geri alma yönetimi sizin geri alma süresini net olarak
belirlemenizi sağlar. Sistem parametresinin(UNDO_RETENTION)
kullanımı süresince kaydedilmiş geri alma bilgisinin miktarını
veritabanında tutmak için belirleyebilirsiniz. Parametreyi saat zamanı
72
olarak belirlersiniz(örneğin 30 saniye). Süresini belirleme ile uzun
sorguları başarılı bir şekilde çalıştırabilmek için sisteminizi
yapılandırabilirsiniz.

Geri alma alanının kullanımını daha başarılı yararlanabilmek için


V$UNDOSTAT kullanarak veritabanı sisteminizi görüntüler ve
yapılandırırsınız. V$UNDOSTAT çeşitli geri almayı ve hareketin
istatistiklerini gösterir. Örneğin Oracle anındaki(instance) geri alma
alanının tüketilmiş miktarını.

NOTE: İlk Oracle yayınlarında, geri alma alan yönetimi geri alma
segmentleri kullanılarak yapıldı. Bu yöntem şimdi el ile geri alma
yönetimi modu olarak adlandırılır.

Geri Alma(Undo) Modu

Geri alma modu el ile geri alma yönetiminden otomatik geri alma
yönetimine geçiş yolunu daha çok esnek olmasını sağlar. Veritabanı
sistemi ya el ile geri alma yönetimi modu yada otomatik geri alma
yönetimi moduyla çalışabilir. El ile geri alma yönetimi modunda geri
alma alanı geri alma segmentleri boyunca yönetilirler. El ile geri alma
yönetimi modu her uygunluk seviyesi altında desteklenir. Oracle9i’ye
bazı yeni özelliklerini avantaj olarak kullanmak üzere ihtiyacınız varsa
ancak otomatik geri alma yönetimi moduna henüz hazır değilseniz, bu
modu kullanabilirsiniz.

Otomatik geri alma yönetimi modunda geri alma alanı geri alma tablo
alanları ile yönetilirler.
Otomatik geri alma yönetimi modunu kullanmak için veritabanı
yöneticisi sadece her bir Oracle anı için geri alma tablo alanı yaratması
ve UNDO_MANAGEMENT başlangıç parametresine AUTO değerini

73
vermesi gerekir. Otomatik geri alma yönetimi modu uygunluk seviyesi
oracle9i ve üstü için desteklenir. El ile geri alma yönetimi modu
desteklenmesine rağmen Oracle kesinlikle sizi otomatik geri alma
yönetimi modunu çalıştırmanızı tavsiye eder.

Geri Alma Kotası

Otomatik geri alma yönetimi modunda sistem sadece geri alma


segmentlerindeki hareketlerin görevini ve geri alma segmenti için alan
ayırmayı kontrol eder. Zararlı davranışlı hareket potansiyel olarak çok
fazla geri alma alanı tüketir böylece bütün sistem felç olur. El ile geri
alma yönetimi modunda geri alma segmentlerinin büyüklüğünü küçük
MAXEXTENTS değeri ile sınırlayarak böyle olasılıkları kontrol
edebilirsiniz. Bununla beraber uzun çalışan hareketleri daha büyük geri
alma segmentlerine SET TRANSACTION USE ROLLBACK
SEGMENT deyimini kullanarak belirgin bir şekilde atamalısınız. Bu
hantal bir yaklaşımdır.

Büyük hareketleri kontrol etmek için kaynak yöneticisi(resource


manager) direktifi olan UNDO_POOL daha belirgin yoldur. Bu
veritabanı yöneticilerine her guruba maksimum geri alma alan sınırı
verilen tüketici gruplardaki kullanıcıları ile gruplara ayırmasına izin
verir. Toplam geri alma alanı sınırı aşan gurup tarafından tüketildiğinde
kullanıcıları son bulan diğer üye hareketler tarafından geri alma alanı
serbest bırakılana kadar daha fazla güncelleme yapamazlar.
Kullanıcılara geri alma tablo alanının geri alma alanına sahip oluncaya
kadar tüketmesine izin verildiğinde varsayılan UNDO_POOL’un değeri
UNLIMITED’dır. Veritabanı yöneticileri UNDO_POOL direktifini
kullanarak belirli kullanıcıyı sınırlayabilir.

74
Geri Alma Zamanı Kontrolü

Uzun süreli çalışan sorgular bazen başarısız olurlar çünkü geri alma
bilgisi tutarlı okuma işlemleri gerektirdiği için uzun süre kullanılabilir
değillerdir. Bu kaydedilmiş geri alma bloklarının aktif hareketler üzerine
yazıldığında meydana gelir.

Otomatik geri alma yönetimi geri alma alanı tekrar kullanıldığında


belirgin şekilde kontrol etmek için bir yol sağlar, yani ne kadar geri alma
bilgisinin tutulacağını. Veritabanı yöneticisi UNDO_RETENTION
parametresini kullanarak peryod süresini belirleyebilir. Örneğin
UNDO_RETENTION’a otuz dakika verilirse sistemdeki bütün
kaydedilmiş geri alma bilgisi en azından otuz dakikada elde edilir. Bu
bütün sorguların otuz dakika yada daha az çalışacağını garanti eder,
normal şartlar altında OER hatası olan “snapshot too old” ile
karşılaşmamanız gerekir.

UNDO_RETENTION ya başlangıçta belirleyebilirsiniz yada ALTER


SYSTEM deyimiyle dinamik olarak değiştirebilirsiniz. Aşağıdaki
örnekte tutma süresi yirmi dakikaya belirlenmiştir;

ALTER SYSTEM SET UNDO_RETENTION = 1200;

UNDO_RETENTION parametresini belirlemezseniz Oracle sorguları


genelde çok büyük olmayan birçok OLTP sistemlerine yetecek kadar
küçük varsayılan değer kullanır.
Genelde tutma süresini geri alma tablo alanını destekleyebilecek yakın
bir değerle belirlenmesi iyi bir fikir değildir, çünkü geri alma
segmentleri arasındaki alanın gereğinden fazla hareketi sonuç olabilir.
Geri alma alanı olarak tamponun 20%’si tavsiye edilir.

75
Harici Görünüş (External Views)

Hareketleri ve geri alma bilgisini V$TRANSACTION ve


V$ROLLSTAT ile gözleyin. Otomatik geri alma yönetimi için
V$ROLLSTAT bilgisi, otomatik geri alma yönetimi geri alma
segmentlerinin davranışlarını yansıtır.

V$UNDOSTAT görünüşü sistemin ne kadar iyi çalıştığını göstermek


için istatistiki bilginin histogramını görüntüler. Geri alma tüketim oranı,
eşzamanlı hareketi ve Oracle anında çalışan sorguların uzunluğu gibi
istatistikleri görebilirsiniz. Bu görüntülemeyi kullanarak hali hazırdaki
aşırı çalışma için ne kadar geri alma alanı gerektiğini daha iyi tahmin
edebilirsiniz. Bu görüntü otomatik geri alma yönetimi ile el ile geri alma
yönetimi modlarında kullanılabilir.

76
Tablo Alanları, Veri Dosyaları, ve Kontrol Dosyaları

Bu bölüm tablo alanlarının, herhangi bir Oracle veritabanının başlıca


mantıksal veritabanı yapıları ve her bir tablo alanına karşılık gelen
fiziksel veri dosyalarını analatır. Bu bölümün içerdikleri:

• Tablo alanlarına, veri dosyalarına, ve kontrol dosyalarına giriş


• Tablo alanlarını Gözden Geçirme
• Veri Dosyalarını Gözden Geçirme
• Kontrol Dosyalarını Gözden Geçirme

77
Tablo Alanlarına, Veri Dosyalarına, ve Kontrol Dosyalarına Giriş

Oracle tablo alanlarındaki veriyi mantıksal olarak ve tablo alanlarına


karşılık gelen ilgili veri dosyalarındaki veriyide fiziksel olarak depolar.
Şekil 3-1’de bu ilişki resimlendirilmiştir.

Figure 3-1 Veri Dosyaları ve Tablo Alanları

Veritabanları, tablo alanları, ve veri dosyaları birbiriyle çok yakın


ilgilidirler fakat önemli farklılıklara sahiptirler:

78
• Oracle veritabanı veritabanındaki, bütün veriyi toplu olarak
depolayan tablo alanları adı verilen bir veya birkaç mantıksal depolama
birimlerinden meydana gelmiştir.

• Oracle veritabanındaki her bir tablo alanı Oracle’ın çalıştığı işletim


sistemine uyumlu fiziksel yapılar olan veri dosyaları adı verilen bir veya
birkaç dosyadan meydana gelmiştir.

• Veritabanındaki veri, her bir tablo alanından meydana gelen veri


dosyalarında toplu olarak depolanır. Örneğin, en basit Oracle veritabanı
bir tablo alanı ve bir veri dosyasına sahiptir. Başka bir veritabanı her biri
iki veri dosyası içeren üç tablo alanına sahip olabilir(toplamda altı adet
veri dosyası olur).

Oracle Yönetimindeki Dosyalar

Oracle’ın yönettiği dosyalar, Oracle veritabanını içine alan işletim


sistemi dosyalarını direkt olarak yönetmeniz gereğini ortadan
kaldırır. Dosya isimleri yerine veritabanı nesneleri yönünden işlemi
belirlersiniz. Oracle aşağıdaki veritabanı yapıları için gerektiğinde,
dosya yaratmak ve silmek üzere dahili olarak standart dosya sistem
arayüzlerini kullanır :

• Tablo Alanları
• Erişilebilir yineleme günlük dosyaları(online redo log files)
• Kontrol Dosyaları

Başlangıç parametreleri sayesinde belirli türde dosyalarda kullanabilmek


için dosya sistem dizinini belirlersiniz. Oracle bu sayede uzun süre
gerekli olmadıkça yaratılan ve silinen tek bir dosya, oracle
yönetimindeki dosya, olduğundan emin olur.
79
Veritabanı İçin Daha Çok Alan Ayırma

Tablo alanlarının büyüklüğü tablo alanlarından meydana gelen veri


dosyalarının büyüklüğüdür. Veritabanının büyüklüğü veritabanını
oluşturmak üzere bir araya gelen tablo alanlarının büyüklüğüdür.

Veritabanını üç şekilde büyütebilirsiniz:


• Tablo alanına veri dosyası ekleyerek
• Yeni tablo alanı ekleyerek
• Veri dosyalarının büyüklüğünü arttırarak

Varolan tablo alanına başka bir veri dosyası eklendiğinizde tablo alanına
karşılık ayrılmış bir miktar disk alanı arttırırsınız. Şekil 3-2’de bu türde
alan arttırma resimlendirilir.

Figure 3-2 Tablo Alanına Veri Dosyası Ekleyerek Veritabanını Büyütme

80
Alternatif olarak veritabanının büyüklüğünü büyütmek için yeni tablo
alanı(en azından bir ek veri dosyası içeren) yaratabilirsiniz. Şekil 3-3’de
bu resimlendirilir.

Şekil 3-3 Yeni Tablo Alanı Ekleyerek Veritabanını Büyütme

Veritabanını büyütmek için üçüncü seçenek veri dosyalarının


büyüklüğünü değiştirmek veya varolan tablo alanlarındaki veri
dosyalarına daha çok alan gerektikçe dinamik olarak büyümelerine izin
vermek. Bunu varolan dosyaları değiştirerek veya dinamik uzama
özelliği ile dosyaları ekleyerek başarırsınız.

81
Şekil 3-4 Dinamik Büyüklüklü Veri Dosyaları İle Veritabanını
Büyütme

82
Tablo Alanlarını Gözden Geçirme

Veritabanı tablo alanları adı verilen bir veya birkaç mantıksal depolama
birimlerine bölünür. Tablo alanları daha sonra uzantılara bölünen
segmentler adı verilen mantıksal depolama birimlerine bölünür. Bitişik
bloklar topluluğuna uzantılar denir.

Bu bölüm tablo alanları hakkında olan aşağıdaki konuları içerir:

• Sistem Tablo Alanları


• Geri Alma(Undo) Tablo Alanları
• Varsayılan geçici Tablo Alanları
• Çoklu Tablo Alanlarının Kullanımı
• Tablo Alanlarındaki Alanın Yönetimi
• Çoklu Blok Büyüklükleri
• Erişilebilir(Online) ve Erişilemez(Offline) Tablo Alanları
• Sadece-okunabilir Tablo Alanları
• Sıralı İşlemler İçin Geçici Tablo Alanları
• Veriyapıları Arasında Tablo Alanlarının Taşınması

Sistem Tablo Alanları

Her Oracle veritabanı sistem adı verilen tablo alanını içerir. Veritabanı
yaratıldığında Oracle otomatik olarak yaratır. Veritabanı açıldığında
sistem tablo alanı her zaman erişilebilir durumdadır.

Yerel yönetilmiş tablo alanlarının yararlarını avantaj olarak


kullanabilmek için yerel yönetilmiş sistem tablo alanı yaratabilirsiniz

83
yada varolan sözlüksel yönetilmiş sistem tablo alanını yerel yönetilmiş
biçime geçirebilirsiniz.

Yerel yönetilmiş sistem tablo alanlı veritabanında sözlüksel tablo


alanları yaratılamazlar. Sözlüksel yönetilmiş tablo alanını taşınabilir
özellik ekleyerek kullanmak mümkündür fakat yazılabilir olamazlar.

Note: Tablo alanı bir kere yerel yönetilmiş olduktan sonra sözlüksel
yönetilmiş olarak geri döndürülemez.

Veri Sözlüğü

Sistem tablo alanı bütün veritabanı için her zaman veri sözlüğü
tablolarını içerir. Veri sözlüğü tabloları bir nolu veri dosyasında (datafile
1) depolanır.

PL/SQL Program Units Description

Bütün veri depolanan PL/SQL program birimleri adına sistem tablo


alanında dururlar. Veritabanı bunlardan bir çok program birimleri
içerirse veritabanı yöneticisi birimleri sistem tablo alanında gerektiği
kadar alan sağlamak zorundadır.

Geri Alma(Undo) Tablo Alanları

Geri alma tablo alanları yalnızca geri alma bilgisini depolamak için
kullanılan özel tablo alanlarıdır. Geri alma tablo alanlarında herhangi bir
diğer türde(örneğin, tablo yada indeksler) segment yaratamazsınız. Her
bir varitabanı sıfır veya birçok geri alma tablo alanları içerir. Otomatik
geri alma yönetim modunda her bir Oracle anı sadece bir geri alma tablo

84
alanına tahsis edilir. Geri alma verisi otomatik olarak Oracle tarafından
yaratılan ve bakımı yapılan geri alma segmentlerini kullanan geri alma
tablo alanında yönetilir.

İlk DML işlemi bir hareket içerisinde çalıştığında hareket, hali hazırdaki
geri alma tablo alanında geri alma segmentine atanır (ve hareket
tablosunada atanmış olur). Nadir durumlarda Oracle anı tasarlanmış geri
alma tablo alanına sahip değilse hareket sistem geri alma segmentine
bağlanır.

Dikkat: İlk geri alma tablo alanını yaratmadan ve erişilebilir yapmadan


herhangi bir kullanıcı hareketi çalıştırma.

Her bir geri alma tablo alanı geri alma dosyaları kümesinden meydana
gelir ve yerel yönetilmişlerdir. Diğer türlerdeki tablo alanlarına benzer
şekilde geri alma blokları uzantılar içinde gruplanır ve her bir uzantının
durumu biteşlemde temsil edilir. Zamanın herhangi bir anında uzantı ya
hareket tablosuna ayrılır(ve tarafından kullanılır) yada boştur.

Geri Alma Tablo Alanlarının Yaratılması

Veritabanı yönetici CREATE UNDO TABLESPACE deyimini


kullanarak geri alma tablo alanlarını teker teker yaratır. Ayrıca
veritabanı yaratıldığında CREATE DATABASE deyimini kullanarakda
yaratılabilir. Dosyalar kümesi her bir yeni yaratılmış geri alma tablo
alanına atanır. Sıradan tablo alanlarına benzer şekilde geri alma
alanlarının öznitelikleri (attributes) ALTER TABLESPACE deyimi ile
değiştirilebilir ve DROP TABLESPACE deyimi ile de çıkartılabilir.

85
Note: Geri alma tablo alanı herhangi bir Oracle anı tarafından
kullanılıyorsa veya hareketleri kurtarmak için gerekli herhangi bir geri
alma bilgisi içeriyorsa çıkartılamaz.

Geri Alma Tablo Alanlarının Atanması

Geri alma tablo alanını Oracle anına iki yoldan biriyle atarsınız:

• Oracle anı başladığında. Başlangıç dosyasında geri alma tablo


alanını belirleyebilirsiniz veya sistemin sürekli geri alma tablo alanı
seçmesini sağlarsınız.
• Oracle anı çalışırken. ALTER SYSTEM SET
UNDO_TABLESPACE deyimini kullanarak aktif geri alma tablo
alanına bir başka geri alma tablo alanı ile değiştirilir. Bu yöntem nadiren
kullanılır.

Geri alma tablo alanına, ALTER TABLESPACE deyimi ile veri dosyası
ilave ederek, daha fazla alan ekleyebilirsiniz.

Birden çok geri alma tablo alanına sahip olabilirsiniz ve bunları kendi
içlerinde değiştirebilirsiniz. Geri alma tablo alanlarına kullanıcı kotaları
oluşturmak için veritabanı kaynak yöneticisini kullanın. Geri alma
bilgisi için tutma süresini belirleyebilirsiniz.

Varsayılan Geçici Tablo Alanı

Sistem tablo alanı yerel yönetilmiş olduğundan veritabanı yaratılırken


varsayılan geçici tablo alanı tanımlamalısınız. Varsayılan geçici
depolama için yerel yönetilmiş sistem tablo alanı kullanamazsınız.

86
Sistem sözlüksel yönetilmişse ve veritabanı yaratılırken varsayılan
geçici tablo alanı tanımlanmamışsa sistem hala varsayılan geçici
depolama için kullanılır. Bununla beraber ALERT.LOG dosyasında
yazan şu uyarıyı alırsınız: varsayılan geçici tablo alanı tavsiye edilir ve
gelecekte Oracle sürümleri için gerekli olacaktır.

Varsayılan Geçici Tablo Alanının Belirlenmesi

Veritabanı yaratıldığında DEFAULT TEMPORARY TABLESPACE


uzantısını kullanarak CREATE DATABASE deyiminde varsayılan
geçici tablo alanını belirleyin.

Varsayılan geçici tablo alanını çıkardığınızda sistem tablo alanı


varsayılan geçici tablo alanı olarak kullanılır.

Note: Varsayılan geçici tablo alanını kalıcı ve erişilmez yapamazsınız.

Çoklu Tablo Alanları Kullanımı

Çok küçük bir veritabanı sadece sistem tablo alanına ihtiyaç duyabilir,
bununla beraber Oracle, veri sözlüksel bilgiden ayrılmış kullanıcı
verisini depolamak için en azından bir ek tablo alanı yaratmanızı tavsiye
eder. Bu size çeşitli veritabanı yönetimi işlemlerinde çok esneklik
sağlayacak ve aynı veri dosyaları için sözlüksel nesneleri ve şema
nesneleri arasındaki uğraşmalarınızı azaltacaktır.

Aşağıdaki görevleri yapabilmek için çoklu tablo alanları


kullanabilirsiniz:

• Veritabanındaki veri için disk alanı ayırma kontrolü


• Veritabanı kullanıcıları için belirli alan kotası atama
87
• Tek tek tablo alanlarının erişilebilir veya erişilemez olduğuna
bakarak verinin sürekliliğini kontrol etme
• Kısmi veritabanı yedeklemesini veya kurtarma işlemlerinin
gerçekleştirilmesini
• Performansı yükseltmek için karşılıklı aygıtlara veri depolamanın
ayrılması

Veritabanı yöneticisi aşağıdaki işleri yapabilmek için tablo alanlarını


kullanabilir:

• Yeni tablo alanı yaratılması


• Tablo alanlarına veri dosyaları eklenmesi
• Tablo alanında yaratılmış segmentler için varsayılan segment
depolama ayarlarının belirlenmesi veya değiştirilmesi
• Tablo alanının sadece-okuma veya okuma/yazma durumuna
alınması
• Tablo alanının geçici veya kalıcı yapılması
• Tablo alanlarının çıkarılması

Tablo Alanlarındaki Alanın Yönetimi

Tablo alanları uzantılarda alan ayırır. Tablo alanları boş ve kullanılan


alanı takip etmek için iki farklı yöntem kullanır:

• Yerel yönetilmiş tablo alanları: Tablo alanı tarafından uzantı


yönetimi
• Sözlüksel yönetilmiş tablo alanları: Veri sözlüğü tarafından uzantı
yönetimi

88
Tablo alanı yarattığınızda bu alan yönetim yöntemlerinden birini
seçersiniz. Seçtiğiniz yöntemi ileriki zamanlarda değiştiremezsiniz.

Note: Tablo alanı yarattığınızda bu alan yönetim yöntemlerinden


birini belirlemezseniz varsayılan olarak yerel yönetilmiş kullanılır.

Yerel Yönetilmiş Tablo Alanları

Kendine ait uzantıların yönetimini yapan tablo alanı veri dosyasındaki


boş veya kullanılmış blokları takip etmek için her bir veri dosyasındaki
biteşlemin bakımını yapar. Biteşlemdeki her bit bloğa yada bloklar
grubuna karşılık gelir. Uzantı ayrıldığında veya yeniden kullanım için
boşaltıldığında Oracle blokların yeni durumunu göstermek için biteşlem
değerlerini değiştirir. Bu değişimler geri alma bilgisi üretmez çünkü veri
sözlüğündeki tablolar güncellenmez(tablo alanı kota bilgisi gibi özel
durumlar hariç)

Yerel yönetilmiş tablo alanları sözlüksel yönetilmiş tablo alanlarına göre


aşağıdaki avantajlara sahiptir:

• Uzantıların yerel yönetimi komşu boş alanı otomatik olarak takip


eder, boş uzantıları birleştirme gereksinimini yok etmiş olur.

• Uzantıların yerel yönetimi alan yönetim işlemlerinin


tekrarlanmasına meydan vermez. Uzantıdaki alanın tüketilmesi veya
serbest bırakılmasında, veri sözlüğü tablosu veya geri alma segmentinde
alanın tüketilmesi veya serbest bırakılması gibi başka işlemden
kaynaklandığında, bu gibi tekrarlı işlemler sözlüksel yönetilmiş tablo
alanlarında meydana gelebilir.

89
Yerel yönetilmiş uzantıların büyüklüğüne sistem tarafından otomatik
olarak karar verilebilir. Yerel yönetilmiş tablo alanında bütün uzantılar
aynı büyüklüğe sahip olabilir ve nesne depolama seçeneklerinde yer
alabilir.

CREATE TABLESPACE veya CREATE TEMPORARY


TABLESPACE deyiminin LOCAL yantümcesi yerel yönetilmiş kalıcı
veya geçici tablo alanlarının karşılıklı olarak yaratılmasını belirler.

Yerel Yönetilmiş Tablo Alanlarında Segment Alan Yönetimi

CREATE TABLESPACE deyimini kullanarak yerel yönetilmiş tablo


alanı yarattığınızda SEGMENT SPACE MANAGEMENT
yantümcesi segmentte yönetilmiş ne kadar boş veya kullanılmış alan
olduğunu belirlemenizi sağlar. Seçenekleriniz:

• AUTO

Bu anahtar kelime Oracle’a segmentlerdeki boş alanı yönetmek için


biteşlemler kullanmak istediğinizi söyler. Bu durumda biteşlem, satırlar
eklemek için kullanılabilir bloktaki bir miktar alana bağlı kalarak
segmentteki her bir veri bloğunun durumunu tarif eden haritadır. Daha
fazla veya az alan veri bloğunda sürekli duruma gelir. Yeni durumu
biteşlemde yansır. Biteşlem Oracle’ın boş alanı otomatik olarak daha iyi
yönetebilmesini sağlar. Böylece bu alan yönetim biçimine otomatik
segment alan yönetimi adı verilir.

90
• MANUAL

Bu anahtar kelime Oracle’a segmentlerdeki boş alanı yönetmek için boş


listeler kullanmak istediğinizi söyler. Boş listeler satırlar eklemek için
sürekli alana sahip olan blok listeleridir. Varsayılan olarak MANUAL
kullanılır.

Sözlüksel Yönetilmiş Tablo Alanları

Veritabanınızı Oracle’ın eski versiyonu ile yaratmışsanız sözlüksel


yönetilmiş tablo alanlarını kullanabilirsiniz. Uzantılarını yönetmek için
veri sözlüğünü kullanan tablo alanı için, Oracle uzantı her ayrıldığında
veya geri kullanım için her boşaltıldığında veri sözlüğündeki uygun
tabloları günceller. Oracle ayrıca sözlüksel tabloların her güncellenmesi
hakkındaki geri alma bilgisini depolar. Çünkü sözlüksel tablolar ve geri
alma segmentleri veritabanının bir parçasıdır, onların kullandığı alan
bütün diğer verilerde olduğu gibi aynı alan yönetim işlemlerine bağlıdır.

Çoklu Blok Büyüklükleri

Sistem tablo alanının blok büyüklüğü standart blok büyüklüğüdür.


Veritabanı yaratıldığında herhangi bir geçerli büyüklük verilebilir.

Standart blok büyüklüğüne ek olarak, dört blok büyüklüğüne kadar


belirleyebilirsiniz. Başlangıç dosyasında her bir blok büyüklüğü için ön
arabellekdeki (buffer cache) alt önbellekleri (subcaches)
yapılandırabilirsiniz. Alt önbellekler bir Oracle anı çalışırken de
yapılandırılabilir. Herhangi bir blok büyüklüğüne sahip olan tablo
alanları yaratabilirsiniz. Standart blok büyüklüğü sistem tablo alanında
ve birçok diğer tablo alanlarında kullanılır.

91
Note: Bölümlenmiş nesnelerin bütün bölümleri tek blok büyüklüğündeki
tablo alanlarında yer almak zorundadır.

Tablo alanını OLTP veritabanından enterprise veri ambarına taşırken


çoklu blok uzunlukları birinci derecede yararlı olur. Bu farklı blok
büyüklüklerindeki veritabanları arasında taşımacılığı kolaylaştırır.

Erişilebilir(Online) ve Erişilemez(Offline) Tablo Alanları

Veritabanı her açıldığında veritabanı yöneticisi sistem tablo alanından


başka herhangi bir tablo alanını erişebilir yada erişilemez durumda
getirebilir. Veritabanı açıldığında sistem tablo alanı her zaman
erişilebilir durumdadır çünkü veri sözlüğü Oracle’a her zaman sürekli
olmak zorundadır.

Tablo alanı genellikle erişilebilir durumdadır öyle ki kapsadığı veri


veritabanı kullanıcılarına sürekli olur. Bununla beraber veritabanı
yöneticisi bakım veya yedekleme ve kurtarma amaçları için tablo alanını
erişilemez duruma getirebilir.

Tablo Alanı Erişilemez Durumda Olduğu Zaman

Tablo alanı erişilemez durumda olduğunda Oracle bu tablo alanındaki


nesneleri ilgilendiren hiçbir sonradan gelen SQL deyimine izin vermez.
Bu tablo alanındaki veriyi ilgilendiren aktif hareketler ile tamamlanmış
deyimler hareket düzeyinden etkilenmezler. Oracle geri alma verisine
karşılık gelen sistem tablo alanındaki uyulan geri alma segmentleri ile
tamamlanmış deyimleri biriktirir. Tablo alanı tekrar erişilebilir duruma
getirildiğinde, eğer gerekirse, Oracle tablo alanına geri alma verisini
uygular.
92
Tablo alanı erişilemez duruma geldiğinde veya erişilir duruma
getirildiğinde sistem tablo alanında veri sözlüğüne kaydedilir.
Veritabanını kapattığınızda tablo alanı erişilemez durumda ise
veritabanına sonraki bağlantıda ve yeniden açıldığında tablo alanı
erişilemez durumda kalır.

Bir tabloalanını yalnızca yaratıldığı veritabanının içerisinde erişilir hale


getirebilirsiniz çünkü gerekli veri sözlüğü bilgisi veritabanındaki sistem
tablo alanında tutulur. Erişilemez durumdaki tablo alanı Oracle dışındaki
herhangi bir hizmet programı tarafından okunamaz yada düzeltilemez.
Böylece erişilemez durumda olan tablo alanları diğer veritabanlarına
taşınamaz.

Ciddi hatalarla karşılaşıldığında Oracle tablo alanını otomatik olarak


erişilebilir durumdan erişilemez duruma getirir. Örneğin veritabanı
yazıcı işlemi, DBWn, tablo alanındaki veri dosyasına birkaç denemede
yazmakta başarısız olursa Oracle tablo alanını erişilebilir durumdan
erişilemez duruma getirir. Kullanıcılar erişilemez durumda olan tablo
alanındaki tablolara erişmeye çalışırsa hata mesajı alır. Diskin
giriş/çıkışının başarısızlığına sebebiyet veren problem ortam(media)
hatası ise problemi düzeltmenizden sonra tablo alanını kurtarmak
zorundasınız.

Özel Prosedürler İçin Tablo Alanlarının Kullanımı

Farklı veri türlerini ayırmak için çoklu tablo alanlarını yarattığınızda


çeşitli prosedürler için belirli tablo alanlarını erişilemez duruma alırsınız.
Diğer tablo alanları erişilebilir durumda olmaya devam eder ve
içerdikleri bilgi hala sürekli hazır durumdadır.

93
Bununla beraber tablo alanları erişilemez durumda olduğunda özel
durumlar meydana gelebilir. Örneğin iki tablo alanı indeks veriden tablo
verisini ayırmak için kullanıldığında aşağıdakiler doğru olur:

• İndeksleri kapsayan tablo alanı erişilemez durumda olduğunda


sorgular tablo verisine hala erişebilir çünkü sorgular tablo verisine
erişmek için indekse gerek duymazlar.

• İndeksleri kapsayan tablo alanı erişilmez durumda olduğunda


veritabanındaki tablo verisine erişilmez çünkü tablolar veriye erişmek
için gerekir.

Oracle deyimi çalıştırmak için erişilebilir tablo alanlarında yeterli


bilgiye sahipse bunu yapar. Erişilmez tablo alanındaki veriye gerek
duyarsa deyimin başarısız olmasına sebep olur.

Sadece-Okunabilir Tablo Alanları

Sadece-okunabilir tablo alanlarının başlıca amacı veritabanının büyük,


statik kısımlarının kurtarma ve yedekleme ihtiyacını yok etmektir.
Oracle sadece-okunabilir tablo alanlarının dosyalarını hiçbir zaman
güncellemez. Bu yüzden dosyalar sadece-okunabilir ortamlarda CD-
ROM veya WORM gibi sürücüler üzerinde durabilir.

Note: Bir tablo alanı sadece yaratıldığı veritabanında erişilebilir duruma


getirilebildiğinden, sadece-okunabilir tablo alanları arşivleme yada veri
yayıncılık gereksinimlerini sağlamak anlamına gelmez.

Sadece-okunabilir tablo alanları değiştirilemez. Sadece-okunabilir tablo


alanını güncellemek için ilk olarak tablo alanını okuma/yazma

94
durumuna getirin. Tablo alanı güncellendikten sonra sadece-okunabilir
durumuna geri getirebilirsiniz.

Sadece-okunabilir tablo alanlarında değişiklik yapılamadığından ve


herhangi bir anda okuma-yazma durumuna getirilmediği sürece,
yedeklemeyi tekrarlamaya gerek yoktur. Ayrıca veritabanınızı
kurtarmaya ihtiyacınız varsa herhangi bir sadece-okunabilir tablo alanını
kurtarmanıza gerek yoktur çünkü değişikliğe uğramamışlardır.

Sıralı İşlemler İçin Gerekli Tablo Alanları

Geçici tablo alanlarını sadece sıralama işlemleri için tasarlıyarak


sıralama işlemleri için gereken alanı daha verimli yönetebilirsiniz. Bu
şekilde, sıralı alan ayırma ve serbest bırakma ile ilgili bir dizi alan
yönetim işleminin karışıklığı yok edilir.

Sıralamaları kullanan, birleşmeleri içeren, indeksi yapılandıran,


düzenleyen, toplamı hesaplayan(GROUP BY), ve en uygun istatistiği bir
araya getiren tüm işlemler, geçici tablo alanlarından yararlanır.
Kazanılan performans “Gerçek Uygulama Kümeleri” (Real Application
Clusters) ile daha büyük olur.

Sıralı Segmentler

Bir geçici tablo alanı sadece sıralı segmentler için kullanılabilir. Geçici
tablo alanı kullanıcının geçici segmentler için tasarladığı, kullanıcının
kullanımına hazır herhangi bir tablo alanı ile aynı değildir. Geçici tablo
alanında tutulabilen kalıcı şema nesneleri yoktur.

95
Sıralı segmentler segment çoklu sıralı işlemlerle paylaşıldığında
kullanılır. Bir sıralı segment verilen tablo alanında sıralama işleminin
yapıldığı her Oracle anı için vardır.

Hafızaya sığabilecek çok büyük çoklu sıralamalara sahip olduğunuzda


geçici tablo alanları performansın artmasını sağlar. Verilen geçici tablo
alanının sıralı segmenti ilk sıralama işleminin yapıldığı anda yaratılır.
Segment büyüklüğü Oracle anında çalışan toplam depolanan bütün aktif
sıralamaları gerektiren büyüklüğe eşit veya daha büyük olana kadar
sıralama segmenti uzantıları ayırarak büyür.

Geçici Tablo Alanlarının Yaratılması

CREATE TABLESPACE veya CREATE TEMPORARY


TABLESPACE deyimini kullanarak geçici tablo alanlarını
yaratabilirsiniz.

Veritabanları Arasında Tablo Alanlarının Taşınması

Taşınabilir tablo alanı aynı platformda Oracle veritabanının bir alt


kümesini bir Oracle veritabanından diğerine taşımanıza izin verir. Tablo
alanını kopyalıyabilirsiniz(clone) ve diğer veritabanına ekleyebilirsiniz,
veritabanları arasında tablo alanını kopyalıyabilirsiniz veya bir Oracle
veritabanından tablo alanı çıkartabilir ve başka Oracle veritabanına
ekleyebilirsiniz, aynı platformda tablo alanını veritabanlarında hareket
ettirebilirsiniz.

Tablo alanlarını taşıyarak veri hareketleri aynı veriyi ya dışarı/içeri


aktarım(export/import) veya boşaltmak/yüklemek(unload/load)
büyüklüklerine göre daha hızlı sıralanabilir. Çünkü tablo alanının

96
taşınması sadece veri dosyalarını kopyalamayı ve tablo alanı
metaverisini bütünleştirmeyi içerir. Tablo alanlarını taşıdığınızda indeks
veriyide hareket ettirebilirsiniz, böylece tablo verisini içeri aktarımdan
veya yükledikten sonra indeksleri tekrar yapılandırmanıza gerek yoktur.

Note: Tablo alanlarını aynı karakter kümesini kullanan ve aynı donanım


satıcısından uyumlu platformlarda çalışan Oracle veritabanları arasında
taşıyabilirsiniz.

Tablo Alanının Diğer Veritabanlarına Kopyalanması Veya Hareket


Ettirilmesi

Tablo alanları kümesini kopyalamak veya hareket ettirebilmek için tablo


alanlarını sadece-okunabilir almak zorundasınız, tablo alanlarının veri
dosyalarını kopyalıyabilirsiniz ve dışarı/içeri aktarımı kullanarak veri
sözlüğünde depolanmış veritabanı bilgisini(metadata) taşıyabilirsiniz.
Veri dosyaları ve metaveri dışarı aktarım dosyasının ikisi birlikte
hedefteki veritabanına kopyalamak zorundasınız. Bu dosyaların
taşınmasında düz (aynı seviyede) dosyaları kopyalamanızı sağlayacak,
ftp veya CD üzerinden, işletim sisteminin kopyalama özellikleri
kullanılabilir.

Veri dosyalarını kopyaladıktan ve metaverinin içeri aktarımını yaptıktan


sonra tablo alanlarını okuma/yazma moduna alma seçeneğinizi
kullanabilirsiniz.

Note: Yerel yönetilmiş sistem tablo alanlı bir veritabanında sözlüksel


tablo alanları yaratılamaz. Taşınabilir özelliğini kullanarak sözlüksel
yönetilmiş tablo alanına koymak mümkündür fakat yazılabilir durumuna
getirilemez.

97
Veri Dosyalarını Gözden Geçirme

Oracle veritabanındaki bir tablo alanı bir veya birkaç fiziksel veri
dosyasından meydana gelmiştir. Veri dosyası sadece bir tablo alanı ve
sadece bir veritabanı ile ilişkilendirilebilir.

Oracle belirli miktarda disk alanı artı dosya başlığı için gerekli ek yük
ile bir tablo alanı için bir veri dosyası yaratır. Veri dosyası yaratıldığında
Oracle’ın çalıştığı işletim sistemi, bu dosyanın Oracle’a ayrılmasından
önce, eski bilgilerin silinmesinde ve bir dosyadan izin verilmesinden
sorumludur. Dosya büyükse bu işlem önemli miktarda zaman alabilir.
Herhangi bir veritabanındaki ilk tablo alanı her zaman sistem tablo
alanıdır. Bunun için Oracle veritabanı yaratılırken herhangi bir
veritabanının ilk veri dosyalarını sistem tablo alanı için otomatik olarak
ayırır.

Veri Dosyasının İçeriği

Veri dosyası ilk yaratıldığında ayrılan disk alanı biçimlendirilir fakat


herhangi bir kullanıcının verisini içermiyorsa. Bununla beraber Oracle
ilgili tablo alanının(sadece Oracle tarafından kullanılır) segmentleri için
ilerde gelecek veriyi tutmak için alan ayırır. Tablo alanındaki veri
büyüdükçe Oracle segmente uzantılar ayırmak için ilgili veri
dosyalarındaki boş alanı kullanır.

Tablo alanındaki şema nesneleri ile ilgili veri tablo alanını oluşturan bir
veya birkaç veri dosyasını fiziksel olarak depolar. Bir şema nesnesi
belirli veri dosyasına karşılık gelmez, daha doğrusu bir veri dosyası
belirli tablo alanındaki herhangi bir şema nesnesinin verisi için veri
havuzu(repository)dur. Oracle bir veya birkaç tablo alanının veri

98
dosyalarındaki şema nesnesi ile ilgili verisi için alan ayırır. Bundan
dolayı şema nesnesi bir veya birkaç veri dosyasına yayılabilir. Tablo
yayma (striping: verinin birden çok diske karşılıklı olarak yayıldığı
yer), kullanılmadıkça veritabanı yöneticisi ve son kullanıcılar şema
nesnesinin tutulduğu veri dosyasını kontrol edemez.

Veri Dosyasının Büyüklüğü

Yaratıldıktan sonra veri dosyasının büyüklüğünü değiştirebilirsiniz veya


tablo alanındaki şema nesneleri büyüdükçe veri dosyasının dinamik
olarak büyümesini belirleyebilirsiniz. Bu işlevsellik her bir tablo alanı
için birkaç veri dosyasına sahip olabilmemize ve veri dosyalarının
yönetimini kolayca yapabilmemizi sağlar.

Note: İşletim sisteminde büyüme için yeterli alana ihtiyacınız var.

Erişilemez(Offline) Veri Dosyaları

Sistem tablo alanı dışında herhangi bir zamanda tablo alanlarını


erişilmez duruma getirebilirsiniz veya erişilebilir duruma getirebilirsiniz.
Tablo alanını erişilmez veya erişilebilir duruma getirdiğinizde tablo
alanının bütün veri dosyaları karşılıklı olarak erişilmez veya erişilebilir
duruma gelir. Veri dosyalarını bireysel olarak erişilmez durumda
yapabilsenizde bu genellikle sadece bazı veritabanı kurtarma yöntemleri
sırasında yapılır.

Geçici Veri Dosyaları

Yerel yönetilmiş geçici tablo alanları veri dosyalarına benzeyen geçici


veri dosyalarına(tempfiles) aşağıdaki istisnalar ile sahiptir:

99
• Geçici dosyalara her zaman NOLOGGING modu verilmiştir.
• Geçici dosyayı sadece-okunabilir durumuna getiremezsiniz.
• Geçici dosyanın ismini değiştiremezsiniz.
• ALTER DATABASE deyimi ile geçici dosya yaratamazsınız.
• Geçici dosyaları yarattığınızda veya büyüklüğünü değiştirdiğinizde
dosyanın belirlenen büyüklüğü için disk alanının ayrılması her zaman
garanti değildir. Düzgün dosya sistemlerinde(örneğin UNIX) disk
blokları dosyanın yaratılması veya büyüklüğünün değişmesinde
ayrılmazlar fakat bloklara erişildikten sonra ayrılırlar.

Dikkat: Bu geçici dosyanın yaratılmasını ve büyüklüğünün


değiştirilmesinin daha hızlı olmasını sağlar, bununla beraber geçici
dosyalara erişildiğinde disk alanı dışı kalınabilir.

• Geçici dosya bilgisinin sözlüksel görünüşü DBA_TEMP_FILES


ve dinamik performans görünüşü V$TEMPFILE ile gösterilir fakat
DBA_DATA_FILES veya V$DATAFILE görünüşü ile değil.

Kontrol Dosyalarını Gözden Geçirme

Veritabanı kontrol dosyası veritabanını başlatmak ve başarılı şekilde


yönetmek için gerekli küçük ikili(binary) dosyadır. Veritabanı
kullanılırken kontrol dosyası Oracle tarafından devamlı olarak
güncellenir. Böylece veritabanı her açıldığında yazmak için
kullanılabilir olmak zorundadır. Bazı sebeplerden dolayı kontrol
dosyasına erişim olmazsa veritabanı düzgün olarak çalışmaz.

Her bir kontrol dosyası sadece bir Oracle veritabanı ile ilişkilendirilir.

100
Kontrol Dosyasının İçeriği

Kontrol dosyası Oracle anına erişim için gerekli veritabanı hakkında


bilgi içerir, her ikiside başlatmada ve normal operasyon sırasındayken.
Kontrol dosyası bilgisi sadece Oracle tarafından değişiklik yapılabilir,
veritabanı yöneticisi veya kullanıcı kontrol dosyasında değişiklik
yapamaz.

Diğerleri arasında kontrol dosyası aşağıdaki gibi bilgileri içerir:

• Veritabanı ismi
• Veritabanı yaratılışının timestamp’i
• İlgili veri dosyalarının isimleri ve yerleri ve erişilebilir durumda
yinelenebilir günlük dosyaları(online redo log files)
• Tablo alanı bilgisi
• Veri dosyası erişilebilir olma sınırları
• Günlüğün geçmişi
• Arşivlenen günlüğün bilgisi
• Yedekleme kümesi ve yedekleme bölüm bilgisi
• Yedekleme veri dosyası ve yineleme günlük bilgisi
• Veri dosyası kopyalama bilgisi
• Hali hazırdaki günlük sıra numarası
• Kontrol nokta(Checkpoint) bilgisi

Veritabanı ismi ve timestamp veritabanı yaratılırken verilir. Veritabanı


ismi ya başlangıç parametresi DB_NAME tarafından belirlenen isimden
yada CREATE DATABASE deyiminde kullanılan isimden alınır.
Veritabanına her veri dosyası veya erişilebilir yineleme günlük dosyası
eklenmesinde, isminin değiştirilmesinde veya veritabanından

101
çıkarılmasında, kontrol dosyası bu fiziksel yapı değişikliğine yansıması
için güncellenir. Bu değişiklikler kaydedilir şöyle ki:

• Oracle veritabanını başlatma sırasında açmak için veri dosyalarını


ve erişilebilir durumda yineleme günlük dosyalarını tanımlayabilir.
• Oracle veritabanı kurtarma gerekli olduğu durumda sürekli veya
gerekli olan dosyaları tanımlayabilir.

Bu yüzden veritabanınızın fiziksel yapısında değişiklik(ALTER


DATABASE deyimlerini kullanarak) yaptığınızda kontrol dosyanızın
derhal bir yedeğini almalısınız.

Kontrol dosyaları kontrol noktaları hakkında bilgiyide kaydederler. Her


üç saniyede bir kontrol nokta işlemi(CKPT) erişilebilir durumda
yineleme günlüğündeki kontrol noktası durumları hakkında kontrol
dosyasına bilgiyi kaydeder. Veritabanı kurtarılması sırasında kullanılan
bu bilgi Oracle’a veri dosyalarına önceden yazılmış, veritabanı
kurtarılması için gerekli olmayan -erişilebilir durumdaki yineleme
günlük guruplarındaki- bu noktadan önceki bütün yineleme girişlerinin
kaydedileceğini söyler.

Çoklu(Multiplexed) Kontrol Dosyaları

Erişilebilir durumda yineleme günlük dosyalarında olduğu gibi, Oracle


çoklu, benzer kontrol dosyalarını eşzamanlı açmayı ve aynı veritabanına
yazmayı sağlar.

Farklı diskler üzerinde tek veritabanı için çoklu kontrol dosyaları


depolanarak kontrol dosyalarına göre başarısız olabilecek tek bir
noktaya karşın koruyabilirsiniz. Kontrol dosyası içeren tek bir disk
bozulursa Oracle tahrip olmuş kontrol dosyasına erişmeye çalıştığında

102
hali hazırdaki Oracle anı başarısız olur. Bununla beraber farklı
disklerdeki hali hazırdaki kontrol dosyasının kopyası sürekli olduğunda
Oracle anı veritabanı kurtarılması işine gerek kalmadan kolayca tekrar
başlatılabilir.

Veritabanının bütün kontrol dosyaları operasyon sırasında kalıcı olarak


kaybolmuşsa Oracle anı sonlandırılmakta (abort) ve ortam kurtarma
gereklidir. Kontrol dosyasının eski yedeği kullanılmak zorundaysa ortam
kurtarma kolay olmaz çünkü hali hazırdaki kontrol dosyasının
kullanılabilecek bir kopyası yoktur. Bu yüzden aşağıdaki pratiklere
kesinlikle uymanız tavsiye edilir:

• Her bir veritabanına karşılık gelen çoklu kontrol dosyaların


kullanılması
• Farklı fiziksel diskler üzerinde her biri için ayrı ayrı yedeklenmesi
• İşletim sisteminin aynalamasının kullanılması
• Yedeklemenin gözlenmesi

103
4
Veritabanı ve Oracle Anını Açma ve Kapama

Bu bölüm Oracle anının ve veritabanının açılma ve kapatılmasını içeren yöntemleri


açıklar. İçerdikleri:

• Oracle Anına Giriş


• Oracle Anı ve Veritabanının Başlatılması
• Veritabanı ve Oracle Anının Kapatılması

104
Oracle Instance’ına Giriş

Her çalışan Oracle veritabanı bir Oracle Anı ile ilişkilendirilir.


Veritabanı veritabanı sunucusu (bilgisayarın türünü önemsemeden)
üzerinde açıldığı Oracle System Global Area (SGA) adı verilen
hafızadan alan ayırır ve bir veya birkaç Oracle işlemi başlatır. SGA ve
Oracle işlemlerinin bir araya gelmesi Oracle anı(Oracle instance) olarak
adlandırılır. Oracle anının işlemleri ve hafızası ilişkilendirildiği
veritabanı dosyalarını verimli bir şekilde yönetir ve veritabanının bir
veya çoklu kullanıcılarına hizmet eder.

Şekil 5-1 Oracle anını gösterir.

105
Oracle Anı ve Veritabanı

Oracle anının başlamasından sonra Oracle belirlenen veritabanı ile


Oracle anını ilişkilendirir. Buna veritabanını bağlama (mounting) adı
verilir. Bundan sonra veritabanı izinli kullanıcıların erişebilmesine hazır
hale gelir.

Çoklu Oracle anları aynı bilgisayarda eşzamanlı çalışabilir, her bir


erişim kendine ait fiziksel veritabanına olur. Kümelenmiş ve büyük
paralel sistemlerde (MPS) Gerçek Uygulama Kümeleri (RAC) çoklu
Oracle anlarının tek veritabanına bağlanmasını sağlar.

Sadece veritabanı yöneticisi Oracle anını başlatabilir ve veritabanını


açabilir. Veritabanı açılırsa veritabanı yöneticisi veritabanını kapatabilir
yani veritabanı kapanır. Veritabanı kapatıldığında kullanıcılar
veritabanının içerdiği bilgilere erişemezler.

Veritabanının açma ve kapatılmasının güvenliği Oracle’a bağlanan


yöneticinin haklarına göre kontrol edilir. Normal kullanıcılar hali
hazırdaki Oracle veritabanının durumu üzerinde kontrol etme hakkı
yoktur.

Yöneticinin Hakları ile Bağlanma

Veritabanını açma ve kapama güçlü yönetici seçeneğidir ve Oracle’a


yönetici hakları ile bağlanan kullanıcılar kısıtlandırılır. İşletim sistemine
bağlı olarak aşağıdaki durumlardan biri kullanıcı için yönetici haklarını
belirler:

• İşletim sisteminin kullanıcı hakları yönetici haklarını kullanarak


bağlanmanıza izin verir.
• Kullanıcıya SYSDBA veya SYSOPER hakları verilir ve veritabanı
veritabanı yöneticilerini belirlemek için şifre dosyalarını kullanır.

SYSDBA hakları ile bağlandığınızda SYS’ye ait olan şemada olursunuz.


SYSOPER olarak bağlandığınızda genel şemada olursunuz. SYSOPER
hakları SYSDBA haklarının bir alt kümesidir.

106
Başlangıç Parametre Dosyaları

Oracle anının başlamsı için Oracle’ın başlatma parametre dosyasını


okumak zorundadır. Bu dosya bu Oracle anı ve veritabanı için
yapılandırma parametrelerinin listesini içerir. Oracle anının ayarlanması,
birçok hafıza ve işlemlerinin başlatılması için bu parametrelere belirli
değerler veriniz. Birçok başlatma parametreleri aşağıdaki guruplardan
birine aittir:

• Parametreler kullanarak isimlendirme, örneğin, dosyalar


• Parametreler kullanarak sınırların belirlenmesi, örneğin,
maksimumlar
• Parametreler kullanarak kapasitenin etkilenmesi, örneğin, SGA’nın
büyüklüğü(bunu belirleyen parametrelere değişken parametreler adı
verilir)

Diğerlerinin arasında, başlatma parametrelerinin Oracle’a söyledikleri:

• Oracle anını başlatmak için gerekli veritabanının ismi


• SGA’daki yapıların hafızada ne kadar yer aldığı
• Dolmuş erişilebilir durumda yineleme günlüğü dosyalarla ne
yapılacağı
• Veritabanı kontrol dosyalarının isimleri ve yerleri
• Veritabanındaki geri alma tablo alanlarının veya özel geri alma
segmentlerinin isimlerini

Parametre Değerlerinin Değiştirilmesi

Veritabanı yöneticisi veritabanı sisteminin performansını artırmak için


parametrelerin değerlerini ayarlıyabilir. Hangi parametrelerin sistemi
tam olarak daha çok etkilemesi birçok veritabanı karakteristiğine ve
değişkenlere bağlıdır.

Oracle anı çalışırken ALTER SESSION veya ALTER SYSTEM


deyimini kullanarak bazı parametreler dinamik olarak değiştirilebilir.
Sunucu parametre dosyasını kullanmazsanız ALTER deyimi ile yapılan
değişiklikler sadece hali hazırdaki Oracle anını etkiler. Oracle anının bir
sonraki açılışında değişiklikleri uygulayabilmesi için metin başlatma
parametre dosyasını el ile güncellemek zorundasınız. Sunucu parametre
dosyası kullandığınızda disk üzerindeki parametreleri
güncelleyebilirsiniz böylece değişiklikler veritabanının açılıp
kapanmasına karşılık uygulanmaya devam eder.

107
Oracle Anı ve Veritabanının Başlatılması

Oracle veritabanı başlatmak için üç adım ve sistem genelinde


kullanımda sürekli olabilmesi için:
1. Oracle anını başlat
2. Veritabanını bağla
3. Veritabanını aç

Veritabanı yöneticisi SQL*Plus STARTUP deyimini veya Enterprise


Manager’ı kullanarak bu üç adımı yapabilir.

Oracle Anının Açılması

Oracle Oracle anını başlattığında başlatma parametrelerinin değerlerine


karar vermek için başlatma parametre dosyasını okur. Sonra veritabanı
bilgisi için kullanılan ortak hafıza alanını SGA’ya ayırır ve arka
plandaki işlemleri yaratır. Bu anda, bu hafıza yapıları ve işlemlerle
ilişkilendirilen veritabanı yoktur.

Oracle Anının Kısıtlandırılmış Modda Başlatılması

Oracle anını kısıtlandırılmış moda çalıştırabilirsiniz(veya varolan Oracle


anını ilerde kısıtlanmış moda alabilirsiniz). Bu sadece RESTRICTED
SESSION sistem hakkı verilmiş kullanıcıların bağlanmasında
kısıtlanmış olur.

Anormal Durumlarda Güçlü Başlatma

Nadir durumlarda bir önceki Oracle anı düzgün bir şekilde kapatılmamış
olabilir. Örneğin, Oracle anının işlemlerinden biri uygun biçimde
sonlandırılmamış olabilir. Bu koşullarda veritabanı normal Oracle anı
başlatılması sırasında bir hata gelebilir. Bu problemi çözmek için, yeni
Oracle anı başlatmadan önce bir önceki Oracle anından kalan bütün
Oracle işlemlerini sonlandırmak zorundasınız.

Veritabanına Bağlanılması

Oracle anı veritabanı ile Oracle anını ilişkilendirmek için veritabanına


bağlanır. Veritabanına bağlanmak için Oracle anı veritabanı kontrol

108
dosyalarını bulur ve onları açar. Kontrol dosyaları Oracle anının
başlatılması için kullanılan parametre dosyasındaki CONTROL_FILES
başlatma parametresinde belirlenir. Sonra Oracle veritabanının veri
dosyalarının ve yineleme günlük dosyalarının isimlerini almak için
kontrol dosyalarını okur.

Bu anda veritabanı hala kapalıdır ve sadece veritabanı yöneticisi


erişebilir durumdadır. Belirli bakım operasyonları tamamlanırken
veritabanı yöneticisi veritabanını kapalı durumda tutabilir. Bununla
beraber veritabanı normal operasyonlar için henüz sürekli değildir.

RAC ile Veritabanına Bağlanılması

________________________________________________________
Note: Bu bölümde tarif edilen özellikler sadece Oracle9i Enterprise
Edition RAC ile satın aldığınızda sürekli olacaktır.
________________________________________________________

Oracle aynı veritabanına eşzamanlı bağlanmak için çoklu Oracle


anlarına izin verirse veritabanı yöneticisi çoklu Oracle anlarına
veritabanını sürekli kılabilmek için CLUSTER_DATABASE başlangıç
parametresini kullanabilir. CLUSTER_DATABASE parametresinin
varsayılan değeri “false” olur. Oracle verisyonları
CLUSTER_DATABASE parametresinin değeri false olduğunda RAC
desteklenmez.

Veritabanına bağlanan ilk Oracle anı için CLUSTER_DATABASE


parametresinin değeri false ise sadece bu Oracle anı veritabanına
bağlanabilir. İlk Oracle anı CLUSTER_DATABASE parametresinin
değerini “true” olarak belirlemişse CLUSTER_DATABASE
parametresinin değeri true olarak belirleyen diğer Oracle anları
veritabanına bağlanabilir. Veritabanına bağlanabilen Oracle anlarının
sayısı, veritabanı yaratılırken belirleyebildiğiniz ilk belirlenmiş
maksimuma bağlıdır.

Hazır Durumda Bekleyen(Standby) Veritabanına Bağlanılması

Hazır durumda bekleyen veritabanı birincil durumdaki veritabanınızın


kopyasının bakımını sağlar ve kötü bir duruma karşılık sürekliliğinin
devamını sağlar.

109
Hazır durumda bekleyen veritabanı sabit olarak kurtarma modundadır.
Hazır durumda bekleyen veritabanınızın bakımını yapmak için ALTER
DATABASE deyimini kullanarak hazır durumda bekleyen moddayken
bağlanmak ve birincil durumdaki veritabanınızın oluşturduğu
arşivlenmiş yineleme günlüklerini uygulamak zorundasınız.

Hazır durumda bekleyen veritabanınızı geçici raporlama veritabanı


olarak kullanmak için sadece okunabilir modda açabilirsiniz. Hazır
durumda bekleyen veritabanınızı okuma/yazma modunda açamazsınız.

Kopyalanmış (Clone) Veritabanına Bağlanılması

Kopyalanmış veritabanı tablo alanını herhangi bir anda kurtarmak için


kullanılabilen veritabanınızın özel bir kopyasıdır. Tablo alanını herhangi
bir anda kurtarma yaptığınızda kopyalanmış veritabanınıza bağlanın ve
istenilen zamandaki tablo alanlarını geri alın sonra kopyalanmış
veritabanınızın öteverisini dışa aktarımla birincil veritabanınıza taşıyın
ve geri alınmış tablo alanlarından veri dosyalarını kopyalayın.

Veritabanınızı Açtığınızda Meydana Gelenler

Bağlanmış veritabanı açılırken normal veritabanı operasyonları için


sürekli olur. Geçerli herhangi bir kullanıcı açık veritabanına bağlanabilir
ve bilgilerine erişebilir. Genellikle veritabanı yöneticisi genel kullanım
için veritabanını açarak sürekli duruma getirir.

Veritabanını açtığınızda Oracle erişilir durumda veri dosyalarını ve


erişilir durumda yineleme günlük dosyalarını açar. Veritabanı bir önceki
kapandığında tablo alanı erişilmez durumda ise veritabanını tekrar
açtığınızda tablo alanı ve ona karşılık gelen veri dosyaları hala erişilmez
durumda olacaktır.

Veritabanını açmaya çalıştığınızda herhangi bir veri dosyası veya


yineleme günlük dosyaları mevcut değilse Oracle bir hata döndürür.
Veritabanını açmanızdan önce herhangi bir zarar görmüş veya
kaybolmuş dosyalarınızın yedeğinden kurtarma yapmak zorundasınız.

Oracle Anını Kurtarma

Veritabanı en son anormal bir şekilde kapatıldıysa, ya veritabanı


yöneticisi kendi Oracle anını sonlandırdığından dolayı yada enerji

110
başarısızlığından(elektirik kesilmesinden) dolayı; veritabanı tekrar
açıldığında Oracle kurtarmayı otomatik olarak yapar.

Geri Alma Alanının Kazanılması ve Yönetilmesi

Veritabanını açtığınızda Oracle anı bir veya birkaç geri alma tablo alanı
veya geri alma segmentini kazanmaya çalışır. UNDO_MANAGEMENT
başlatma parametresini kullanarak Oracle anını başlatmada geri alma
yönetim modunu ya otomatik olarak yada el ile yönetmeye karar
verirsiniz.

Desteklenen değerler AUTO veya MANUAL’dir. AUTO değeri


kullanılırsa Oracle anı otomatik geri alma yönetimi modunda başlatılır.
Varsayılan değer MANUAL’dir.

• Geri alma tablo alanı yönetimini kullanırsanız otomatik geri alma


yönetim modunu kullanırsınız. Bu tavsiye edilendir.

• Geri alma alan yönetiminin geri alma segment yönetimini


kullanırsanız el ile geri alma yönetim modunu kullanırsınız.

Resolution of In-Doubt Distributed Transaction

Veritabanı bir veya birkaç şüpheli (ne kaydedilmiş nede geri alınmış)
dağıtılmış hareketleri ile bazen anormal olarak kapanır. Veritabanı tekrar
açıldığında ve kurtarma tamamlandığında RECO arka plan işlemleri
herhangi şüpheli dağıtılmış hareketleri otomatik olarak, derhal ve tutarlı
bir şekilde çözer.

Veritabanının Sadece-Okunabilir Modunda Açılması

Kullanıcı hareketleri tarafından veriyi değişikliklerden korumak için


herhangi veritabanını sadece-okunabilir moda açabilirsiniz. Sadece-
okunabilir mod veri dosyalarına ve yinele günlük dosyalarına
yazamayan sadece-okunabilir hareketlerin veritabanına erişimini sınırlar.

Disk diğer dosyalara (örneğin, kontrol dosyaları, operating system


audit trails, trace files, ve uyarı dosyaları) yazar, sadece okunabilir
moda devam edebilir. Sıralama operasyonları için geçici tablo alanları
veritabanının sadece okunabilir moda açılmasında etkilenmezler.
Bununla beraber veritabanı sadece okunabilir moda açıldığında kalıcı

111
tablo alanlarını erişilemez duruma getiremezsiniz. Ayrıca iş kuyrukları
sadece okunabilir modda sürekli değildir.

Sadece okunabilir mod veritabanı kurtarmayı veya yineleme verisi


oluşturmadan veritabanının durumunu değiştiren operasyonları
sınırlamaz. Örneğin, sadece okunabilir moda:

• Veri dosyaları erişilir ve erişilmez duruma getirilebilir


• Erişilmez durumda veri dosyaları ve tablo alanları geri alınabilir
• Kontrol dosyası veritabanının durumunu güncellemek için
sürekliliğe devam eder

Hazır durumda bekleyen veritabanları geçici raporlama veritabanları


olarak görev yapabilen sadece-okunabilir modda tek kullanılabilir
uygulamadır.
Veritabanı ve Oracle Anının Kapatılması

Veritabanını ve ilişkilendirildiği Oracle anını kapamak için yapılan üç


adım:

1. Veritabanının kapanması
2. Veritabanının unmount edilmesi
3. Oracle anının kapatılması

Veritabanı yöneticisi bu üç adımı Enterprise Manager kullanarak


yapabilir. Oracle anı her kapatıldığında Oracle bu üç adımı da otomatik
olarak yapar.

Veritabanının Kapatılması

Veritabanını kapadığınızda Oracle bütün veritabanı verisini ve


SGA’daki kurtarma verisini veri dosyalarına ve yineleme günlük
dosyalarına karşılıklı olarak yazar. Sonra, Oracle bütün erişilebilir
durumda veri dosyalarını ve erişilebilir durumda yineleme günlük
dosyalarını kapatır.(Herhangi erişilmez durumda tablo alanlarının
herhangi erişilmez durumda veri dosyaları önceden kapatılmıştı.
Veritabanını sonradan tekrar açarsanız erişilmez durumda herhangi tablo
alanı ve onun veri dosyaları karşılıklı olarak erişilmez durumda ve
kapalı kalmaya devam eder.) Bu anda veritabanı kapalı ve normal
işlemler içim erişilmezdir. Veritabanı kapatıldıktan sonra kontrol
dosyası açık kalmaya devam eder fakat hala bağlıdır.

112
Oracle Anını Sonlandırarak Veritabanının Kapanması

Az rastlanan acil durumlarda veritabanını hemen tamamiyle kapatmak


için açık veritabanının Oracle anını sonlandırabilirsiniz. Bu işlem hızlı
olur çünkü SGA’nın tamponundaki bütün veriyi veri dosyalarına ve
yineleme günlük dosyalarına yazma işlemi atlanır. Veritabanının
sonradan tekrar açılması Oracle’ın otomatik olarak gerçekleştirdiği
kurtarmayı gerektirir.

Note: Veritabanı açıldığında sistem yada enerji hatası oluşursa,


veritabanı tekrar açıldığında Oracle anı, tepki olarak, sonlandırılır ve
kurtarma yapılır.

Veritabanını Unmount Etme

Veritabanı kapatıldıktan sonra Oracle Oracle anından veritabanının


ilişkisini kesmek (disassociate) için bağı keser (unmount). Bu anda
Oracle anı bilgisayarınızın hafızasında kalmaya devam eder.
Veritabanının bağı kesildikten sonra Oracle veritabanının kontrol
dosyalarını kapatır.

Oracle Anının Kapatılması

Veritabanının kapatılmasındaki son adım Oracle anının kapatılmasıdır.


Oracle anını kapattığınızda SGA hafızadan silinir ve arka plan işlemleri
sonlanır.

Oracle Anının Anormal Olarak Kapatılması

Nadir durumlarda Oracle anının kapatılması temiz bir şekilde


olmayabilir; bütün hafıza yapıları hafızadan silinmeyebilir veya arka
plandaki işlemlerden biri sonlandırılmış olmayabilir. Bir önceki Oracle
anından kalıntılar olduğunda sonraki Oracle anını başlatma büyük
ihtimalle başarısız olacaktır. Bu durumlarda veritabanı yöneticisi bir
önceki Oracle anının artıklarını temizleyerek ve sonra yeni Oracle anı
başlatarak veya Enterprise Manager’daki SHUTDOWN ABORT
deyimini uygulayarak yeni Oracle anını başlatmak için zorlayabilir.

113
KÜME VERİTABANI İŞLEMİ TEMEL İLKELERİ:

Bu bölümde Real Application Clusters anlatılacaktır.Bu bölümdeki Üniteler:

• “Real Application Clusters’a Giriş”


• “Real Application Clusters Sistemlerin Mimarisi”
• “Real Application Clusters Yazılım Mimarisi”
• “Real Application Clusters’ta Ölçeklenirlik”

114
Real Application Clusters’a Giriş

Bu bölümde küme (cluster) veritabanı işlemi ve Real Application


Clusters’ın özellikleri sunulmaktadır. Bu ünite aşağıdaki konuları
içermektedir:
• Real Application Clusters Nedir?
• Real Application Clusters’ın Yararları

Real Application Clusters Nedir?

Real Application Clusters birbirine bağlı bilgisayarların işlem gücünü


kullanır. Real Application Clusters yazılımı ve küme olarak bilinen
donanım grubu, güvenilir bilgii şlem ortamı yaratabilmesi için herbir
bileşenin işlem gücünü birleştirir.

Real Application Cluster tüm sistem türleri için önemli avantajlar


sunmaktadır. Real Application Cluster’ın fonksiyonelliği ile donatılmış
tüm sistemler ve uygulamalar küme ortamından verimli bir şekilde
faydalanabilir.

Real Application Cluster’ı; yüksek performans elde etmek, sistemin


işlem kapasitesini arttırmak ve yüksek devamlılığa ulaşmak için
kullanabilirsiniz. Real Application Cluster’ı konuşlandırmadan önce
Real Application Cluster işlemini anlamanız gerekmektedir.

Real Application Cluster ortamında, bütün aktif Oracle instance’ları


paylaşılabilir bir veritabanı üzerindeki işlemleri aynı anda yürütebilir.

Kümelerin gücünü kullanmak belli avantajlar sunar. Çoklu


düğümler(nodes) arasına dağıtılmış ve alt görevlere ayrılmış büyük bir
115
işlem, tüm işlemin bir düğüm üzerinde işleme konmasına göre daha
erken ve daha verimli bir şekilde tamamlanır. Küme işlemi, hızla
gelişen kullanıcı sayısına imkan ve büyük iş yükleri için yüksek
performans sağlar.

Real Application Clusters ile, uygulama kodunu değiştirmeden,


uygulamalarınızın artan veri işleme ihtiyaçlarını karşılayıp
karşılamadığını ölçebilirsiniz. Düğümler veya disk gibi yeni kaynaklar
eklediğinizde, Real Application Cluster bu bileşenleri bireysel
limitlerinin üzerinde bir berimle kullanmanızı sağlar.

Sadece okunur veriye erişebilen veri ambarı uygulamaları Real


Application Clusters için başlıca adaylardır. Buna ek olarak, Real
Application Clusters, Online Transaction Processing (OLTP)
sistemleri ve hem okunan/yazılan uygulamaların özelliklerini
birleştiren hybrid sistemleri yönetebilir. Ayrıca Real Application
Clusters güvenilir kolay erişilebilen çözümlerin önemli bir bileşeni
olarak, çok az hataya müsahama ederek ya da hiç aksamadan görev
yapar.

Real Application Cluster’ın Faydaları?

Bu kısım Real Application Cluster’ın bazı faydalarını açıklamaktadır.


• Düşük Toplam Sahip Olma Maliyeti
• Yüksek Ölçeklenirlik
• Yüksek Devamlılık
• Saydamlık
• Ön Arabellek Yönetimi (Buffer Cache Management)
• Kayıt bazında kilitleme (Row Locking)
• Recovery Manager, Online Yedekleme, ve Arşivleme

116
Düşük Toplam Sahip Olma Maliyeti

Real Application Cluster diğer küme veritabanı ürünlerine göre toplam


sahip olma maliyetini daha etkin biçimde azaltır. Bu daha çok Real
Application Clusters mimarisinin tüm sistemi tekbir yapı olarak
birleştirebilmesinin sonucudur.

Real Application Clusters ile erişebileceğiniz sistem konsolidasyon


düzeyi, diğer küme veritabanı ürünlerine göre daha az yazılım ve
hesaplama araçları kullanmanızı sağlayacaktır. Üstelik, yüksek
süreklilik ve ölçeklenirlik gerektiren tüm yapılandırmalar için Real
Application Clusters’ı konuşlandırabilirsiniz. Bununla birlikte; Real
Application Clusters ile etkileşen çok yönlü, kolay yönetilebilir araçlar
sayesinde, projenizle ilgili yönetimsel ek yükler projenizin yaşamı
boyunca sürekli önemli ölçüde azalarak toplam maliyetinizi düşük tutar.

Yüksek Ölçeklenirlik

Ölçeklenebilir bir ortam, performansınızı geliştirmeyi ve düğüm


ekleyerek kapasiteyi artırmanızı sağlar. Bazı platformlarda kümeleme
çalışırken dinamik olarak düğüm ekleyebilirsiniz.

Real Application Clusters’ın destekleyebileceği düğüm sayısı


gerçekleştirilmiş olarak bilinen düğüm sayısından oldukça fazladır.
Yüksek süreklilik için yapılandırılmış küçük sistemler sadece iki
düğüme sahip olabilirler. Oysa, büyük sistemler 32-64 düğüme sahip
olabilirler.

Note: Kümenize dinamik olarak düğüm ekleyebilmeniz cluster


yazılımınızın (clusterware) yeteneklerine bağlıdır. Eğer Oracle

117
clusterware kullanıyorsanız, düğümleri ve Oracle anlarını bir çok
platforma dinamik olarak ekleyebilirsiniz.

Yüksek Devamlılık

Yüksek devamlılık herhangi bir aksama durmunda bile tutarlı, kesintisiz


servis sağlayan bol bileşenli sistemleri ifade eder. Bir çok yüksek
devamlılık konfigürasyonunda; bir düğüm üzerindeki bir hatanın bütün
sistemi etkilememesi için düğümler birbirlerinden izole edilmişlerdir.

Saydamlık

Saydamlık kavramı, tek Oracle instance’ına sahip Oracle veritabanı


konfigürasyonlarına fonksiyonellik bakımından eşit olan Real
Application Clusters ortamlarını ima eder. Diğer bir deyişle; eğer
uygulamalarınız tek Oracle instance’ına sahip Oracle veritabanı
konfigürasyonlarında verimli şekilde çalışırsa Real Application Cluster
üzerinde konfigürasyonları konuşlandırmak için kod değişikliği
yapmanıza gerek yoktur.

Bir kümedeki çoklu ön arabelleklerin birleşimi anlamına gelen Cache


Fusion özelliği, Real Aplication Clusters ortamlarının yönetimini
kolaylaştırır. Real Aplication Clusters ve Cache Fusion ile kapasite
planını da yapmanıza gerek yoktur.

Saydamlık ayrıca hem sistem düzeylerinde hem de uygulamalardaki


verimli kaynak kullanımlarında kullanılmaktadır. Örneğin; zaman-
tüketim kaynak konfigürasyonlarını (time- consuming resource
configurations) veri erişim düzenini inceleyerek yapmanıza gerek
yoktur; çünkü Real Aplication Clusters bunu otomotik olarak yapar.

118
Ön Arabellek Yönetimi

Oracle; kaynakları (örneğin veri bloğu bilgisi) bellekte yer alan bir ön
arabellekte depolar. Bu bilgiyi yerel olarak depolama, veritabanı
işlemlerini ve disk I/O (disk okuma-yazma)’sunu azaltır. Çünkü her bir
Oracle instance’ının kendi belleği vardır. Real Aplication Clusters disk
I/O işlemlerini minimize ederken çoklu düğümlerin ön arabelleklerini
koordine eder. Bu, performansı yüksek seviyeye çıkartır ve gerçek
belleği küme veri tabanınızdaki bütün belleğin toplamına nerdeyse eşit
olacak şekilde genişletir.

Bunu yapmak için Real Aplication Clusters, Oracle’ın yüksek


performans özelliklerini en yüksek seviyeye çıkartmak ve çoklu ön
arabellekler arasındaki işlemleri koordine etmek için Global Cache
Service ( GCS) ‘i kullanır. Ayrıca Global Enqeue Service (GES)
eşzamanlamayı da düğümler arası iletişimleri yöneterek destekler. GCS
ve GES ten 2.bölümde daha detaylı şekilde bahsedilecektir.

Row Locking (Kayıt Bazında Kilitleme)

Oracle row locking ve multi-version read consistency, yüksek


derecede eşzamanlı kullanımı ve iş çıkarma yeteneğini sağlar. Row
locking aynı veri bloğunda farklı satırları değiştiren hareketlerin
kaydetmek için birbirini beklememesini sağlar.

Multiversion Read Consistency

Multiversion read consistency, okuma işlemlerin yazma işlemlerini,


yazma işlemlerinin de okuma işlemlerini bloke etmemesini sağlar.
Multiversion read consistency, henüz commit edilmemiş
transaction’lardaki verilerin bulunduğu blokların snapshotlar’ını ve
119
okuma tutarlı versiyonlarını oluşturur. Bu yaklaşımın iki önemli
yararı vardır:
• Okuma işlemleri, kaynakları beklemek zorunda kalmaz çünkü bir
kullanıcının değiştirmekte olduğu verilerin diğer kullanıcılar tarafından
okunmasını engellenmez.
• Verinin herhangi bir zaman için snaphot görüntüsü mevcuttur

Recovery Manager, Online Yedeklemeler, ve Arşivleme

Real Application Clusters, Recovery Manager (RMAN)’ın ve Oracle


Enterprise Manager’ın tüm fonksiyonelliğini destekler. Ayrıca, Real
Application Clusters tek Oracle instance’ına sahip Oracle
veritabanlarında bulunan bütün Oracle yedekleme ve arşivleme
özelliklerini destekler. Bu; bütün veritabanın veya tek bir tablo alanın
hem on-line hemde off-line yedeklerini içermektedir.

Eğer Oracle’ı ARCHIVELOG modunda çalıştırıyorsanız, log dosyası


dolduğu zaman Oracle bu log dosyasının üzerine herhangi bir bilgi
yazılmadan bir arşiv dosyasına dönüştürür. Real Application
Cluster’larda, her Oracle instance’ı kendi redo log dosyalarını otomatik
olarak arşivler, veya bir yada daha fazla Oracle instance’ları redo log
dosyalarını bazı Oracle instance’ları veya tüm Oracle instance’ları için
arşivleyebilir.

Eğer veritabanınızı NOARCHIVELOG modunda çalıştırıyorsanız,


sadece off-line yedeklemeler yapabilirsiniz. Eğer veri kaybetmek
istemiyorsanız, Oracle ARCHIVELOG modunu kullanmanızı önemle
tavsiye ediyor.

Bu bölümdeki diğer üniteler Real Application Cluster’ların Mimarisini


ve onun ölçeklenirlik özelliklerini açıklamaktadır.

120
REAL APPLICATION CLUSTERS SİSTEMLERİN MİMARİSİ

Bu bölüm pekçok cluster (küme) veritabanı ortamlarında benzer olan


sistem bileşenlerini ve mimari modelleri tanımlar. Düğümler için
gerekli donanım ile birlikte düğümleri küme veritabanı haline getiren
yazılımı da tanımlar. Bu bölümdeki başlıca konular :

• Küme Veritabanı Sistem Bileşenlerini gözden geçirme


• Bellek, Interconnect (Interconnect) ve Depolama
• Yüksek Hızlı IPC Interconnect
• Paylaşılan Disk Deposu ve Cluster File System(Küme Dosya
Sistemi) Avantajı

CLUSTER (Küme) Veritabanı Sistem BileşenlerinE Genel bir bakış

Bir küme veritabanı bir Interconnect (Interconnect) ile bağlanan iki ya


da daha fazla düğümden oluşur. Interconnect, küme veritabanı içindeki
herbir düğüm arasında iletişim yolu olarak görev yapar. Her Oracle
instance’ı, her bir Oracle instance’ının paylaşılan kaynakları kullanımını
senkronize eden mesajlaşma için Interconnect kullanır. Ayrıca; Oracle,
Interconnect çoklu Oracle anlarının paylaştığı veri bloklarını iletmek
için kullanır. Kullanılan kaynağın ana tipi bütün düğümlerin eriştiği veri
dosyalarıdır.

Şekil 2-1 bir küme veritabanında Interconnect’in düğümleri nasıl


bağladığına ve kümenin depolama araçları üzerindeki paylaşılan veri
dosyaları üzerindeki erişimine yüksek seviyede bir bakıştır.

Şekil 2-1 Küme Veritabanı İşlemi için Küme Bileşenleri

121
Küme ve onun Interconnect’i depolama araçlarına ya da paylaşılan disk
alt-sisteme depolama alan ağı ile bağlıdır. Aşağıdaki bölümler düğümleri
ve Interconnect’i daha detaylı bir biçimde tanımlar:
• Düğümler ve Onların Bileşenleri
• Cluster Interconnect ve Interprocess Communication( Düğümden
Düğüme)

Düğümler ve Onların Bileşenleri

Bir düğümün ana bileşenleri şunlar:


• CPU- Bilgisayarın ana belleğinden okuyan ve ana belleğine yazan
bir ana işleme bileşenidir.
• Bellek –Veriyi arabelleğe alma ve programatik yürütme için
kullanılan bileşendir.
• Interconnect- Düğümler arasındaki iletişim bağlantısıdır.

122
• Storage (Depolama Sistemi) –Veriyi depolayan bir araçtır. Bu;
içeriklerini değiştirmek için okuma-yazma işlemleri tarafından
erişilmesi gereken genellikle kalıcı veri deposudur.

Bu bileşenleri çok farklı konfigürasyonlarla satın alabilirsiniz. Bu


bileşenler düğümlerin veri depolarına ve anabelleğe nasıl erişeceğini
belirler.

NOT:Oracle Corporation, Real Aplication Clusters’ı, Real Aplication


Clusters veritabanları ile kullanmak için onaylanmış konfigürasyonlarla
birlikte konuşlandırmanızı tavsiye eder.

Cluster Interconnect ve Interprocess Communication (Düğümden


Düğüme)

Real Aplication Clusters, düğümler arası iletişim için yüksek hızlı


interprocess communication (IPC) bileşenlerini kullanır. IPC, Real
Aplication Clusters ortamlarının Oracle instance’ları arası mesajların
iletmesi için gerekli arabirim ve protokolleri tanımlar. Mesajlar, bu
arabirimdeki temel iletişim birimleridir. IPC’nin ana fonksiyonu,
asenkron ve mesaj kuyruğu modeli oluşturmasıdır.

Bellek, Interconnect ve Depolama

Bütün veritabanları genelde aynı yolla CPU’ları kullanır. Fakat;


belleğin, depolamanın ve Interconnectnın farklı konfigürasyonlarını
farklı amaçlar için konuşlandırabilirsiniz. Real Aplication Clusters’ı
konuşlandırdığınız mimari, sizin işleme amaçlarınıza bağlıdır.

123
Küme veritabanındaki her bir düğümün bir ya da daha fazla CPU’ları
vardır. Çoklu CPU’lu düğümler tipik olarak ana belleği paylaşmak için
konfigüre edilmiştir. Bu size daha ölçeklenebilir bir sistem sağlar.

Yüksek Hızlı IPC Interconnect

Yüksek hızlı Interprocess Communication (IPC) Interconnectsı bir


yüksek geniş bantlı, kümedeki düğümleri bağlayan düşük gecikmeli bir
iletişim kolaylığıdır. Interconnect her bir düğümün kaynaklara erişimini
koordine etmek için mesajların ve diğer küme iletişimleri trafiğinin
yönünü belirler.

Interconnect için Ethernet, bir Fiber Distributed Data


Interface(FDDI), ya da diğer uygun donanımları kullanabilirsiniz. Ana
Interconnectnızda aksama olma durumları için, yedek bir Interconnect
yüklenmesini de hesaba katmalısınız. Yedek Interconnect, yüksek
kullanılırlığı arttırır, Interconnectnın başarısızlıktaki tek nokta olma
olasılığını azaltır.
Real Application Clusters’lar, user-mode(kullanıcı-modlu) ve memory-
mapped(eşlenmiş bellek) IPC’leri destekler. Bu tür IPC’ler, CPU
tüketimini ve IPC gecikmelerini oldukça azaltır.

Paylaşılan Disk Deposu ve Cluster File System(Küme Dosya


Sistemi) Avantajı

Real Application Clusters’lar, Oracle anlarına veritabanına eşzamanlı


erişimi vermek için bütün düğümlerin aynı anda paylaşılan disklere
erişimine ihtiyaç duymaktadırlar. Paylaşılan disk altsistemi
gerçekleştirilmesi işletim sisteminize bağlıdır: bir cluster file
system(küme dosya sistemi) kullanabilir veya dosyaları işlenmemiş

124
makinalar üzerine koyabilirsiniz. Cluster File System (Küme dosya
sistemi), Real Application Clusters’ların kurulumunu ve yönetimini
büyük ölçüde kolaylaştırır.
Real Application Clusters’lar için bellek erişim konfigürasyonları
belirgin biçimde tekdüzedir. Bu, kümedeki her düğüm için belleğe
erişimde gereken ek yükün aynı olduğu anlamına gelir. Bununla birlikte,
tipik depo erişim konfigürasyonları hem birbiçimli hemde tersi
olmaktadır. Kullandığınız depo erişim konfigürasyonu, bellek
konfigürasyonunuzdan bağımsızdır.
Bellek konfigürasyonlarında olduğu gibi, çoğu sistemler Real
Application Clusters veritabanları için tekdüze disk erişimini kullanırlar.
Bir küme veritabanındaki tekdüze disk erişim konfigürasyonları, disk
erişim yönetimini kolaylaştırır.

125
REAL APPLICATION CLUSTERS YAZILIMI MİMARİSİ

Bu ünitede, Oracle Real Application Cluster özgü mimari bileşenler


tanımlanacaktır. Bu bileşenlerden bazıları, Oracle veritabanı yazılımı ile
temin edilebilirken bazıları da vendor-specific(sağlayıcıya özgüdür)’tir.
Bu ünitedeki başlıca konular Real Application Cluster bileşenlerini
tanımlamaktadır. Bunlar:

• Operating System-Dependent Clusterware


• Real Application Cluster Paylaşılan Disk Bileşenleri
• Real Application Cluster-Specific Daemon ve Instance
Processes(Real Application Cluster’a özgü İşletim Sistemlerinde Geri
Planda Çalışan Program ve Instance İşlemleri)
• Global Cache and Global Enqueue Service(Genel ön Arabellek ve
Kuyruğa Ekleme Servisi)

OPERATING SYSTEM-DEPENDENT(OSD) CLUSTERWARE

Real Aplication Clusters işlemi, işletim sistemine erişmek için, kümeye


ilişkin hizmet işlemi(örneğin Oracle instance başlatımı ve kapatımı ile
ilgili bilgi iletimi) için Operating System-Dependent clusterware’i
(OSD) kullanır. Üreticiler OSD clusterware’i Unix işletim sistemi için,
Oracle ise OSD clusterware’i Windows NT/2000 işletim sistemleri için
sağlamaktadır. OSD’nin altbileşenleri:

• Cluster Manager(Küme yöneticisi)


• Düğüm monitor(gözleyicisi)
• Interconnect

Cluster Manager(Küme Yöneticisi)

126
Cluster Manager(CM), düğümler arası işlemleri koordine etmek için
Interconnect üzerinden düğümler arası iletilen mesajlaşmayı
inceleyebilir. Cluster Manager, cluster manager’ın üyeleri olan kümeye,
düğümlere ve Oracle anlarına genel bir izlenim imkanı sunar. Cluster
manager küme üyeliğini de kontrol eder.

Düğüm Monitor(gözleyicisi)

Cluster manager, düğüm monitor(gözleyicisi) olarak bilinen bir


fonksiyonellik altkümesi içerir. Düğüm monitor(gözleyicisi),
düğümlerde dahil olmak üzere kümedeki her kaynağın, donanım ve
yazılım Interconnectsının, ve paylaşılan diskin durumunu sorgular.
Oracle-supplied(dan sağlanan) Windows için cluster manager’da, düğüm
monitor(gözleyicisi) Oracle anlarını da sorgular.

Cluster manager, küme kaynaklarının durumunda değişiklik olduğu


zaman istemcileri ve Oracle sunucusunu bilgilendirir. Bunun nedeni ise;

Real Application clusters’lar,


varolan bir Oracle instancenın küme veritabanından bağlantısı koptuğu
zaman veya bağlı bir Oracle instance cluster manager ile birlikte
kaydedildiği zaman küme veritabanını tekrar konfigüre ederek küme
üyeliğini yönetir.

Düğüm monitörü cluster manager’a sunduğu bazı himetler:

• Düğüm yönetimi arabirim modülleri sağlar.


• Düğümlerin üyelik durumunu, küme üzerinde düğüm üyeliğinin
genel bir görünümünü sağlayarak araştırır ve bulur.

127
• Aktif düğümlerdeki durum değişimlerini ortaya çıkarır ve teşhis
eder, ve bu değişim olayları hakkında bilgiyi bildirir.

Interconnect

Interprocess communication (IPC) yazılımı, yada Interconnectsı, bir


diğer anahtar OSD bileşenidir. IPC, düğümler arası mesajlaşmayı sağlar.
Real Application Cluster’lar Oracle anları arası veri bloklarını aktarmak
için IPC kullanırlar.

REAL APPLICATION CLUSTERS’ın PAYLAŞILAN DİSK


BİLEŞENLERİ

Real Application Clusters veritabanları, tek Oracle instance’ına sahip


Oracle veritabanları ile aynı bileşenlere sahiptir. Bu durum, bir yada
daha fazla kontrol dosyalarını, bir dizi online redo log dosyalarını, isteğe
bağlı arşiv log dosyalarını, veri dosyalarını ve bunun gibilerini
kapsamaktadır. Böylece, her redo log grubunun herbir online redo log
üyesi için, herbir kontrol ve veri dosyası için, paylaşılan diske giriş
imkanı sağlamanız gerekir. Paylaşılan diski, undo tablespace(geri alım
tablo alanı) veri dosyasının tavsiye edilen otomatik geri alım yönetimi
özelliğini kullanması için konfigüre etmeniz de gereklidir.

Windows NT ve Windows 2000 işletim sistemlerinde(sadece bu


sistemlerde), Oracle’ın küme konfigürasyonu bilgilerini depoladığı bir
voting yada quorum disk’ e ortak erişim imkanı sağlamanız gereklidir.
Bu diski bir Cluster File System (CFS) üzerine veya bir işlenmemiş
makine üzerine yerleştirebilirsiniz. Düğüm monitor(gözleyicisi) küme
konfigürasyonlarını yönetebilmesi için quorum disk konfigürasyonunu
kullanır.

128
Oracle konfigürasyon ve yönetim araçları paylaşılan diskte depolanan
küme konfigürasyon verisine gereksinim duyar. Database Configüration
Assistant’ı (DBCA),Oracle Enterprise Management’ı(EM) ve Server
Control(SRVCTL) komut satırı yönetsel yardımcıyı kullanmak için
paylaşılan disk kaynağını konfigüre etmelisiniz. Windows NT ve
Windows 2000 üzerinde, voting disk ve konfigürasyon verisi aynı disk
kaynağını paylaşır.

Eğer sunucu parametre dosyasını kullanırsanız, parametre dosyası


yönetimi Real Aplication Clusters’da basitleştirilmiştir. Bu dosyayı,
genel anlamda yönetmek ve Oracle instance’ına özgü parametre
ayarlarını bir dosya içinde bulundurmak için paylaşılan bir diske
depolayın.

REAL APPLICATION CLUSTER-SPECIFIC DAEMON VE


INSTANCE PROSES

Bu kısımda, Real Application Cluster-Specific daemon ve instance


proses aşağıdaki ana başlıklar altında tanımlanacaktır.

• The Global Services Daemon


• Instance Proses Specific to Real Application Clusters

THE GLOBAL SERVICES DAEMON

The Global Services Daemon(GSD), her düğüm üzerinde her


düğüme bir GSD proses olacak şekilde çalışır. GSD, istemcilerden(
örneğin DBCA, EM ve SRVCTL hizmeti) gelen istekleri almak ve
yönetsel iş görevlerini(örneğin Oracle instancenı başlatma ve
kapatma gibi) yürütmek için cluster manager ile eşgüdümlüdür.GSD,

129
bir Oracle instance arkaplan proses’i değildir. Dolaysıyla, Oracle
instance ile birlikte başlatılmaktadır.

INSTANCE PROSES SPECIFIC TO REAL APPLICATION


CLUSTERS

Bir Real Application Cluster veritabanı, tek Oracle instance’ına sahip bir
Oracle veritabanı ile aynı proses’lere(Örneğin, proses monitor(PMON),
database writer(DBWRn), log writer(LGWR), ve bunlara benzer
proses’ler) sahiptir. Bunlara ek olarak Real Application Cluster-specific
prosesler(süreçler) Şekil 3-1 de gösterilmiştir. Bu proses’lerin ve bu
proses’lerin oluşturduğu trace(izleme) dosyalarının esas isimleri
platforma bağımlıdır.

• Global Cache Service Processes(LMSn), n mesajlaşma trafiğine


bağlı olarak 0 ile 9 aralığında, uzaktaki Oracle anlarına gönderilen
mesajların akışını kontrol eder ve global veri bloğu erişimini yönetir.
LMSn proses’leri, farklı Oracle anlarının ön arabellekleri arasında blok
görüntüsünü de iletir. Bu işlem Cache Fusion’ın özelliklerinden bir
bölümüdür.
• The Global Enqueue Service Monitor(LMON), küme üzerinde
kaynakları ve global kuyruğa eklemeleri gözlemler (monitors) ve global
enqueue(kuyruğa ekleme) kurtarma işlemlerini yapar. Enqueues, satır
güncelleşimini sıralandıran paylaşılan bellek yapılarıdır.
• The Global Enqueu Service Daemon(LMD), global enqueue ve
global kaynak erişimini yönetir. Her bir Oracle instancenın içinde
bulunan LMD proses, uzaktan gelen kaynak isteklerini yönetir.
• Lock Proses(LCK), non-Cache Fusion kaynağı isteklerini(örneğin
library(kitaplık)) ve satır önbellek isteklerini yönetir.

130
• The Diagnosability Daemon(DIAG), Oracle anlarındaki proses
başarısızlıkları ile ilgili diagonistic(teşhis edilmiş) veriyi yakalar. İşletim
sisteminde geri planda çalışan bu programın işlemleri (the operations of
this daemon) otomatik hale getirilmiş ve yaptığı etkinlikleri kaydetmek
için bir uyarı log dosyasını güncellemektedir.

Şekil 3-1 Real Application Cluster-Specific Instance proses

GLOBAL ÖNBELLEK VE GLOBAL ENQUEUE SERVİSİ

The Global Cache Service(GCS) ve Global Enqueue Service(GES),


paylaşılan veritabanına ve veritabanındaki paylaşılan kaynaklara aynı

131
anda erişimi koordine eden Real Application Clusters’ların tümleşik
bileşenleridir. Bu servisler, tutarlılığı ve veri bütünlüğünü korur. Her
Oracle instancendaki GCS ve GES, cluster manager’da dahil olmak
üzere, küme içinde ve Oracle anları arası iletişimi sağlamak için IPC
kullanır. Bu kısımda GES ve GCS’nin bazı özellikleri tanımlanacaktır.

• Uygulama Saydamlığı
• Dağılmış Mimarili Global Kaynak Dizini
• Resource Mastering and Affinity
• Cluster manager ile GCS ve GES etkileşimi

Uygulama Saydamlığı

GES ve GCS tarafından gerçekleşen kaynaklara erişim koordinasyonu,


uygulamalara saydamdır. Real Application Clusters’lardaki uygulamalar
tek Oracle instance’ına sahip Oracle veritabanlarında bulunan aynı
eşzamanlı mekanizmaları kullanırlar.

Dağılmış Mimarili Global Kaynak Dizini

GCS ve GES, kaynaklarla ilgili bilgiyi kaydetmek için Global Kaynak


Dizinini korur. Global Kaynak Dizini bellekte bulunmaktadır. Bu
dağılmış mimaride, her düğüm dizindeki bilgi yönetimine katılır. Bu
dağılmış düzen, fault tolerance(hata müsamahası) ve çalıştırma
zamanındaki yüksek performans sağlar.

GCS ve GES, bir çok düğüm aksasa bile, Global Kaynak Dizininin
bütünlüğünü temin eder. Eğer en az bir Oracle instance, onarım bittikten
sonra aktif durumda ise paylaşılan veritabanı her zaman erişilebilir
durumdadır. Kaynak dizininin fault tolerance(hata müsamahası), Real

132
Application Clusters’lara Oracle anlarını herhangi bir anda ve sıra
dikkate almaksızın durdurmak başlatmak için imkan sağlar.

Resource Mastering ve Affinity

The Global Cache ve Global Enqueue Services, bir kümedeki her


kaynak ile ilgili bilgiyi tutar. GCS ve GES, bir kaynağa özgü tüm
bilgileri yönetmek için bir Oracle instance tayin ederler. Bu Oarcle anına
Resource Master denir. GCS, resource mastering’ı peryodik olarak
hesaplar ve veri erişim düzenlerine göre resource master’ı değiştirir. Bu,
hem ağ trafiğini hemde kaynak edinme zamanını azaltır.

CLUSTER MANGER İLE GCS VE GES ETKİLEŞİMİ

GCS ve GES, cluster manager’dan bağımsız çalışırlar. Bununla


birlikte; bu servisler, kümedeki Oracle anlarının durumları ile ilgili
yerinde ve doğru bilgi için cluster manager’a güvenirler. Eğer bu
servisler Oracle instance’ına özgü bilgiyi elde edemezlerse, Oracle
yanıt vermeyen bu Oracle instanceı kapatır. Bu durum Real
Application Clusters veritabanlarının bütünlüğünden emin
olunduğunu göstermektedir, çünkü her Oracle instance paylaşılan
diske erişimi koordine etmek için diğer tüm aktif Oracle
instancelarından haberdar olması gereklidir.

133
REAL APLICATION CLUSTERS’DA ÖLÇEKLENİRLİK

Bu böümde Real Aplication Clusters’ın ölçeklenirlik özellikleri


hakkında detaylardan bahsedilecektir. Ayrıca bu bölümde yer alacak
konular şunladır:

• Real Aplication Clusters’ın Ölçeklenirlik Özellikleri


• Real Aplication Clusters’tan Faydalanan Bütün Sistem Çeşitleri
• Ölçeklenirlik Düzeyleri

Real Aplication Clusters’ın Ölçeklenirlik Özellikleri

Yüksek süreklilik düzeylerini koruyan ve uygulama performansını


arttıran birçok özelliği kullanarak Real Aplication Clusters’ı
uygulayabilirsiniz. Bu özellikler şunlardır:

• Düğümler arasındaki iş yüklerini, ağır kullanım periyodları


boyunca çoklu sunucu bağlantılarını kontrol ederek dengeler.
• Real Aplication Clusters veritabanınız ve istemciler arasında kalıcı,
hata toleransı olan bağlantıları sağlar.
• Eğer önceden konfigüre edilmiş veritabanlarından biri ile Real
Aplication Clusters’ı yüklerseniz, o zaman Database Configuration
Assisstant(DBCA) otomatik olarak bu özelliklerin çoğunu konfigüre
eder.

Real Aplıcatıon Clusters’tan FAYDALANAN Bütün Sistem Çeşitleri

134
Bu bölümde “niçin bütün sistem çeşitleri Real Aplication Clusters’dan
faydalanır” sorusunun yanıtı aranacaktır. Ayrıca aşağıdaki konulara
değinilecektir.

• Hareket Sistemleri ve Real Aplication Clusters


• Veri Ambarı Sistemleri ve Real Aplication Clusters

Note: Eğer uygulamanız iyi dizayn edilmiş ve tek Oracle instance’ına


sahip Oracle veritabanı üzerinde etkili bir şekilde çalışıyorsa, Real
Aplication Clusters’da çok daha iyi ölçeklenecektir.

Hareket Sistemleri ve Real Applicaiton Clusters

Hareket sistemleri, göreceli olarak kısa veritabanı güncelleme


hareketleri tarafından karakterize edilmiştir. Hareket sistemleri için
yapılan ( e-business ve traditional online transaction processing[OLTP]
sistemlerini içeren) uygulamalar, Real Aplication Clusters üzerinde
daha iyi uygulanır; çünkü Real Aplaication Clusters aynı oranda iyi bir
yükselti sağlar. Cache Fusion, ek yük çıkarmadan çoklu Oracle
anlarında güncelleştirme yapıbilmesini sağlar.

Fazla kullanıcı sisteme bağlandıkça hareket sistemi daha fazla işlemi


yürüttüğü için, kümeye dinamik olarak düğüm ekleyerek kapasiteyi
arttırabilirsiniz. Fakat iyi bir şekilde dizayn edilmemiş sistemler ne tek
Oracle instance’ına sahip Oracle veritabanı üzerinde ne de Real
Aplication cluster veritabanları üzerinde iyi ölçekleme yapamaz - iyi
dizayn edilmemiş uygulamalar istek arttıkça muhtemelen düşük bir
performans gösterecektir.

135
Veri Ambarı Sistemleri ve Real Application Clusters’lar

Veri ambarı sistemleri, Real Aplication Clusters üzerinde iyi performans


gösterir, çünkü; düşük güncelleme aktivitelirine sahip uygulamalar
veritabanına , ekstra ek yük olmadan farklı Oracle anlarıyla erişebilir.
Eğer veri blokları değiştirilmemişse, o zaman çoklu Oracle anları aynı
blokları kendi ön arabelleklerinin içine okuyabilir ve ekstra I/O
olmaksızın bloklar üzerindeki sorgulamayı gerçekleştirebilir. Veri
ambarı sistemleri genellikle yukarı ölçeklemelerden(scale up) faydalanır
ve de hızlanma tecrübesi kazanır.

Oracle Parallel Execution in Real Application Clusters

Real Aplication Clusters, paralel yürütüm için çerçeve sağlar. Paralel


yürütüm Real Aplication Clusters’da etkili bir şekilde çalışır. Çünkü bir
büyük SQL komutunun kısımlarını çoklu Oracle anları üzerine
dağıtabilir. Hareket, oldukça çabuk tamamlanır; çünkü çoklu CPU’lar
tarafından yürütülür.

Real Application Cluster’larda; Oracle, paralel yürütüm sunucu


proses’lerini yalnızca bir Oracle instance üzerinde mi yoksa çoklu
Oracle anları üzerinde mi çalıştıracağını çalıştırma zamanında belirler.
Genel olarak Oracle yeterli kaynaklar mevcut olduğu zaman sadece bir
Oracle instance kullanmaya çalışır. Bu cross-instance mesaj trafiğini
azaltır.

ÖLÇEKLENİRLİK SEVİYELERİ

Küme veritabanlarının gerçekleşirilmesi, aşağıda sıralanmış seviyelerde


en iyi ölçeklenirliği gerektirir. Bu seviyeler:

136
• Ağ Ölçeklenirliği
• Ağ Ölçeklenirliği ve İstemci / Sunucu Bağlanırlığı
• İşletim Sistemi Ölçeklenirliği

Note: Uygun bir şekilde dizayn edilmemiş uygulamalar, bir sistemin


ölçeklenirlik potansiyelini tam olarak kulanamayabilir. Aynı şekilde,
uygulamalarınızın ne kadar iyi ölçeklenebilirliği göz önüne alındığında,
eğer uygulamalarınızı ölçeklemeyen donanıma konuşlandırmaya
çalışırsanız yüksek performans elde edemeyeceksiniz.

Ağ Ölçeklenirliği

Interconnect, küme ölçeklenirliğinde bir anahtar faktördür. Yani, ister


yüksek hızlı bir bus isterse düşük hızlı bir eternet bağlantısı olsun, her
sistemin CPU’lara bir tane bağlantısı olmalıdır. Öyleyse, bant genişliği
ve Interconnectnın gecikme süresi donanımın ölçeklenirliğini belirler.

Bant Genişliğinin ve Gecikme Süresinin Fonksiyonu olarak Ağ


Ölçeklenirliği

Donanım ölçeklenirliği çok düşük gecikme gerektirir ve çoğu


Interconnectların Real Aplication Clusters düğümleri arası işlemler için
yeterli bant genişliğine sahip olması gerekir. Diğer düğümler arası
işlemler, paralel yürütme gibi, geniş bant genişliğine de güvenir.

Ağ Ölçeklenirliği ve Sunucu / İstemci Bağlanırlığı

Real aplication Clusters’da, sunucu / istemci bağlantıları bazı alt


bileşenler kullanarak kurulmuştur. Bir istemci hedef düğüm üzerinde yer
alan bir dinleyici işlemine bağlantı isteyeğini sunar. Dinleyici bir

137
istemcinin bağlantısını , istemcinin bazı faktörlere dayalı belirli bir
düğüme erişebilmesi için, onaylar. Dinleyicinin bağlantıyı nasıl
onaylayacağı, aşağıda ana başlıklar altında tanımlanan bağlantı
seçeneklerini nasıl konfigüre ettiğinize bağlıdır.

• Bağlantı Yük Dengeleme Özelliği


• Geliştirilmiş Ağ Ölçeklenirliği ve Paylaşılan Sunucu Özelliği

Bağlantı Yük Dengeleme Özelliği

Bağlantı yük dengeleme özelliği, çoklu Oracle anlarının ve


dispatchers’ların olduğu Real Application Clusters ortamlarda
olağanüstü yararlar sağlar. Bağlantı yük dengeleme, aynı servis için
paylaşılan sunucu dispatchers ve çeşitli Oracle anları arasındaki
bağlantıların sayısını dengeleyerek performansı arttırır. Eğer
uygulamalarınız bölünmüşse, bu özelliği kullanma isteği
duymayabilirsiniz.

Servise registration’ın, uzak dinleyicilerle cross-register yapabilme


özelliği olduğu için, bir dinleyici her zaman bütün Oracle anlarından
haberdardır. Bu yüzden bir dinleyici belirli bir servis için gelen istemci
isteğini en az yüklü Oracle anlarına ve dispatcher’lara gönderebilir.
Servise registration, connect time failover ve paylaşılan bir sunucuyla ya
da onsuz kullanabileceğiniz istemci yük dengelemeyi kolaylaştırır.
Ayrıca, Real Aplication Clusters veritabanınızdan düğüm ekleyip
çıkardığınız zaman, Oracle yük dengeleme bağlantısını kontrol eden
başlatma parametrelerini dinamik olarak günceller.

Çoklu Dinleyiciler için Connect –Time Failover

138
Servise registration, bir Oracle instancenın çalışıp çalışmadığına dair
dinleyicileri bilgilendirir. Bu, çoklu dinleyiciler bir servisi
desteklediği zaman, connect-time failover’ı sağlar. Bu özelliği
kullanmak için, ilk dinleyici bağlantısında hata olursa istemci
isteklerini farklı bir dinleyiciye fail over (adres devri) yapmak için bir
istemciyi konfigüre edin. İstemci bir dinleyiciye başarılı bir şekilde
bağlanıncaya kadar tekrar bağlantı yapmaya çalışır. Eğer bir Oracle
instancenda hata oluşursa o zaman dinleyici ağ hatası döndürür.

Çoklu Dinleyiciler için İstemci Yük Dengeleme ve Bağlantı Yük


Yengeleme

Oracle Net, istemci yük dengeleme ve bağlantı yük dengelemeyi


sağlamaktadır. Bir ya da daha fazla dinleyici bir servisi desteklediği
zaman, bir istemci bağlantı isteğini çeşitli dinleyicilere rastgele
gönderebilir. Bağlantı isteklerinin gelişigüzel özelliği, tek bir dinleyiciye
fazla yüklenmeyi önlemek için yükü dağıtır.

Yük dengelemeye ek olarak, eğer bağlantı rastgele seçilen bir dinleyici


ile yapılamazsa, istemciler bağlantı isteğinin otomatik olarak belirli bir
dinleyiciye fail over yapmasını açıkça belirtebilirler. Bir bağlantı
başarısız olduğunda, ya belirtilen dinleyici up(açık) değildir, yada
instance up(açık) değildir ve bunun sonucunda dinleyici bağlantıyı kabul
edemez.

İstemci Yükü ve Bağlantı Yükü Dengeleme Konfigürasyonu

İstemci yük dengelemeyi çalışır kılmak için başlangıç parametre


dosyanızda ve tnsnames.ora dosyasında bir servis konfigüre edin. Bunu
yapmak için, LOAD_BALANCE parametresini ON, YES ya da

139
TRUE’ya ayarlayıp ve bağlantı tanımlayıcısınada aynı servis ismini
verin.

Note: Oracle Net, servis bilgisini otomatik olarak kaydetmek için


PMON işlemini kullanır. Bu yüzden statik Oracle instance bilgili bir
listener.ora dosyasını değiştirmenize gerek yoktur.

Bağlantı yükü dengelemesinde, her bir düğümdeki dispatcher’lara


yapılan bağlantılar aktif bağlantıların sayısına dayanır. Oracle Net, yeni
bağlantıları daha az bağlantıların ve daha düşük işlem yükünün olduğu
düğümlere tahsis eder. Eğer paylaşılan sunucuları konfigüre ettiyseniz, o
zaman Oracle Net daha az yüklü dispathcher’lara bağlar.

Note: İstemciler ölçeklenir bir şekilde sunucu makinelerine bağlanması


gerekmektedir. Bu şu anlama gelir:Ağınız da ölçeklenir olmalı.

BÖLÜMLENMİŞ TABLOLAR VE İNDEKSLER

Bu bölümde, bölümlenmiş tablolar and indeksler (partitioned tables and


indexes) anlatılacaktır. Ünite, şu konuları kapsamaktadır.

140
• Bölümlemeye giriş
• Bölümleme yöntemleri
• Bölümlenmiş indeksler
• Performansı arttırmak için Bölümleme

Note: Oracle, bölümlemeyi sadece tablolar, tablolar üzerindeki


indeksler, materialized view’lerde ve materialized view üzerindeki
indekslerde destekler. Oracle, kümelenmiş tabloların veya kümelenmiş
tablolar (clustered tables) üzerindeki indekslerin bölümlenmesini
desteklemez.

BÖLÜMLEMEYE GİRİŞ

Bölümleme (partitioning), çok büyük tabloları ve indeksleri bölümler


adı altında daha küçük ve yönetilebilir parçalara ayrıştırmanıza izin
141
vererek desteklemedeki anahtar konulara hitabeder. Bölümlenmiş
tablolara erişmek için SQL(yapılandırılmış sorgu dili) sorgularının ve
DML(veri işleme dili) deyimlerinin değiştirilmesine gerek yoktur.
Bununla birlikte, bölmeler belirlendikten sonra, DDL deyimleri bütün
tablolardan veya indekslerden ziyade özgün bölmelere erişebilir ve
işleyebilir. Bu şekilde bölümleme ile büyük veritabanı nesnelerinin
yönetilebilirliği kolaylaştırılmıştır.Ayrıca, bölümleme uygulamalarınıza
tamamen saydamdır.

Bir tablonun veya bir indeksin her bölmesi aynı mantıksal


attribute(özniteliklere) sahip olmalıdır.(Örneğin kolon ismi, veri tipleri,
ve constraints(kısıtlar)). Fakat, her bölüm ayrı fiziksel özniteliklere sahip
olabilir.Örneğin pctfree, pctused, ve tablo alanları (tablespace).

Bölümleme çok farklı tiplerdeki, bilhassa büyük hacimli verileri yöneten


uygulamalar için faydalıdır. Bölümleme yöntemi, veri ambarı sistemleri
için performans ve kolay yönetim, OLTP sistemleri için ise kolay
yönetim ve süreklilik avantajları sağlamaktadır.

Not: Bölümlenmiş bir nesnenin tüm bölümleri aynı blok büyüklüğüne


sahip tablo alanlarında tutulurlar.

Bölümleme şu avantajları sunmaktadır.

• Bölümleme; veri yükleme, indeks yaratımı ve yeniden inşaası, ve


yedekleme/onarım gibi veri yönetimi işlemlerini tüm tablo üzerinden
ziyade bölüm seviyesinde yapma imkanı sağlar. Dolayısıyla bu
işlemlerin çok daha hızlı gerçekleştirilmesi sağlanır.
• Bölümleme, sorgu performansını geliştirir. Birçok durumda, bir
sorgunun sonuçları tüm tablodan ziyade bir bölüm altkümesine erişimle

142
elde edilebilir. Bazı sorgular için, bölüm eliminasyonu (partition
elimination) olarak adlandırılan bu teknik çok yüksek performans
kazançları sağlar.
• Bölümleme, bakım işlemleri için planlanan kesinti süresinin
etkisini önemli ölçüde azaltır.
• Bölüm bakım işlemlerininbölüm bağımsız oluşu, aynı tablonun
veya indeksin farklı bölümleri üzerinde eşzamanlı bakım işlemleri
yapma imkanı sağlar. Bölümler üzerinde bakım işlemlerinden
etkilenmeyen, eşzamanlı SELECT ve DML işlemleri çalıştıralabilir.
• Eğer bakım ve onarım süresini, ve başarısızlıkların etkisini
azaltmak için kritik tablolar ve indeksler bölümlere ayrılırsa,
bölümleme veritabanlarının sürekliliğini arttırır.
• Uygulamalarınızda herhangi bir değişiklik yapmaya gerek
kalmadan bölümleme gerçekleştirilebilir. Örneğin; tabloya erişen hiçbir
SELECT deyimini veya DML deyimini değiştirmeye ihtiyaç duymadan
bölümlenmemiş bir tabloyu bölümlenmiş bir tabloya dönüştürebilir.
Bölümlemeden faydalanmak için uygulama kodunu tekrar yazmanıza
gerek yoktur.

Şekil 11-1, bölümlenmiş tabloların bölümlenmemiş tablolara göre


farklılığını gösteren bir grakfiksel görünüm sunmaktadır.

Şekil 11-1 Bölümlenmiş Tabloların Görünümü

143
Bölme Anahtarı

Bölümlenmiş bir tablodaki herbir kayıt, belirli bir şekilde tek bir bölüme
atanır. Bölüm anahtarı, her kayıt için bölümü belirleyen bir veya daha
fazla kolonlar kümesidir. Oracle9i; ekleme, güncelleme, ve silme
işlemlerini bölüm anahtarı ile otomatik olarak uygun bölüme
yönlendirir.Bir bölüm anahtarı:

• 1 den 16 ‘ya kadar kolonların sıralı listesinden oluşur.


• LEVEL, ROWID, veya MLSLABEL pseudocolumn(sözde
kolonlar) veya ROWID tipinde bir kolon içermez.
• NULL değer alabilen kolonlar içermez.
Bölümlenmiş Tablolar

Tablolar, 64,000 ayrı bölüme kadar bölümlenebilir. LONG veya LONG


RAW veri tipine sahip kolonlar içeren tablolar haricindeki bütün tablolar

144
bölümlenebilir. CLOB veya BLOB veri tiplerine sahip kolonlar içeren
tablolar bölümlenebilmektedir.

Bölümlenmiş İndeks-Organize Tablolar (Partitioned Indexed-


Organized Tables)

Bölümleme, indeks-organize tablolar için de uygulanabilir. Bu özellik,


indeks-organize tablolar için gelişmiş yönetilebilirliği, sürekliliğı ve
performansı sağlama açısından çok faydalıdır. Ayrıca, indeks-organize
tabloları kullanan veri cartridges(kartuşları) depolanmış verilerini
bölümleyebilme yeteneğinden yararlanabilirler. Bunun en genel
örnekleri, Image ve interMedia cartridge’leridir.

Index-organize bir tabloyu bölümlerken

• Sadece range ve hash bölümleme desteklenmektedir.


• Bölüm kolonlarının, birincil anahtar kolonlarının bir altkümesi
olması gereklidir.
• İkincil indeks, lokal veya global olarak bölümlenebilir.
• OVERFLOW veri segmentleri her zaman için tablo bölümleri ile
eşit bölümlenir.

BÖLÜMLEME YÖNTEMLERİ

Oracle, şu bölümleme yöntemlerini destekler;

145
• Aralıklı (Range) Bölümleme
• Liste Bölümleme
• Hash Bölümleme
• Birleşik (Composite) Bölümleme

Şekil 11-2, bölümleme yöntemlerinin grafiksel bir görünümünü sunmaktadır.

Şekil 11-2 Liste, Aralıklı, ve Hash Bölümleme

Birleşik bölümleme, diğer bölümleme yöntemlerinin birleşimidir.


Oracle, range-hash ve range-liste birleşimi bölümlemeyi destekler.

Şekil 11-3, range-hash ve range-liste birleşimi bölümlemenin grafiksel


bir görünümünü sunmaktadır.

Şekil 11-3 Birleşik Bölümleme

146
Aralıklı (Range) Bölümleme

Range bölümleme, herbir bölme için oluşturduğunuz bölme anahtarı


aralığı esas alınarak veriyi bölümlerle eşleştirir. Range bölümleme,
bölümlemenin en çok yaygın olan tipi olmakta ve genelde tarih
kolonlarında kullanılmaktadır. Örneğin, satış verisini aylık bölümlere
parçalanabilir.

Range bölümlemeyi kullanırken şu kurallar dikkate alınmalıdır:

• Herbir bölüm, bölüm içine dahil olmayan bir üst sınırı belirten bir
VALUES LESS THAN cümleciğine sahiptir. Böülüm anahtarı bu
literale eşit yada daha yüksek olan kayıtlar, bir sonraki bölüme
eklenmektedir.
• İlki hariç, bütün bölümler, bir önceki bölme üzerinde VALUES
LESS THAN cümleciği ile belirtilen alt sınıra sahiptir.
• MAXVALUE literali, en son bölme için tanımlanabilir.
MAXVALUE, bölüm anahtarı için herhangi diğer muhtemel
değerlerden daha yüksek değerleri(null değerde dahil olmak üzere),
sıralayan sanal sonsuz bir değeri temsil eder.
147
Bir sonraki bölümde tipik bir örnek verilmiştir. Komut, satis_tarihi
alanına göre range bölümleme yapılmış bir tablo
(satis_range)yaratmaktadır.

Aralıklı Bölümleme Örneği

CREATE TABLE satis_range


(satici_no NUMBER(5),
satici_adi VARCHAR2(30),
satis_miktari NUMBER(10),
satis_tarihi DATE)
PARTITION BY RANGE(satis_tarihi)
(
PARTITION satis_oca2000 VALUES LESS
THAN(TO_DATE('02/01/2000','DD/MM/YYYY')),
PARTITION satis_sub2000 VALUES LESS
THAN(TO_DATE('03/01/2000','DD/MM/YYYY')),
PARTITION satis_mar2000 VALUES LESS
THAN(TO_DATE('04/01/2000','DD/MM/YYYY')),
PARTITION satis_nis2000 VALUES LESS
THAN(TO_DATE('05/01/2000','DD/MM/YYYY'))
);

Liste Bölümleme

Liste bölümleme, satırların bölümlerle nasıl eşleştirileceği konusunda


belirgin bir şekilde kontrol imkanı sağlar. Bunu, herbir bölüm
tanımlanmasındaki bölümleme anahtarı için bir değerler listesi belirterek
yapabilirsiniz. Bu, bölümün değerlerin aralığı ile ilişkili olduğu range
bölümlemeden, bir hash fonksiyonun satır-bölüm eşleşmesini kontrol
148
ettiği hash bölümlemeden farklıdır. Liste bölümlemenin avantajı,
düzenlenmemiş ve ilişkisiz veri kümelerini doğal bir yol ile
gruplayabilir ve düzenleyebilir.

Liste bölümlemenin ayrıntıları en kolay bir örnekle anlatılabilir.


Diyelimki bir satış tablosunu bölgelere göre bölümlemek istiyorsunuz.
Bu, aşağıda örnekteki gibi, eyaletleri coğrafi yerlerine göre gruplama
anlamına gelir.

Liste Bölümleme Örneği

CREATE TABLE satis_listesi


(satici_no NUMBER(5),
satici_adi VARCHAR2(30),
satis_eyaleti VARCHAR2(20),
satis_miktari NUMBER(10),
satis_tarihi DATE)
PARTITION BY LIST(satis_eyaleti)
(
PARTITION satis_batı VALUES('California', 'Hawaii'),
PARTITION satis_dogu VALUES ('New York', 'Virginia', 'Florida'),
PARTITION satis_merkezi VALUES('Texas', 'Illinois')
PARTITION satis_diğerleri VALUES(DEFAULT)
);

Bir kayıt için bölümleme kolonu değerinin, bölümü tanımalayan


değerlerin kümesi içine düşüp düşmediğini kontrol ederek bir kayıt bir
bölüm ile eşlenir. Örneğin, eklenen satırlar şöyledir:

• (10, ‘Jones’, ‘Hawai’, 100, ’05-OCA-2000’), satis_bati bölmesi ile


eşlenir.

149
• (21, ‘Smith’, ‘Florida’, 150, ’15-OCA-2000’), satis_dogu bölmesi ile
eşlenir.
• (32, ‘Lee’, ‘Colorado’, 130, ’21-OCA-2000’), tablodaki herhangi bir
bölme ile eşlenmez.

Range ve Hash bölümlemeden farklı olarak, birden çok kolondan oluşan


bölüm anahtarları liste bölümleme için kullanılamaz. Eğer bir tablo liste
olarak bölümlenirse, bölümleme anahtarı tablonun sadece tek bir
kolonundan oluşabilir.

DEFAULT bölüm (default partition), liste bölümleme ile bölümlenmiş


bir tablo için default bir bölüm kullanarak bütün olası değerleri
belirtmekten zorunda kalmamanızı sağlar, böylece diğer herhangi bir
bölümle eşlenmeyen bütün satırlar bir hata oluşturmadan bu bölüme
aktarılır.

Hash Bölümleme

Hash (karma) bölümleme, range veya liste bölümlemeye elverişli


olmayan verinin kolay bölümlenmesini mümkün kılar. Hash bölümleme,
bunu basit bir syntax ile yapabilir ve uygulaması kolaydır. Aşağıdaki
durumlarda, hash bölümleme range bölümlemeye göre tercih
edilmelidir:

• Verinin ne kadarının verilen bir aralığa karşılık geleceğini önceden


bilmediğiniz durumlarda
• Ranhe bölümlerin büyüklüklerinin, esas itibariyle oldukça farklı
olabileceği durumlarda veya manual olarak dengelemenin zor olduğu
durumlarda
• Range bölümlemenin, verinin istenilmeyecek şekilde
kümelenmesine neden olabileceği durumlarda

150
• Performans özellikleri, örneğin paralel DML, bölüm eliminasyonu,
ve bölme düzeyinde join işlemlerinin (parition wise join) önemli olduğu
durumlarda

Bölümleri parçalama, drop etme veya birleştirme (merge) işlemleri hash


bölümlemeye uygulanmaz. Ancak tabloya ,yeni hash bölümler
eklenebilir ve bütünlenebilir (coalesced).

Hash Bölümleme Örneği

CREATE TABLE satis_hash


(satici_no NUMBER(5),
satici_adı VARCHAR2(30),
satis_miktari NUMBER(10),
hafta_no NUMBER(2))
PARTITION BY HASH(satici_no)
PARTITIONS 4
STORE IN (data1, data2, data3, data4);

Üstteki komut, satici_no alanına göre karma bölümlemesi yapılmış


satis_hash tablosunu yaratır.

Composite (Birleşik) Bölümleme

Birleşik bölümleme veriyi range metodu kullanarak bölümler, ve herbir


bölümü range veya liste yöntemi kullanarak alt bölümlere ayırır.
Birleşik range-hash bölümleme, range bölümlemenin gelişmiş
yönetilebilirlik avantajlarını ve hash bölümlemenin verinin düzgün

151
dağıtılması, striping ve paralellik avantajlarını sağlar. Birleşik range-liste
bölümleme, altbölümler için range bölümlemenin yönetilebilirliğini ve
liste bölümlemenin dışardan kolay kontrol edilebilmeözelliklerini sağlar.

Birleşik bölümleme yeni range bölümleri ekleme gibi tarihsel


operasyonlar için kullanılabilir, bununla birlikte DML işlemleri için
daha yüksek paralellik dereceleri sağlar ve alt-bölümler ile veri
dağılımın düzeyininin ince ayarlanmasını sağlar.

Range-Hash Composite (Birleşik) Bölümleme Örneği

CREATE TABLE satis_composite


(satici_no NUMBER(5),
satici_adı VARCHAR2(30),
satis_miktarı NUMBER(10),
satis_tarihi DATE)
PARTITION BY RANGE(satis_tarihi)
SUBPARTITION BY HASH(satici_no)
SUBPARTITION TEMPLATE(
SUBPARTITION sp1 TABLESPACE data1,
SUBPARTITION sp2 TABLESPACE data2,
SUBPARTITION sp3 TABLESPACE data3,
SUBPARTITION sp4 TABLESPACE data4)
(PARTITION satis_oca2000 VALUES LESS
THAN(TO_DATE('02/01/2000','DD/MM/YYYY'))
PARTITION satis_sub2000 VALUES LESS
THAN(TO_DATE('03/01/2000','DD/MM/YYYY'))
PARTITION satis_mar2000 VALUES LESS
THAN(TO_DATE('04/01/2000','DD/MM/YYYY'))
PARTITION satis_nis2000 VALUES LESS
THAN(TO_DATE('05/01/2000','DD/MM/YYYY'))

152
PARTITION satis_may2000 VALUES LESS
THAN(TO_DATE('06/01/2000','DD/MM/YYYY')));

Bu komut, satis_tarihi alanı üzerinde range bölümleme uygulanmış ve


satici_no alanı üzerinde hash altbölümleme uygulanmış, satis_composite
adında bir tablo yaratır. Bir template kullandığınız zaman; Oracle
altbölmeleri bölüm adı, altçizgi, ve template’deki altbölme adını
bitiştirerek adlandırır. Oracle bu altbölmeyi template’de belirtilen tablo
alanına yerleştirir. Bir önceki komutta, satis_oca2000_sp4 yaratılıp ve
data4 tablo alanına (tablespace) ve satis_oca2000_sp1 yaratılıp ve data1
tablo alanına yerleştirilmiştir. Aynı şekilde, satis_nis2000_sp4 yaratılıp,
data4 tablo alanına yerleştirilirken, satis_nis2000_sp1 yaratılıp ve data1
tablo alanına yerleştirilir. Şekil 11-4, bir önceki örneğin grafiksel bir
görünümünü sunmaktadır.

Şekil 11-4 Range-Hash

153
Range-Liste Birleşik Bölümleme Örneği

CREATE TABLE ikiaylık_bölgesel_satis


(deptno NUMBER,
adet_no VARCHAR2(20),
txn_tarihi DATE,
txn_miktarı NUMBER,
eyalet VARCHAR2(2))
PARTITION BY RANGE (txn_tarihi)
SUBPARTITION BY LIST (eyalet)
SUBPARTITION TEMPLATE(
SUBPARTITION dogu VALUES('NY', 'VA', 'FL') TABLESPACE ts1,
SUBPARTITION bati VALUES('CA', 'OR', 'HI') TABLESPACE ts2,
SUBPARTITION merkez VALUES('IL', 'TX', 'MO') TABLESPACE
ts3)
(
PARTITION ocasub_2000 VALUES LESS THAN (TO_DATE('1-
MAR-2000','DD-MON-YYYY')),
PARTITION marnis_2000 VALUES LESS THAN (TO_DATE('1-
MAY-2000','DD-MON-YYYY')),

154
PARTITION mayhaz_2000 VALUES LESS THAN (TO_DATE('1-
TEM-2000','DD-MON-YYYY'))
);

Bu komut, txn_tarihi alanı üzerinde aralıklı bölümlemesi yapılmış ve


eyalet alanı üzerinde liste altbölümleme yapılmış ikiaylık_bölgesel_satış
adında bir tablo yaratmaktadır. Bir template kullandığınız zaman; Oracle
alt bölmeleri bölme adı, altçizgi, ve template’deki alt bölme adını
bitiştirerek adlandırır. Oracle bu altbölmeyi template’de belirtilen tablo
alanına yerleştirir. Bir önceki komutta, ocaşub_2000_merkezi yaratılıp
ve ts3 tablo alanına yerleştirilirken, ocaşub_2000_doğu yaratılır ve ts1
tablo alanına yerleştirilir. Aynı şekilde, mayhaz_2000_merkezi yaratılıp
ve ts3 tablo alanına yerleştirilirken, mayhaz_2000_doğu yaratılır ve ts1
tablo alanına yerleştirilir. Şekil 11-5, ikiaylık_bölgesel_satış tablosunun
ve ona ait 9 altbölmenin grafiksel bir görünümünü sunmaktadır.

Şekil 11-5 Range-Liste Birleşik Bölümleme

155
Bir Tabloyu Bölümlerken

Bu bölümde bir tabloyu bölümlerken dikkat edilmesi gereken bazı


öneriler sunulmaktadır.

• 2GB’den büyük tablolar için her zaman bölümlemenin dikkate


alınması gereklidir.
• Tarihi (Historical) veri içeren tablolarda, yeni veri en yeni bölmeye
eklenir. Tarihi tabloya tipik bir örnek, sadece içinde bulunulan ayın
verisi güncellenebilir olan, geçmişteki 11 aylık verilerin sadece
okunmasına izin verilen tablolardır.

Bölümlenmiş İndeksler

Bölümlenmiş tablolardaki gibi; bölümlenmiş indeksler de yönetilebilirliği,


sürekliliği, performansı ve ölçeklenirliği geliştirir. İndeks hem bağımsız
bir şekilde bölümlenebildiği(global indeksler) gibi hemde bir tablonun
bölümleme yöntemine otomatik olarak bağlanabilir(lokal indeks).

156
Lokal Bölümlenmiş İndeksler

Lokal bölümlenmiş indeksler, bölümlenmiş diğer indeks tiplerine göre


daha kolay yönetilir. Ayrıca, daha çok süreklilik sunar ve DSS
ortamlarında daha yaygındır. Bunun eşbölümleme olmasının nedeni:
lokal indeksin herbir bölümü tablonun sadece bir bölümüle
ilişkilendirilmiştir. Bu, Oracle’ın otomatik olarak indeks bölümlerini
tablo bölümleriyle eşzamanlı tutmasını sağlar, ve her tablo-indeks çiftini
bağımsız yapar. Bir bölümün verisini geçersiz veya kullanılamaz yapan
herhangi bir işlem sadece tek bir bölümü etkiler.

Lokal indekse dışarıdan yeni bir bölüm ekleyemezsiniz. İlgili tabloya


yeni bir bölüm eklediğiniz zaman, yeni bölümlere kendi lokal indeksleri
oluşturulur. Aynı şekilde, bir lokal indeksten bir bölüm drop
edemezsiniz. Ancak, ilgili tablodan bir bölüm drop ettiğiniz zaman, o
bölümün lokal indeksleri de drop olur.

Bir lokal indeks unique olabilir. Bununla birlikte, bir lokal indeksin
unique olabilmesi için, tablonun bölümleme anahtarının indeksin anahtar
kolonlarının bir parçası olması gerekir. Unique lokal indeksler OLTP
ortamları için faydalıdır.

Şekil 11-6, lokal bölümlenmiş indekslerin grafiksel bir görünümünü


sunmaktadır.

157
Şekil 11-6 Lokal Bölümlenmiş İndeksler

Bölümlenmiş Global İndeksler

Global bölümlenmiş indeksler bölümleme seviyesi bakımından esnektir


ve bölümleme anahtarı tablonun bölümleme yönteminden bağımsızdır.
Global bölümlenmiş indeksler genelde OLTP ortamlarında kullanılır ve
herhangi bir kayıta etkin erişim sunar.

Bir global indeksin bütün değerleri MAXVALUE olan en yüksek


bölümünün bir tane bölme sınırı (bound) olmalıdır. Bu ilgili tablodaki
bütün kayıtların indekste temsil edilebilir olduğunu garanti eder. Global
prefixed indeksler unique veya non-unique olabilir.

Bir global indekse bölüm ekleyemezsiniz; çünkü en son bölüm her


zaman MAXVALUE olan bir bölme sınırına sahiptir. Eğer yeni bir
enson bölme eklemek istiyorsanız, ALTER INDEX SPLIT PARTITION
komutunu kullanmanız gerekmektedir. Eğer bir global indeks bölme
boşsa, ALTER INDEX DROP PARTITION komutunu kullanarak
global indeks bölmeyi drop edebilirsiniz. Eğer bir global indeks bölümü
veri içeriyorsa, bölmeyi drop etmek diğer en son bölümün kullanılamaz
şeklinde işaretlenmesine neden olur. Global indeksteki en son bölümü
drop edemezsiniz.

158
Global Bölümlenmiş İndekslerin Bakımı

Varsayılan, bir heap-organized tablonun bölümleri üzerindeki aşağıda


sıralanan işlemler bütün global indeksleri kullanılamaz konuma sokar.

ADD(HASH)
COALESCE(HASH)
DROP
EXCHANGE
MERGE
MOVE
SPLIT
TRUNCATE

Bu indeksler, işlem yapılacağı zaman UPDATE GLOBAL INDEXES


cümleciğini SQL deyimlerine iliştirerek korunabilir. Global indeksleri
korunması iki avantaj sunar:
• İndeks, işlem süresince kullanılabilir ve erişilebilir olarak kalır.
Böylece, diğer hiçbir uygulama bu işlemden etkilenmez.
• Indeksin, işlemden sonra yeniden oluşturulmasına gerek kalmaz.

Örnek: ALTER TABLE DROP PARTITION P1 UPDATE GLOBAL


INDEX

Note: Bu özellik, sadece heap-organized tablolarda desteklenmektedir.

Şekil 11-7 global bölümlenmiş indekslerin grafiksel bir görünümünü


sunar.

159
Şekil 11-7 Global Bölümlenmiş İndeksler

Global Bölümlenmemiş İndeksler

Global bölümlenmemiş indeksler tam anlamıyla bölümlenmemiş indeks


gibi davranır. Genelde OLTP ortamlarında kullanılır ve herhangi bir
kayıta etkin erişim sunar.

Şekil 11-8, global bölümlenmemiş indekslerin grafiksel bir görünümünü


sunmaktadır.

Şekil 11-8 Global Bölümlenmemiş İndeksler

160
Bölümlenmiş İndeks Örnekleri
İndeks Yaratımı Örneği: Örnekler için Kullanılan Tablo Yaratma

CREATE TABLE çalisanlar


(calisan_no NUMBER(4) NOT NULL,
soyadı VARCHAR2(10),
departman_no NUMBER(2))
PARTITION BY RANGE (departman_no)
(PARTITION calisanlar_bolum1 VALUES LESS THAN (11)
TABLESPACE bölüm1,
PARTITION calisanlar_bolum2 VALUES LESS THAN (21)
TABLESPACE bölüm2,
PARTITION calisanlar_bolum3 VALUES LESS THAN (31)
TABLESPACE bolum3);

Lokal İndeks Yaratımı Örneği

CREATE INDEX calisanlar_lokal_idx ON calisanlar (calisan_no)


LOCAL;

Global İndeks Yaratımı Örneği


CREATE INDEX calisanlar_global_idx ON calisanlar(calisan_no);

Global Bölümlenmiş İndeks Yaratımı Örneği


CREATE INDEX calisanlar_global_bölüm_idx ON
calisanlar(calisan_no)
GLOBAL PARTITION BY RANGE(calisan_no)

161
(PARTITION p1 VALUES LESS THAN(5000),
PARTITION p2 VALUES LESS THAN(MAXVALUE));

Bölümlenmiş ve İndex-Organize Tablo Yaratımı

CREATE TABLE satis_range


(
satici_no NUMBER(5),
satici_adı VARCHAR2(30),
satis_miktarı NUMBER(10),
satis_tarihi DATE,
PRIMARY KEY(satis_tarihi, satici_no))
ORGANIZATION INDEX INCLUDING satici_no
OVERFLOW TABLESPACE tabsp_overflow
PARTITION BY RANGE(satis_tarihi)
(PARTITION satis_oca2000 VALUES LESS
THAN(TO_DATE('02/01/2000','DD/MM/YYYY'))
OVERFLOW TABLESPACE p1_overflow,
PARTITION satis_sub2000 VALUES LESS
THAN(TO_DATE('03/01/2000','DD/MM/YYYY'))
OVERFLOW TABLESPACE p2_overflow,
PARTITION satis_mar2000 VALUES LESS
THAN(TO_DATE('04/01/2000','DD/MM/YYYY'))
OVERFLOW TABLESPACE p3_overflow,
PARTITION satis_nis2000 VALUES LESS
THAN(TO_DATE('05/01/2000','DD/MM/YYYY'))
OVERFLOW TABLESPACE p4_overflow);

162
Bölümlenmiş Tablolar Üzerinde İndeks Yaratımı Hakkında Çeşitli
Bilgiler

Bölümlenmiş tablolar üzerinde, bitmap indekslerin bölümlenmiş tabloya


lokal olması şartıyla bitmap indeksler yaratabilirsiniz. Bunlar global
indeksler olamazlar.

Global indeksler unique olabilir. Eğer bölümleme anahtarı indeks


anahtarının bir parçası ise ancak o zaman lokal indeksler unique olabilir.

OLTP Uygulamalarında Bölümlenmiş İndekslerin Kullanımı

Burada OLTP uygulamaları için bazı öneriler bulunmaktadır.

• Global indeksler ve unique lokal indeksler, non-unique lokal


indekslerden daha iyi performans sağlar çünkü; indeks bölümü üzerinde
sorgulama sayısını minimize ederler.
• Lokal indeksler, tablo üzerinde bölme veya altbölme bakım
işlemleri olduğu zaman daha iyi süreklilik sunarlar.

Bölümlenmiş İndeksleri Veri Ambarı ve DSS Uygulamalarında


Kullanma

Burada veri ambarları ve DSS uygulamaları için bazı öneriler


bulunmaktadır.

• Lokal indeksler tercih edilebilir çünkü, bölme-bakım işlemleri


esnasında ve veri yükleme esnasında daha kolay yönetilebilirler.

163
• Lokal indeksler performansı artışı sağlayabilir çünkü; çoğu indeks
bölümleri, indeks anahtarı üzerinde range sorgulamaları ile paralel
olarak taranabilir.

Birleşik Bölmeler Üzerinde Bölümlenmiş İndeksler

Burada birleşik bölümlerdeki bölümlenmiş indeksleri kullanırken


hatırlanması gereken birkaç noktadan bahsedilecektir.

• Sadece range bölümlenmiş global indeksler desteklenmektedir.


• Altbölümlenmiş indeksler için varsayılan, herzaman lokaldirler ve
tablo altbölümlemesiyle depolanırlar.
• Tablo alanları (tablespace), hem indeks hemde indeks
altbölümleme seviyesinde belirtilebilir.

Performansı Arttırmak için Bölümleme

Bölümleme, performansı ve yönetilebilirliği arttırmak için faydalıdır.


Bunun için bölümlemeyi kullanırken bazı konuları unutmamanız
gerekir:

• Bölüm Eliminasyonu
• Bölüm Düzeyinde Join İşlemleri
• Paralel DML

164
Bölme Eliminasyonu

Oracle sunucusu, bölümleri ve altbölmeleri belirgin bir şekilde tanır.


Oracle sunucusu, erşilmesi gereken bölümleri ve altbölmeleri belirlemek
için SQL deyimlerini en uygun hale getirir ve SQL deyimleriyle erişilen
gereksiz bölümleri veya altbölümleri eler. Diğer bir deyişle bölüm
eliminasyonu, bir sorgulamadaki gereksiz indeksi ve veri bölümlerini
veya altbölümlerini taramayarak işlemleri daha hızlı sonlandırır.

Herbir SQL deyimi için, seçilen kritere bağlı olarak, gerekmeyen


bölümler yada altbölümler elenebilir. Örneğin, eğer bir komut sadece
mart ayı satış verilerini sorguluyorsa, kalan onbir ayın verilerini almaya
gerek yoktur. Böyle akıllı bir eliminasyon, sorgulamada veri hacmini
azaltır, sorgulama performansında önemli geşilişimler kazandırır.

Eğer optimizer, eliminasyon için kullanılan seçim kriterinin erişilen


bölümdeki veya altbölmedeki bütün satırlar tarafından sağlandığını
belirlerse, performansı arttırmak için değerlendirme esnasında
karşılaştırma koşulu listesinden(WHERE cümleciği) bu kriterleri çıkarır.
Fakat; eğer SQL deyimi bölümleme kolonuna bir fonksiyon (TO_DATE
fonksiyonu hariç) uyguluyorsa, optimizer bölmeleri eleyemez. Benzer
şekilde, eğer SQL deyimi indeks kolonuna bir fonksiyon uyguluyorsa,
bu indeks fonksiyon tabanlı olmadıkça optimizer bu indeksi kullanamaz.

İlgili tablonun bölümleri elenemezse bile indeks bölümleri elenebilir,


ancak sadece indeks ve tablo farklı kolonlar üzerinde bölümlendiği
zaman bu yapabilir. SQL deyimlerinizin erişme veya değiştirme ihtiyacı
duyduğu verinin miktarını azaltan bölümlenmiş indeksler yaratarak,
büyük tablolar üzerindeki işlemlerin performansını sık sık
geliştirebilirsiniz.

165
Eşitlik, aralık, LIKE, ve IN karşılaştırma belirtimi listeleri, range veya
liste bölümlemeyle bölüm eliminasyonu gerçekleştirilebilir. Eşitlik ve
IN karşılaştırma belirtimi listeleri hash bölümleme ile bölüm
eliminasyonu gerçekleştirilebilir.

Bölme Eleminasyonu Örneği

Siparisler adında bölümlenmiş bir tablomuz var. Siparisler tablosu için


bölümleme anahtarı siparis_tarihi. Siparisler tablosunun altı aylık verisi,
ocak’tan haziran’a kadar, ve her ayın verisi için bir bölüm olduğunu
varsayalım. Eğer aşağıdaki sorgulama çalıştırılırsa,

SELECT SUM(value)
FROM siparisler
WHERE siparis_tarihi BETWEEN ’28-MAR-98’ AND ’23-NİS-98’

Böüme eliminasyonu şu durumlarda gerçekleştirilir.

• İlk olarak, Ocak, Şubat, Mayıs, ve Haziran veri bölmeleri bölme


eliminasyonu.
o Mart ve Nisan veri bölmelerinin yüksek indeks seçilirliğinden
ötürü indeks taraması, yada
o Mart ve Nisan veri bölümlerinin düşük indeks seçilirliğinden ötürü
tüm bölüm (full data scan) verisinin okunması

Bölüm Düzeyinde Join İşlemleri (Partition-wise Joins)

Bölüm düzeyinde join işlemleri, join edilen kolon yada kolonlar


üzerinden bölümlenmiş iki tabloyu join ederken kullanabileceğiniz join
optimizasyonudur. Bölüm düzeyinde join işlemleri ile, birleştirme

166
işlemleri sıralı veya paralel şekilde uygulanan daha küçük join
operasyonlarına ayrılır. Bölüm düzeyinde join ilşlemlerine diğer bir
bakış açısı ise, paralel join işlemlerinin yürütümü esnasında veri
dağılımını da dikkate alarak paralel bağımlı öğeler arasında veri değiş
tokuşu miktarını minimize eder.

Paralel DML

Paralel yürütüm, tipik olarak karar destek sistemleri ve veri ambarları ile
ilişkilendirilmiş büyük veritabanları üzerindeki veri yoğunluğuna bağlı
işlemlerin dramatik olarak yanıt süresini azaltır. Standart tablolara ek
olarak, paralel sorgulamayı ve paralel DML ‘i range ve hash
bölümlenmiş tablolarda kullanabilirsiniz. Böyle yaparak, toplu işlemler
için performansı ve ölçeklenirliği arttırabilirsiniz.

Paralel DML oturumlarının kısıtlamaları ve tanımları, indeks organized


tablolar için de aynen geçerlidir.

167

You might also like