Oracle Mimarisi "Orneklerle Oracle 11g R2 ve Genel kavramlar isimli KItabdan"
1. 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
2. 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.
3. İ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.
4. Ş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ı
5. 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.
6. 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
7. 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.
8. 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.
9. 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
10. 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.
11. 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.
12. 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.
13. 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.
14. 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.
15. 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
17. 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
18. 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.
19. 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
20. 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
...
21. 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‟;
22. 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.
23. 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]
24. 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.
25. 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.