Menu

20 Eylül 2010 Pazartesi

Oracle Veritabanı Yapısı

Oracle’ın üzerine kuruldugu yapı Fiziksel Yapı ve Mantıksal Yapı olmak üzere 2 çeşittir.


Oracle Fiziksel Yapısı 

Fiziksel yapıyı oluşturan bileşenler de şu şekilde özetlenebilir : 
  • Datafiles
  • Control Files
  • Redo Log Files
  • Archive Log Files
  • Parameter Files
  • Alert ve Trace Log Files
  • Backup Files
Şimdi bunlara kısaca göz atalım.

Datafiles : Her Oracle Veritabanı bir ya da daha fazla sayıda datafile içerebilir. Tablo, indeks gibi matıksal yapıların barındırdığı fiziksel bilgileri tutar. Belli başlı özellikleri:
  • Bir datafile sadece bir veritabanı ile ilişkilidir.
  • Bir ya da daha fazla datafile mantıksal yapılardan olan tablesace’leri oluştururlar.
  • Gerektiğinde kendilerini otomatik olarak büyütme(extend) özellikleri vardır.
Örneğin bir tablodan veri okunmak istediğinde bu hafızada(memory) yoksa ilgili datafile’dan okunarak hafızaya çekilir ve okunur.Datalar üzerinde değişiklik yapıldığında ise hemen datafile’a bu değişikşik yansıtılmaz.I/O miktarını düşük tutmak amacıyla bu işlem “Database Writer Process(DBWn)” adı verilen bir arkaplan işlemi (background process) tarafından karar verilen anlarda yapılır.

Control Files : Her Oracle veritabanının bir control file ı vardır.Veritabanının fiziksel yapısı hakkındaki (database adı, datafile ve redo log file’ların adı ve yerlerinin bilgisi vb…) bilgileri tutar. Bu dosyadaki bilgiler çok önemli olduğu için Oracle bu dosyayı çoğullama özelliğine sahiptir. Eş zamanlı olarak dosyaları güncel tutar.

Her Oracle instance başladığında bu dosyadan bilgiler okunur. Yeni datafile ya da redo log dosyası database’de tanımlandığı anda Oracle control file’ı günceller. (Ayrıca bu dosya kurtarma(recovory) durumunda da kulanılır.)

Redo Log Files : Veriye yapılan tüm değişiklik işlemlerini tutmakla yükümlüdür.Datafile’lara (bir şekilde) değişen bilgi yazılamadığı durumlarda redo loglardan bu işlemler görülebilir ve yapılan işlemin kaybı önlenir. Bu dosyalarında çoğullanma imkanı vardır. Farklı diskler üzerinde 2 ya da daha fazla kopyası tutulabilir. Bu dosyanın amacı özetle sistem ya da donanım kaynaklı(harddisk göçmesi vs.) olası hatalarda datafile’lara kalıcı şekilde yazılamayan bilgileri kurtarmaktır. Örneğin bir elektrik kesintisinde henuz datafile’lara yazılmayan ve memory de bulunan bilgiler kaybedilir. Sistem tekrar ayağa kalktığında Oracle ilk önce redo log lara bakar.Kalıcı olarak datafile’a yazılamayan bilgi olduğunu görür ve yarım kalan işlemi sonlandırır.Bu sayede veritabanı elektrik kesintisi olmadan evvelki konuma gelinmiş olur.

Archive Log Files : Oracle veritabanı ARCHIVELOG modunda ise redo log dosyaları bu dosyalara otomatik olarak arşivlenir.

Parameter Files (PFILEs): 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.9i sürümüyle birlikte “Server Parameter File(SPFILE)” 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. 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 :
1
2
SELECT DECODE(value, NULL, 'PFILE', 'SPFILE') "Init File Type"
      FROM sys.v_$parameter WHERE name = 'spfile';


Alert ve Trace Log Files : Her bir server ya da arka planda çalışan işlemlerin kendileri ile ilişkili bir trace dosyası vardır. Örneğin herhangibir hata (internal error) durumunda ilgili trace dosyasına ilgili bilgiler yazılır.Bunun dışında instance ve uygulamaları iyileştirmek için de referans olarak kullanılırlar.  
Alert dosyaları(log) ise özel trace dosyalarıdır.Veritabanın mesaj ve hatalarını kronolojik sırada tutarlar.

Backup Files : Bir dosyayı kurtarmak (restore) demek onu backup dosyası ile değiştirmek demektir.Kullanıcı istediği anda ya da sistemde belirtilen anlarda bu dosyaları oluşturabilir.

Oracle Mantıksal Yapısı

Mantıksal kısım başlıca 4 e ayrılır :
  1. Tablespaces  
  2. Data Blocks
  3. Extents 
  4. Segments  
Tablespaces : Her bir veritabanı bir ya da daha fazla tablespace’den oluşur. Buradaki verileri tutmak içinde her bir tablespace için bir ya da daha fazla datafile oluşturulur.Her Oracle veritabanında kullanıcın isteği dısında kurulumu esnasında SYSTEM ve SYSAUX adlarında 2 adet tablespace oluşturulur. Bunlar aslında “smallfile tablespace” olarak adlandırılan küçük ölçekli alanlardır. Bunun dısında uygulamaya göre daha büyük ölçekli “bigfile tablespace”’ler oluştutulabilir.Bu durumda özelikle 64bit sistemlerde çok büyük alanlar oluşturulmasına imkan vermektedir.(Maksimum 8 exabyte).Bu da onlarca küçük alan ile ugrasmaktan kullanıcıyı kurtarır.
NOT :
kilobyte(kB)      210 bytes, gigabyte(GB)    230 bytes, exabyte (EB)    260 bytes

Bir tablespace “online=ulaşılabilir” ya da ”offline=ulaşılamaz” olabilir.”online” normal çalışır halidir.”offline” duruma alınınca(mesela offline backup almak için) bu tablespace’i referans veren objlere için işlem yapılmasına izin verilmez.
 
Data Blocks : Oracle da veriler en düşük seviye de “data block”’larda tutulurlar.Disk üzerinde bir data block byte olarak belli bir alanı işgal eder.Bu alan DB_BLOCK_SIZE parametresi ile belirlenir.

Extents : Ardışık blockların bir araya gelmesi ile oluşurlar.

Segments : Bir ya da daha fazla extent’in bir araya gelmesi ile oluşurlar. Bu extent lerin ardışık olmaları gerekmez.Bir segment’in extent’leri tamamen doldugunda Oracle bu segment için yeni bir extent alanı ayırır.4 farklı segment çeşidinden bahsedilebilir :
  1. Data Segment
  2. Index Segment
  3. Temporary Segment
  4. Rollback Segment   
Data Segment,bir tablo oluşturulur oluşturulmaz daha veri girilmeden alanı ayrılan yapıdır.Dolduğunda  otomatik olarak extent’ler bu data segment için ayrılır.
Indeks segment , her bir index’in verisi için oluşturulur.
Temporary segment bir SQL çalıştığında gerek duyulursa Oracle tarafından kullanılır.İşlem bitiğinde bu alan sistemin kullanımı için serbest bırakılır.
Rollback Segment adı üstünde rollback işlemlerinde kullanılır.

Hiç yorum yok:

Yorum Gönder