25
ORACLE MİMARİSİ 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ı ş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

Oracle Mimarisi "Orneklerle Oracle 11g R2 ve Genel kavramlar isimli KItabdan"

Embed Size (px)

Citation preview

Page 1: Oracle Mimarisi  "Orneklerle Oracle 11g R2 ve Genel kavramlar isimli KItabdan"

ORACLE MİMARİSİ

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

Page 2: Oracle Mimarisi  "Orneklerle Oracle 11g R2 ve Genel kavramlar isimli KItabdan"

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.

User process, server process CPU tarafı

Her gelen user processine karşılık servr processi oluşuyor.PGA gelen bu processleri sıraya sokuyor.Sonrada SGA a yolluyor.İşlem yapılınca SGA PGA ya yolluyor.Oda user a dönüyor. Oracle Server : Bütün Database dosyları,arka plan prosesleri ve diğer yapıların bir arada durduğu

sistemin adıdır.Server 1 veya daha fazla veritabanını birlikte tutar.

Oracle İnstance : İnstance dediğimiz kavram veritabanı için memory yapıları ve arka plan proseslerinin

bir arada durduğu yapıyı anlatmaktadır.Her veritabanı için bir instance yaratılmaktadır.Veritabanı kapatıldığında instance ta kapanmaktadır.Yani kısaca instance database ve prosesler için birleştirilmiş

yapıyı oluşturmaktadır.

Not:İnstance startup aşamasında başlıyor.Veri tabanı=İnstance Serverda diyelim ki 2 veritabanı var.İki instance var demektir. SET ORACLE_SID=TEST1 (Windowsta) EXPORT ORACLE_SID=TEST1 (Linuxta)

Oracle Database : Database dediğimiz kavram ise tüm hayati bilgilerimizi içinde muhafaza eden

,gerekitğinde ulaşabildiğimiz İnsatnce ve Server‟ın bir parçasıdır.

Şimdi bu yapılara daha detaylı bakacak olursak;

ORACLE SERVER

Oracle Server bahsedildiği gibi sistemin genel mimarisini oluşturmaktadır.

Oracle server bir veya birden fazla makine üzerinde çalışabilmektedir.Bu mimari Client-application

Server-Database,Client – Server,Host Based olabilmektedir.

Client-Application Server-Server: (Three-tier) Kullanıcılar kendi bilgisayarlarından Application

Server‟a erişirler buradan yapılan ayarlama ve yetkilendirme ile Database‟e erişim sağlanabilmektedir.

Client-Server: (Two-tier) Kullanıcılar kendi bilgisayarlarından direk olarak uzaktaki veritabanına

erişebilmektedirer.

Host-Based: Bu yapıda ise kullanıcılar kendi bilgisayarlarından direk kendi makinelarında kurulu olan

veritabanına ulaşabilmektedirler.

ORACLE INSTANCE

Database açıldığında otomatik olarak başlamaktadır.Oracle‟ı ilgilendiren Memory ve Proses parçalarının tamamını oluşturmaktadır.

Page 3: Oracle Mimarisi  "Orneklerle Oracle 11g R2 ve Genel kavramlar isimli KItabdan"

İleride göreceğimiz SGA ve PGA database‟in instance‟ını oluşturmaktadır.

Client tarafında bir user Oracle Server ile ilitişim kurduğunda otomatik olarak bir session yaratılmaktadır.

Session dediğimiz kavram kullanıcın kullandığı bir programla bu SQL PLUS yada herhangi bir

development tool‟u olabilir.Aradaki bağlantıdan dolayı Session başlamış olur.

ORACLE DATABASE

Oracle Database dediğimiz kavram ise sistemde bilgilerimizin tutulduğu file‟lar topluluğudur.

Page 4: Oracle Mimarisi  "Orneklerle Oracle 11g R2 ve Genel kavramlar isimli KItabdan"

Şekilde görüleceği gibi 3 tip file yapımız vardır.

Datafile lar bizim sistemimiz ile ilgili verileri tutmaktadır.Örneğin Tablolar,Viewlar ve indexler bu yapıda

muhafaza edilmektedir.

Redologlar ise yaptığımız transcationları tutmaktadır.Commit edilmiş edilmemiş her bilgi bu yapıda

durmaktadır.Rollback segmentle karıştırılmamalıdır.

Control file‟lar ise database‟in genel yapısını tutan ifadelerdir.Tablesapce‟lerin uzunluğu,adı yapısı ve diğer database‟i ilgilendiren her yapı burada muhafaza edilmektedir.

