Oracle VTYS Giris

July 31, 2017 | Author: Mehmet | Category: N/A
Share Embed Donate


Short Description

Download Oracle VTYS Giris...

Description

__________________________

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

2



Oracle Instance’ına Giriş



Oracle Instance’ı ve Veritabanının Başlatılması



Veritabanı ve Oracle Instance’ının Kapatılması

5. Küme Veritabanı İşletimi Temel İlkeleri …………………… 114

6.

3



“Real Application Clusters’a Giriş”



“Real Application Clusters Sistemlerin Mimarisi”



“Real Application Clusters Yazılım Mimarisi”



“Real Application Clusters’ta Ölçeklenirlik”

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

Oracle Veritabanı Yönetim Sistemine Giriş Bu bölümde aşağıdaki konular anlatılacaktır;

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

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

taşınabilirlik,

otomatik

tanımlanma

zorunluluğu,

bellek

en

önemli

yönetimi,

pointer

özellikleri

kolaylık,

değişkenlerin

önceden

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ı

20

-

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

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

aşamalarında daha fazla kontrol sağlayıp uygulama

çalıştırılma

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: 28

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

-

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ı



ü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 38

şemalardaki

belli

nesneler

üzerinde

yapılacak

işlerin

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ı

39

-

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ı

-

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ı

değişiklikleri

sırasında,

uyguladıktan

sonra

Oracle

redo

loglardaki

commit

edilmemiş

tüm

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

numaralarının fiziksel tahmin parçaları düzeltilebilir.

47

sıra

-

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:

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

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

kümelenmiş(clustered)

formatı veri

veri

bloğu,

kapsamasına

önem

tablo

veya

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 61

açıkça

belirleyebilirsiniz.

İndeksi

yaratırken

veya

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

belirleyebilirsiniz.

yada Bu

ALTER

deyimleri

depolama

ile

parametreleri

direkt veri

olarak

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ış segmentleri

tablo ve

kullanmamalıdır.)

alanları onunla

için ilgili

Depolama

belirleyebilirsiniz.(Tablonun indeks

aynı

tablo

alanını

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

UNDO_RETENTION’a

peryod süresini otuz

dakika

belirleyebilir.

verilirse

sistemdeki

Örneğin 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 Büyütme

82

Dinamik Büyüklüklü Veri Dosyaları İle Veritabanını

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

kullanabilirsiniz:

87



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



Veritabanı kullanıcıları için belirli alan kotası atama

alanları



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 CDROM 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

TABLESPACE

deyimini

veya

CREATE

kullanarak

geçici

TEMPORARY 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,

101

isminin

değiştirilmesinde

veya

veritabanından

çı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ı

103



Farklı fiziksel diskler üzerinde her biri için ayrı ayrı yedeklenmesi



İşletim sisteminin aynalamasının kullanılması



Yedeklemenin gözlenmesi

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: • • •

104

Oracle Anına Giriş Oracle Anı ve Veritabanının Başlatılması Veritabanı ve Oracle Anının Kapatılması

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. Sadeceokunabilir 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. 2. 3.

Veritabanının kapanması Veritabanının unmount edilmesi 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:

114



“Real Application Clusters’a Giriş”



“Real Application Clusters Sistemlerin Mimarisi”



“Real Application Clusters Yazılım Mimarisi”



“Real Application Clusters’ta Ölçeklenirlik”

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.

116



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

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; zamantü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. •

122

Interconnect- Düğümler arasındaki iletişim bağlantısıdır.



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 memorymapped(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 IndexedOrganized 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 Birleşik

range-hash

bölümleme,

yönetilebilirlik avantajlarını ve 151

range

bölümlemenin

ayırır. gelişmiş

hash bölümlemenin verinin düzgün

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('1MAR-2000','DD-MON-YYYY')), PARTITION marnis_2000 VALUES LESS THAN (TO_DATE('1MAY-2000','DD-MON-YYYY')),

154

PARTITION mayhaz_2000 VALUES LESS THAN (TO_DATE('1TEM-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:

164



Bölüm Eliminasyonu



Bölüm Düzeyinde Join İşlemleri



Paralel DML

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

geliştirebilirsiniz.

165

üzerindeki

işlemlerin

performansını

sık

sık

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

View more...

Comments

Copyright ©2017 KUPDF Inc.
SUPPORT KUPDF