10 Ekim 2011 Pazartesi

Tablespaces, Datafiles, and Control Files

Oracle Veritabanı mantıksal olarak tablespaclerde , fiziksel olarak tablespace'e karşılık gelen datafileslarda veriyi saklar.Aşağıdaki resimde bu uyum gösterilmiştir.

Veritabanları, tablespaces ve datafiles birbirleriyle çok yakından bağlı olmasına karşın öenmli derecede farklılıkları vardır:
1)Bir oracle veritabanı en azından iki tane tablespace olarak adlandırılan toplu olarak bütün veritabanı verilerini depolayan depolama birimilerini içerir.SYSTEM ve SYSAUX tablespaces ve isteğe bağlı olarak TEMP olarak adlandırılan üçüncü veritabanı da sahip olanız gerekir.

2)Oracle Veritabanı içinde her tablespace, Oracle Veritabanını içinde çalıştığı işletim sistemine uyumlu fiziksel yapılar olan datafiles, bir ya da daha fazla dosya içerir.

3)Bir veritabanı verisi her veritabanı tablespacesini oluşturan datafiles içinde toplu olarak depolanır.Örneğin Bir veritabanı bir tablespace ve bir datafile'a sahip olsun.Başka veritabanı ise her birinde 2 tane datafile bulunan 3 tane tablespaces sahip olabilir.(Toplam olarak 6 datafiles içerebilir)
    Bir Veritabanı için Daha fazla Boşluk Ayırma Nasıl Yapılır?
    Bir tablo boyutu tablo meydana getiren datafiles boyutudur.Bir veritabanı boyutu, veritabanı meydana getiren tablespace'ler hepsinin boyutudur.
Veritabanını şu üç yolla genişletebilirisiniz:
  • Tablespace'e yeni bir datafile ekleyecek
  • Yeni bir tablespace ekleyerek
  • Datafile'ın boyutunu artırarak

Var olan tablespace ayrı bir datafiles eklediğinizde, ilgili tablespace için disk alanının miktarını artırısınız.Aşağıdaki resimde bu artım gösterilmektedir.

Alternatif olarak veritabanını boyutunu artırmak yeni bir tablespace ekleyebilirsiniz.Aşağıdaki resimde bu gösterilmiştir.

İsteğe bağlı üçüncü database genişletme ise datafiles'ın boyutunu değiştirerek veya daha fazla alana ihtiyaç olduğunda var olan tablespace içinde datafile'lara dinamik olarak büyüme izni vermektir.Bunu mevcut olan dosyalır değiştirerek veya dinamik uzatma özellikleri ile dosyalar ekleyerek başarabilirsiniz.Aşağıdaki resimde örneği görülmektedir:


TableSpaces (Tabloaralığı)
Oracle veritabanında en üst seviyede kullanılan mantıksa gruplamadır.Bir tablo aralığı genelde birbirleriyle ilgili mantıksal yapıları bir arada toplamak için kullanılır.Mesala bir uygulamaya ait tabloları bir tabloaralığında toplayabilirsiniz.Bu şekilde gruplama veritabanı yönetimi kolaylaştırır.Bir veritabanı oluşturulduğunda Oracle SYSTEM tablo aralığını oluşturur ki bu tablo aralığı Oracle'ın çalışması için gereklidir.Tablespace tamamen mantıksal bir yapıdır. Benzer verileri gruplayarak veri yönetimini kolaylaştırmak için oluşturulmuştur. Bunları dosya sistemi üzerindeki klasörler olarak düşünebiliriz. Klasörler, benzer dosyaları gruplayarak işimizi çok kolaylaştırır, fakat onlar aslında gerçek dosyalar değildir, veri taşımazlar, varolan verileri (dosyaları) bir arada tutar, gruplarlar.
TablesSpaces hakkkında bir çok farklı tablespace ve görevlerinden bahsedebiliriz.Başlıcaları:
  • Bigfile Tablespaces
  • The SYSTEM Tablespace
  • The SYSAUX Tablespace
  • Undo Tablespaces
  • Default Temporary Tablespace
  • Using Multiple Tablespaces
  • Managing Space in Tablespaces
  • Multiple Block Sizes
  • Online and Offline Tablespaces
  • Read-Only Tablespaces
  • Temporary Tablespaces
  • Transport of Tablespaces Between Databases