Parametre file sistemin daha verimli çalışması için gerekli olan parametreleri tutmaktadır.SPFİLE ve

PFİLE olarak 2 farklı versiyonu vardır.

Password file kullanıcıların sisteme otantike olmaları için vardır.Burdaki bilgilerden örneğin kimin

database‟i açıp kapatamıyacağını görürüz.

Arşiv Redologlar redologların depolanmış halidir.Normalde Redologlar büyüklükleri kadar ancak

transaction‟u tutmaktadırlar.Bu şekilde dolan redologlar arşiv dosyası olarak saklanabilmektedirler.

Fiziksel Yapı

Page 5: Oracle Mimarisi  "Orneklerle Oracle 11g R2 ve Genel kavramlar isimli KItabdan"

Control file,data file ve redologlar database‟in fiziksel yapısını oluşturmaktadırlar.

Memory Yapısı

SGA ve PGA dediğimiz yani sistem tarafı ve kullancı tarafını oluşturan memory yapısıdır.

SGA instance başlatıldığında oluşmaktadır.PGA ise Kullancı tarafından gelen User Prosesine karşılık oluşturlan Server Prosesi zamanında oluşmaktadır.

SGA(System Global Area)

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.

SGA‟nın büyüklüğü SGA_MAX_SIZE ile belirlenebilir.

SQL > SHOW SGA;

Total System Global Area 36437964 bytes

Fixed Size 6543794 bytes Variable Size 19521536 bytes

Database Buffers 16777216 bytes Redo Buffers 73728 bytes

SGA‟nın yapısını ise DB_CACHE_SIZE,LOG_BUFFER,SHARED_POOL_SIZE ve LARGE_POOL_SIZE oluşturmaktadır.

Page 6: Oracle Mimarisi  "Orneklerle Oracle 11g R2 ve Genel kavramlar isimli KItabdan"

SHARED POOL

Paylasilmis SQL Alani, Oracle „in özel SQL deyimlerini çalistirmak için kullandigi bilgileri içerir.

Bir SQL sorgusu isletilmeden önce ayristirilir ve bu sorgunun çalistirilmasi için bir çalisma plani hazirlanir. Isletilen sorgular bu alanda saklanir. Ayni sorgu birkez daha isletilmek istenirse bu çalistirma

plani dogrudan uygulanabilir. Büyüklüğü SHARED_POOL_SIZE parametresi ile belirlenir.Varsayılan

olarak 32 bit sistemler için 8MB, 64 bit sistemler için 64MB‟dır. Paylasilmis SQL Alani, SGA içindeki Paylasilmis Havuz „un bir parçasidir.

Paylasilmis Havuz; SQL ve PL/SQL deyimlerini

SQL ve PL/SQL deyimlerinin ayristirilmis hallerini SQL ve PL/SQL deyimleri için çalistirma planlarini

veri sözlügü (data dictionary) önbellegini (cache) içerir.

Paylaşılmış havuz anlamına gelir.SQL kodlarını parse eder ve saklar.Her istek gelince parse etmeye uğraşmaz.Sık kullanılan sorguları daha hızlı getirmenin mantığı budur.SGA nın %10 kadar verilmelidir. SQL > ALTER SYSTEM SET SHARED_POOL_SIZE = 64M;

Burada dikkat edilmesi gerek ayarlanan bu büyüklük SGA nın büyüklüğünü etkileyeceği için asla

toplam SGA değeri SGA_MAX_SIZE‟ı aşmamalıdır.

LİBRARY CACHE

Library Cache Shared Pool‟un bir parçasıdır.Sık kullanılan SQL ve PL/SQL cümlelerinin durduğu yerdir.

Yönetimi LRU(Last Recently Used) algoritmasına göre olmaktadır.

Shared SQL ve PL / SQL ifadelerini saklamaktadır.

SQL ve PL/SQL kodlarını parçalayıp tutar.

DATA DİCTİONARY CACHE

“Data Dictionary” bilgileri Oracle tarafından çok sık kullanıldığından hafızada tutulması mantıklıdır.İşte

bu bilgilerin hafıza da tutulduğu yere “dictionary cache” denir.Bu bilgiler bir de “library cache”‟te de tutulmaktadır.Her iki alana tüm kullanıcı işlemleri ulaşmaktadır.

Hem Library Cache hemde Dictionary Cache‟in büyüklüğünü değiştirmek için SHARED_POOL_SIZE ile

oynanmalıdır.

Oracle in kullandığı sql ve pl / sql parçacıklarını tutar. DATABASE BUFFER CACHE

Datafile‟dan okunan veriler SGA içersinde bu alanda tutulur. Mantıksal olarak kendi içinde parçalara

ayrılarak kullanılır.Veritabanı üzerinde işlem yapan tüm kullanıcılar burayı kullanırlar.Bu durumda

yapılan işlemlerin belli bir sistematikte yapılması gerekmektedir.Bunu sağlamak için database buffer cache‟te Write List ve en son kullanılanları tutan liste Last Recenlty Used-LRU- list olmak üzere 2 ayrı

liste tutulur. Write List , dirty buffer olarak adlandırılan üzerinde değişiklik yapılmış ama datafile‟a henüz yazılmamış

alanları tutar.LRU listesi ise boş alanları ,henüz write list‟e gönderilmemiş dirty buffer alan bilgilerini ve pinned buffer denilen o an işlem gören alanları tutar.

Kullanıcının veri okuma isteği olduğunda önce bu cache‟te varmı diye bakılır.Var ise veri bellekten direk

olarak okunur.Eğer yok ise veri ilgili datafile‟ın bloğundan okunur.Ama bunu yapabilmesi için önce hafızada boş alan bulunması gerekir.Bunun için LRU listesine bakılır. Boş bir alan bulunana ya da

tanımlı bir eşik değere ulaşıncaya kadar arama sürer. LRU listesinde Dirty buffer bulunca bu alan write

Page 7: Oracle Mimarisi  "Orneklerle Oracle 11g R2 ve Genel kavramlar isimli KItabdan"

liste‟e alınır ve arama işlemi sürdürülür, boş alan bulununca burası LRU listesinin en sonuna atılarak

ilgili veri bulunan boş alanına yazılır.Boş alan bulunamadığı esnada belirlenen eşik değerine ulaşılınca

LRU listesinde arama bitirilir ve DBW0 background process‟ine bir takım dirty buffer alanını diske yazması için sinyal gönderilir.

DB_BLOCK_SIZE parametresi ile blokların büyüklüğü hakkında bilgi edinebiliriz.

Bu parametre sonradan değişmemekte database oluşturulurken ayarlanmaktadır.

Bunun dışında,

DB_CACHE_SIZE = Default olarak cache‟in buffer size‟ını vermektedir.Sıfır verilmemelidir.

DB_KEEP_CACHE_SIZE = blokların default olarak ne kadar tutulacağını verir. DB_RECYCLE_CACHE_SIZE = Kullanılamayn blokların boyutunu tutmaktadır.

parametreleri mevcuttur.

Sql den dönen datayı tutar.Sorgu tekrar çalıştırıldığında datafile a gitmeye gerek kalmadan buradan okur.

SQL > ALTER SYSTEM SET DB_CACHE_SIZE = 96M; ile büyüklük değiştirilebilmektedir.

REDOLOG BUFFER CACHE

INSERT,UPDATE,DELETE,CREATE,ALTER ve DROP işlemleri sonucu meydana gelen değişiklikleri

hafızada tutulduğu kısımdır.Yapılan değişikliklerin geri alınmasında ve gerektiğinde “recovery” işlemleri için kullanılır.Sıralı ve doldugunda başa dönecek şekilde bir yapısı vardir.

Bu alanda tutulan bilgiler “Log Writer Process(LGWR)” ile redo log dosyalarına yazılır.LOG_BUFFER

parametresi redo log alanının büyüklüğünü belirler.Büyük değer alması I/O mailiyeti düşürür.

Yapılan her transaction ı tutar.Elektrik kesintisi olduğunda bilgi burada durur. LARGE POOL

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. Üzerinde durulması gereken asıl yaptığı iş Veritabanı üzerinde yedekleme ve kurtarma operasyonlarına

zemin oluşturmasıdır.Boyutu LARGE_POOL_SIZE parametresi ile belirlenir.

SQL > ALTER SYSTEM SET LARGE_POOL_SIZE = 64M;

Oracle üzerinde backup ve recovery operasyonlarında aktif olarak yer alan RMAN(Recovery Manager)

Large Pool parametresi ile beraber BACKUP_DISK_IO= n ve BACKUP_TAPE_IO_SLAVE = TRUE parametreleri set edilebilir.