Tablespace, Schema ile aynı şey değildir. Tablespace verileri, Datafile bazında gruplar, Schema ise kullanım izinleriyle alakalıdır, bir kullanıcının kullanım izni olan objelerinin gruplanması, o kullanıcının Schema'sını oluşturur. Schema da tamamen mantıksaldır, ve mantıksal veriyi gruplar. Ama Tablespace, fiziksel veriyi gruplar.

           ● SYSAUX ve SYSTEM Tablespace'leri sistem verisine ilişkin datafile'ları gruplar ve bunlar çalışan bir database'de olmak zorundadır. Aynı zamanda Temporary ve Undo datası için de birer tablespace vardır sistemde. Undo Tablespace'de undo datası vardır, Temporary tablespace'de ise, çalıştırılan SQL komutlarının geçici datası vardır. Örneğin iki tablo join edilerek üzerinden gruplama veya filtreleme yapılacaksa, önce join edilir ve join edilen tablo Temporary Tablespace'te oluşturulur, daha sonra onun üzerinden ne yapılacaksa yapılır. (Join edilen tablo direk memory'e sığıyorsa bu tablespace kullanılmayabilir)

            ●
Bigfile Tablespace diye bir tip de vardır. Bunun özelliği, içinde yanlızca bir datafile bulunması ve 128 TB'ya kadar veri saklayabilmesi.

Tablespace'lerde alakalı alan yönetimi(space management) 2 tür olabilir: Dictionary Managed ve Locally managed. Dictionary Managed'da alan bilgisi Oracle'ın dictionary'sinde tutulur ve gerekli olduğunda ordan okunarak kullanılır. Fakat bu, eski sistemlerde mevcuttu ve 8i ile birlikte Locally Managed Tablespace'ler geldi. Bunun modası geçti :) Maliyet açısından dezavantajları vardı. Locally Managed'da ise alan bilgisi datafile header'ı içinde bitmap olarak tutulur ve ihtiyaç duyulduğunda oradan kullanılır. 

    Datafiles
    Bu dosyalar veritabanındaki tüm verilerin saklandığı dosyalardır.Bir Oracle tabanında en az bir olmak üzere bir veya daha fazla veri dosyası bulunabilir.Her bir veri dosyası sadece bir tablespace ile ilişkilendirilir ancak bir tablespace biren fazla datafile ile ilişkili olabilir.Sitemde kayıtlı olan datafiles yerini şu şekilde bulabiliriz.

SQL> SELECT NAME FROM v$datafile;

çalıştırarak ekran çıktısın şu şekilde olacaktır.

Control Files
Her oracle veritabanında en az bir tane control files vardır.Control dosyalarında Oracle'ın fiziksel yapısına ilişkin bilgiler saklanır.Control file, databse'in adı, oluşturulma tarihi, datafile'larının konumu, log dosyalarının konumu, backup bilgisi gibi, database ile ilgili bilgi ve konfigürasyonları tutan dosyalardır. Her database'in mutlaka bir control file'ı vardır. Bu dosyalar database'i ayağa kaldırmak için gerekli bilgileri içerir, haliyle database'in içinde saklanamayacak bilgilerdir bunlar, bu yüzden control file'lara ihtiyaç vardır.Oracle bu dosyanın birden fazla kopyasının oluşturmasına izin verir.

SQL> SELECT NAME FROM V$CONTROLFILES;

çalıştırarak ekran çıktısın şu şekilde olacaktır:

 
Oracle yapısını ve sistemin içeriğini öğrenmek eğer bize heyecan veriyorsa o zaman doğru yerdeyiz.Daha yolun başındayız fakat azimli çalışmayla bu işin altında kalkarız İnşallah.Daha sonraki makelelerimizde görüşmek üzere.Allah'a emanet olun.SelamunAleykum ve Rahmetullahi ve Berekâtuhu...




Hiç yorum yok:

Yorum Gönder