JAVA POOL

Java kodlarının veritabanı içerisinde anlamlandırılması için kullanılmaktadır.PL/SQL kodlarına benzer biçimde database içinde saklanmaktadır.Boyutu JAVA_POOL_SIZE ile belirlenmektedir.

PGA(Program Global Area)

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.

Page 8: Oracle Mimarisi  "Orneklerle Oracle 11g R2 ve Genel kavramlar isimli KItabdan"

PGA tarafında proses mantığında istekte bulunan User Proses buna karşılık gelen Server tarafında Server Proses ve İnstance başladığında işlem gören Background prosess mevcuttur.

Parametrenin büyüklüğü pga_aggregate_target ile belirlenir.

USER PROSESS

User Proses Oracle Server ile iletişim kuran bir program,Oracle Client yada SQL PLUS command‟ı

olabilir.

User Prosess‟i Server Prosess‟i ile iletişim kurduğunda bir session açılır ve işlemler bunun üzerinden

yürür.

SERVER PROSESS

User Proses‟ine karşılık gelen prosestir.Gelen istekle beraber Oracle Server tarafı ile bağlantı kurar.

İleride göreceğimiz gibi Dedicated yada Shared olabilmektedir.

Page 9: Oracle Mimarisi  "Orneklerle Oracle 11g R2 ve Genel kavramlar isimli KItabdan"

BACKGROUND PROSESS

Bu prosesler fiziksel yapı ve memorysel yapı arasında çalışırlar ve çeşitli işler yaparlar.Bunların bikaç tanesine bakacak olursak.

DBWR(Database Writer)

DBWR görevi, kullanici görevlerinin her zaman bos bellek alanu bulabilmeleri için database buffer

cache „i yönetir. degisiklige ugramis tüm verileri veri kütüklerine yazar. Yakin zamanda kullanilan veri bloklarini bellekte tutmak için LRU (Least Recently Used) algoritmasini kullanilir. Giris/çikis islemlerini

iyilestirebilmek için bazi yazma islerini erteler.

DBWR şu durumlarda aktif olur.

•Incremental yada normal checkpoint

• Bozuk data bloklar eşik değeri eriştiklerinde • Bir proses boş blok aradığında ama bulaadığında

• Zaman aşımı gerçekleştiğinde • RAC kontrolünde

• Tablepsace Online yada Offline olduğunda. • Tablespace Read Only moduna geldiğinde.

• Tablonun düşürülmesi yada Truncate edilmesinde.

• ALTER TABLESPACE tablespace name BEGIN BACKUP komutu çalıştığında

Page 10: Oracle Mimarisi  "Orneklerle Oracle 11g R2 ve Genel kavramlar isimli KItabdan"

LGWR(LOG WRİTER)

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

commit görüldügünde , redo log buffer dolulugu esik degerine ulastigi zaman.

DBWR checkpoint için buffer bloklarin temizlemeye gerek duyarsa , time-out görülürse ,

Her Oracle instance „i için bir tane LGWR görevi vardir. Bir transaction redo log kütügüne islenmeden

commit edilmis sayilmaz. DBWR görevi, veri bloklarini veritabanina geri yazmadan önce yapilan degisiklikleri korumak amaciyla LGWR görevine redo log buffer „larini bosaltmasi sinyalini gönderir.

SMON (System Monitor)

-Değişen loglar için Rollforward ,commit edilmemiş datalar için Rollback yapar - Otomatic instance kurtarmayi gerçeklestirir.

- Geçici segment alanini geri elde eder. - Kontrol kütügünün sürekliligini saglar.

- Sistemde kullanilabilir durumdaki serbest alanin kaydini tutar.

Page 11: Oracle Mimarisi  "Orneklerle Oracle 11g R2 ve Genel kavramlar isimli KItabdan"

PMON (Process Monitor)

- Anormal bir sekilde kesilen baglantilari temizler. - Commit edilmemis degisiklikleri eski haline getirir (rollback).

- İşletimi kesilen görevin tuttugu kilitleri kaldirir. - Çakilan görev için ayrilan SGA kaynaklarini serbest birakir.

- Kilitlenmeleri (deadlock) otomatik olarak yakalar ve islemi geri döndürerek (transaction rolling back)

çözümler.

CHECK POİNT(CKPT)

Checkpoint görevi, LGWR üzerindeki yükü azaltmak için kullanilir.CheckPoint anında DBWn prosesi

işaretlenir.Datafile Header Checkpint anında update edilir.Aynı şekilde Control file larda Check Point anında update edilir.

Page 12: Oracle Mimarisi  "Orneklerle Oracle 11g R2 ve Genel kavramlar isimli KItabdan"

Arcn (Archiver)

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

tablespace „lerin çevrim-içi (on-line) yedeklenmesine medya failure „dan çevrim-içi kurtarmaya ,

günlük kütüklerinin otomatik olarak arsivlenmesine izin verir.

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

LOGICAL YAPI

Oracle‟ın logical yapısı hiyerarşik olarak Tablespace,bunun altında Segments bunun altında Extents

bunun altında Bloklardan oluşur.

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.

Page 13: Oracle Mimarisi  "Orneklerle Oracle 11g R2 ve Genel kavramlar isimli KItabdan"

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.

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.

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.

Page 14: Oracle Mimarisi  "Orneklerle Oracle 11g R2 ve Genel kavramlar isimli KItabdan"

ORACLE SERVER MİMARİSİ VE ÇALIŞMA ŞEKLİ

ORACLE UNİVERSAL İNSTALLER

Oracle Server için Yazılım eklemek,upgrade etmek ve mevcut bir komponent‟i kaldırmak için kullanılır.

Java tabanlı bir yazılımdır

Windows Sistemlerde Programlar Altında bulunur,

Yada yeni bir kurulum yapılacaksa

CD „nin içinden Setup Dosyası başlatıldığında başlar.

Page 15: Oracle Mimarisi  "Orneklerle Oracle 11g R2 ve Genel kavramlar isimli KItabdan"

Unix Sistemlerde ise komu satırından aşağıdaki komut yazıldığında başlatılır,

$ ./runInstaller

Kurulumun yapılabilmesi için Grafiksel uygulamların düzgün çalışıyor olması gerekmektedir.

Kurulum kesinlikle Oracle User‟ı ile olmalıdır.

Eğer kurulumu İnteractive modda yapmak istemiyorsak,

$./runInstaller -responsefile FILENAME [-silent] [-nowelcome]

Komutu kullanılmalıdır.

Örnek bir reponse file şu şekilde olabilir.

[General] RESPONSEFILE_VERSION=1.0.0.0.0

[Session] UNIX_GROUP_NAME="dba"

FROM_LOCATION="/u01/stage/products.jar" ORACLE_HOME="/u01/app/oracle/ora9i"

ORACLE_HOME_NAME="Ora9i"

TOPLEVEL_COMPONENT={"oracle.server", "9.0.1.0.0"} SHOW_COMPONENT_LOCATIONS_PAGE=false

SHOW_SUMMARY_PAGE=false SHOW_INSTALL_PROGRESS_PAGE=false

SHOW_REQUIRED_CONFIG_TOOL_PAGE=false

SHOW_OPTIONAL_CONFIG_TOOL_PAGE=false SHOW_END_SESSION_PAGE=false

Page 16: Oracle Mimarisi  "Orneklerle Oracle 11g R2 ve Genel kavramlar isimli KItabdan"

NEXT_SESSION=true

SHOW_SPLASH_SCREEN=true

SHOW_WELCOME_PAGE=false SHOW_ROOTSH_CONFIRMATION=true

SHOW_EXIT_CONFIRMATION=true INSTALL_TYPE="Typical”

s_GlobalDBName="u01.us.oracle.com"

s_mountPoint="/u01/app/oracle/ora9i/dbs" s_dbSid="db09"

b_createDB=true

DATABASE CONFIGURATION ASSISTANT

Bu tool ise yeni bir database yaratmak,mevcut bir database‟i konfigüre etmek,yeni bir t

Mplate yaratmak yada mevcut bir database i silmek için kullanılır.

Windows sistemlerde yine aynı şekilde programlar altındadır.

Page 17: Oracle Mimarisi  "Orneklerle Oracle 11g R2 ve Genel kavramlar isimli KItabdan"

Unix Sistemlerde ise,

$ DBCA komutu çalıştıurıldığında açılmaktadır.

DATABASE ADMINISTRATION USERS

Veritabanı ilk kurulduğunda iki tane default sistem kullanıcısı yaratılmaktadır.Bunlardan biri SYS diğeri ise SYSTEM‟dir.

Bilinmesi gereken tek olay SYS kullanıcısı Veritabanını açıp kapayabiliyorken SYSTEM user‟ı bunu yapamamaktadır.

SQL PLUS

Bu tool ise Oracle kurulumu ile beraber gelen üzerinde sorgulamalar ve yönetim yapabileceğimiz bir uygulamadır.Database‟i bu tool ile kapatabilir ve açabiliriz.

CMD > SQLPLUS /NOLOG

SQL> connect user/sifre;

CMD > SQLPLUS deneme/deneme

CMD > SQLPLUS sys/deneme as sysdba;

CMD > SQLPLUS user/sifre@DB

Page 18: Oracle Mimarisi  "Orneklerle Oracle 11g R2 ve Genel kavramlar isimli KItabdan"

ORACLE ENTERPRISE MANAGER

Oracle üzerinde tüm yönetimsel işleri yaptığımız toldur.10G ve öncesi sürümlerde JAVA tabanlı bir uygulamaydı.Ama 10G ile birlikte Web Based bir uygulamadır.

Page 19: Oracle Mimarisi  "Orneklerle Oracle 11g R2 ve Genel kavramlar isimli KItabdan"

Web tabanlı bu konsolu açmak için console‟dan birkaç komut yzamak gerekebilir.

CMD > emctl start dbconsole açmak için

CMD > emctl stop dbconsole kapamak için

Page 20: Oracle Mimarisi  "Orneklerle Oracle 11g R2 ve Genel kavramlar isimli KItabdan"

ORACLE INSTANCE YÖNETİMİ

Oracle Instance dediğimiz kavramın nasıl başladığı nelerden etkilendiği yada işletim sisteminin memory alanından nasıl giderildiği gibi bilgileri göreceğiz.

Instance başlamadan önce Parametre file dediğimiz bir dosyadan veritabanı hakkında bilgiler edinir.Ve

burada verilen bilgilere göre Oracle Sisteme yüklenir.

PARAMETRE FILE (PFILE ve SPFILE)

Veritabanı ve çalışan instance ile ilgili konfirigasyon parametrelerini içerir.”init.ora” bir parameter file‟dır. init.ora server tarafta bulunur.Ancak client‟tan (uzak erişim) ile veritabanın ulaşmak için

gereklidir, static‟tir.Gerektiğinde (text dosya olduğundan) elle de değişiklik yapılabilir. Lokasyonu ise $ORACLE_HOME/dbs altındadır.Yapılan değişiklikler bir dahaki startup aşamasında aktif olur.

Örnek bir PFILE şu şekidedir.

# Initialization Parameter File: initdb01.ora db_name = db01

instance_name = db01 control_files = ( /u03/oradata/db01/control01db01.ctl,

/u03/oradata/db01/control02db01.ctl)

db_block_size = 4096 db_block_buffers = 500

shared_pool_size = 31457280 # 30M Shared Pool db_files = 1024

max_dump_file_size = 10240 background_dump_dest = /u05/oracle9i/admin/db01/bdump

user_dump_dest = /u05/oracle9i/admin/db01/udump

core_dump_dest = /u05/oracle9i/admin/db01/cdump undo_management = auto

undo_tablespace = undtbs . . .

Page 21: Oracle Mimarisi  "Orneklerle Oracle 11g R2 ve Genel kavramlar isimli KItabdan"

9i sürümüyle birlikte “Server Parameter File(SPFILE) (Binary) ” kavramı geldi.SPFILE PFILEs‟dan

oluşturulabilir.Bu PFILE gibi bir text dosya değil binary bir dosyadır ve sadece “ALTER SYSTEM SET”

komutu ile değişir.Lokal makinadan veritabanını başlatmak için bir kopyasını lokalde tutmaya gerek kalmamaktadır. SPFILE da $ORACLE_HOME/dbs altında saklanmaktadır.

Yapısındaki değişiklikler Alter System komutları ile yapılmaktadır.

SQL > ALTER SYSTEM SET undo_tablespace = 'UNDO2' scope=?;

Bunla beraber yapılan değişikliğin kalıcı olması yada sadece Session bazlı olması gibi durumlar için

SCOPE diye bir kavram vardır.

ALTER SYSTEM SET parameter = value [SCOPE =

MEMORY|SPFILE|BOTH]

Memory : Yapılan değişikliğin yalnızca mevcut çalışan instance üzerinde yapılacağını, SPFILE : Yapılan değişikliğin SPFILE‟a yansıtılacağını

BOTH : Yapılan değişikliğin Hem mevcut instance‟ta hemde SPFILE üzerinde yapılacağını gösterir.

Örnek bir SPFILE ise şu şekildedir.

*.background_dump_dest='$ORACLE_HOME/admin/db01/bdump'

*.compatible='9.0.0' *.control_files='/u03/oradata/db01/ctrl01db01.ctl','/u03/orad

ata/db01/ctrl02db01.ctl'

*.core_dump_dest='$ORACLE_HOME/admin/db01/cdump' *.db_block_buffers=500

*.db_block_size=4096 *.db_files=40

*.db_name='db01'

*.instance_name='db01' *.remote_login_passwordfile='exclusive'

*.shared_pool_size=31457280 # 30M Shared Pool *.undo_management='AUTO'

db01.undo_tablespace='UNDOTBS01'

db02.undo_tablespace='UNDOTBS02' . . .

SPFILES kullanmak PFILE kullanmaktan daha avantajlıdır.Çünkü : • RMAN ile backup‟ı alınabilir.(RMAN, PFILE backup‟ı alamaz)

• Server tarafında tutulduğundan ve değişiklik yapılıpta olur verilmeden evvel sistem tarafından kontrol edildiğinden insan kaynaklı hataların önüne geçilmiş olur.

• Uzaktan veritabanını başlatmak için lokal makina da bir dosya tutulmasına gerek kalmaz.

Oracle veritabanı PFILE‟dan ya da SPFILE‟dan başlatılmış olabilir.bunu anlamak için aşağıdaki sorgu

kullanılabilir :

SELECT DECODE(value, NULL, „PFILE‟, „SPFILE‟) “Init File Type” FROM sys.v_$parameter WHERE name = ‟spfile‟;

PFILE‟dan SPFILE ya da SPFILE‟dan PFILE oluşturmak mümkündür :

• CREATE PFILE FROM SPFILE;

• CREATE SPFILE FROM PFILE; • CREATE SPFILE=‟/oradata/spfileORCL.ora‟ from PFILE=‟/oradata/initORCL.ora‟;

Page 22: Oracle Mimarisi  "Orneklerle Oracle 11g R2 ve Genel kavramlar isimli KItabdan"

Hem PFILE hem SPFILE şu şekilde sistemde adlandırılır.

PFILE için initSID.ora SPFILE için SPFILESID.ora

Burada SID dediğimiz database‟in ismi yada kimliği olarak adlandırılabilir.

ORACLE ‘IN BAŞLATILMASI VE DURDURULMASI

Oracle „ın başlatılması ve durdurulması çeşitli adımlarla gerçekleşmektedir.

Bu aşamada SPFILE yada PFILE dosyadan okunur,ve instance buradaki parametrelere göre başlatılır.

Database‟in bu aşaması Database ve Control file oluşturmak için vardır.

Bu aşamada ise Control file ilgili dosyadan okunur.Ve database‟in yapısı hakkında instance bilgi sahibi olur.Bu aşamada ilgili DataFile‟ların ismi değiştirilebilir,Redolog Arşivleme Enable yada Disable

edilebilir.Database‟in full database kurtarması yapılabilir.

Page 23: Oracle Mimarisi  "Orneklerle Oracle 11g R2 ve Genel kavramlar isimli KItabdan"

Bu aşamada ise Bütün file‟lar ilgili lokasyonlarından okunur ve database tamamiyle başlamış olur. Herhangi bir kurtarma ihtiyacı varsa SMON bu aşamada devreye girer ve otomatik kurtarma işlemini

gerçekleştirir.

Komut satırından bu işlemler şu şekilde olmaktadır.

Kapalı bir Database de ;

CMD > sqlplus / as sysdba;

SQL > startup nomount;

SQL > alter database mount; SQL > alter database open;

Yada kapalı bir database „i direk olarak

CMD > sqlplus / as sysdba;

SQL > startup;

Diyerekte açabiliriz.

Database‟i PFILE yada SPFILE‟dan açma şansımız vardır.Defaultta SPFILE tanımlıysa otomatik olarak

SPFILE başlar.Ama istersek database‟i PFILE‟danda başlatabiliriz.

SQL > STARTUP PFILE=$ORACLE_HOME/dbs/initdb01.ora

Startup parametreleri aşağıda görüldüğü gibidir.

STARTUP [FORCE] [RESTRICT] [PFILE=filename]

[OPEN [RECOVER][database] |MOUNT

|NOMOUNT]

Page 24: Oracle Mimarisi  "Orneklerle Oracle 11g R2 ve Genel kavramlar isimli KItabdan"

FORCE : Mevcut olan instance‟i acil olarak kapatıp yeni istance‟ı başlatır.

RESTRICT Kullanıcıların RESTRICTED SESSION hakkı ile database‟e erişmeleri sağlanır.

RECOVER : Recover yapmak için başlatılan moddur.

SQL > alter database open read only;

SQL > STARTUP RESTRICT;

SQL > ALTER SYSTEM ENABLE RESTRICTED SESSION;

Read Only modda database üzerinde sorgu çalıştırılabilir,İlgili data file‟lar offline yada online

yapılabilir.Offline bir datafile recovery yapılabiliriz.

Database‟in durdurulması için tek adım vardır.Yapılacak tek şey SHUTDOWN komutunun

çalıştırılmasıdır.

Shutdown aşamasında ise yukarıda görüldüğü gibi 4 tip kapatma işlemi mevcuttur.

Shutdown Normal

• Yeni bağlantı açılamaz

• Oracle server shutdown olmadan bağlı olan kullanıcıların disconnect olmalarını bekler.

• Database ve redo buffers diske yazılır • Background processesleri durdurulur, ve SGA memory‟den çıkarılır.

• Oracle İnstance kapatmadan önce database‟i dismount ve close eder. • Gelecek Startup aşamasında recovery‟e ihtiyaç yoktur.

Shutdown Transactional

• Yeni bağlantı açılamaz,yeni bir transaction da başlatılamaz. • Client açtığı transaction‟u kaparsa ,bağlantıyı koparmış olur.

• Tüm transactionlar kapandıysa,artık instance kapanabilir. • Gelecek Startup aşamasında recovery‟e ihtiyaç yoktur.

Page 25: Oracle Mimarisi  "Orneklerle Oracle 11g R2 ve Genel kavramlar isimli KItabdan"

Shutdown Immediate

• Mevcut çalışan Sql statement ların hiçbiri tamamlanamaz.

• Oracle Server kullanıcıların disconnect olmalarını beklemez. • Oracle Aktif transactionların hepsini rollback yapar.

• Oracle İnstance kapatmadan önce database‟i dismount ve close eder. • Gelecek Startup aşamasında recovery‟e ihtiyaç yoktur.

Shutdown Abort

• Mevcut çalışan Sql statement ların hiçbiri tamamlanamaz.

• Oracle Server kullanıcıların disconnect olmalarını beklemez. • Database ve redo buffers diske yazılmaz.

• Commit edilmeyen transactionların hepsini rollback yapar.

• İlgili dosyalar kapanmadan instance kapatılır. • Oracle İnstance kapatmadan önce database‟i dismount ve close eder.

• Gelecek Startup aşamasında recovery‟e ihtiyaç yoktur.

ALERT VE TRACE DOSYALARI

Database‟in açıp kapatmasında yada yürüyen adımlarında herhangi bir hata olması durumununda

oluşan hatanın bilgileri,

Database „de alertSID.log dosyasına yazılır.Bu dosyada database ile ilgili tüm bilgiler mevcuttur. Default yeri $ORACLE_HOME/rdbms/log altındadır.

Lokasyonu BACKGROUND_DUMP_DEST parametresi ile belirlenebilir.

BACKGROUND TRACE

Arka Planda yürüyen proseslerde oluşan hatalar sonucunda oluşurlar.Bu dosyaların da lokasyonu

BACKGROUND_DUMP_DEST parametresi ile bleirlenir.Formatı sid_processname_PID.trc şeklinde verilir. db01_lgwr_23845.trc buna bir örnektir.

USER TRACE

Kullancılardan yani User Proseslerinden oluşan hatalar sonucunda oluşurlar.Bu dosyaların da lokasyonu

USER_DUMP_DEST parametresi ile bleirlenir.Formatı sid_ora_PID.trc şeklinde verilir. db01_ora_23845.trc buna bir örnektir. MAX_DUMP_FILE_SIZE parametresi ile alınabilcek maximum

büyüklük belirlenebilir.

User Trace işlemi yine bizde parametrelerce belirlenip yürütülebilen bir bilgidir.

Session bazlı olarak,

SQL > ALTER SESSION SET SQL_TRACE = TRUE

Komutuyla,

Yada Paramatre file‟ından

SQL_TRACE = TRUE yapılarak user trace enable edilebilir.