7.Managing Database Storage Structures
Burada storage tarafında önemli dosyalarımız var. ( Datafile, Redo Log, Control Files, SPFile vs…)
Datafile — fiziksel dosyanın veritanında mantıksal karşılığı tablespace ( 1 tablespace – en az bir datafileden oluşur. 1 table space birden çok datafile’dan çalışabilir. 1 datafile birden fazla tablespace’le çalışmaz)
Datablokları büyüyüp extentleri oluşturuyor. 8 tane oracle datablock bir araya gelip extent oluşuyor. O extent de gidip tablo oluşturuyor. 1 extent ile bir tablo yaratılır. Tablo içine insert almaya başladıkça extent almaya başlıyor yani büyüyor. Tablo dediğimiz yapılar birer segment bu segmentler de tablespace içerisinde tutuluyor. Tablespace’lerin toplamı da database’i verir.
En küçük olan parça bloktur. (8k) Bloğun içinde row data, free space, block header kısımları vardır. Bir veritabanında boş kısım küçülebilir. İçeriye gelen data devam ettikçe hangi tablepace’e hangi datafile’a kısmı çoğalacak ( metadata) ve free space kısmı azalacak. Default olarak her bloğun %10 kısmı boştur. Ortalama 0.8 kb’lık alan her blok için boştur. 100 gb veritabanında 90 gb veri vardır. Bunun nedeni bloğun içindeki datanın update edilme ihtimalindendir. Eğer full olursa update’yi başka bloğa yapar bu da performans kaybı sağlar.
Server > Stroage > Tablespaces
Yeni bir table space oluştururken:
Dictionary yaratılamaz Locally Managed seçilmelidir. 11g veritabanlarında dictionary managed kavramı yoktur. Neden olduğu sorusunun cevabı ise eski sürümlerde uprgrade’ler apıldığında eski sürümler dictionary olarak gelecek biz ona Locally’e çekeriz. Tablespace’i 100 mb yarattk diyelim tablespace 100 mb’a geldiğinde 1mb olarak extent alıyor. Dictionary managed demek tablespace’in extent managed bilgisi system tablespace’i üzerindedir.(Eski sürümlerde) Extent olmadan önce buraya gelip sisteme extent yönetimini öğreniyor. ( 1mb büyüyor) Sonra tekrar gidip geliyor. Devamlı olarak tablespace’ler arasında konuşmayı gerektiriyor. Ama Locally managed bizim tablespace’imizin kendi header’ında duruyor. Ne yapmak gerektiğini buradan öğreniyor. Bir yere gidip gelmesi gerekmiyor.
%95 olarak permanent – read-write kalıcı veritabanı olması için.
Her veritabanının UNDO tablespace’i ve bir tane TEMP(geçici) tablespace’i olması lazım.
Tablespace’i backup’tan dönerken offline mod seçilir.
Use bigfile tablespace yani en azından bir datafile seçmemiz lazımdır.
Size değeri verilir. Dolduğunda otomatik olarak genişlemesini söyleriz. Bu oranların mantıklı olması lazım. 8kb olan block size’lı veritabanlarında bir datafile 32gb’a kadar büyür.
Extent almak veritabanında en zorlu işlemlerden biridir. ( Performans olarak)
Dropping Tablespaces
İstersek datafile kalır sadece tablespace’i silebiliriz.
Viewing Tablespace Contents
Server > Tablespaces > Viewing Tablespace Contents menüsünden sol altta bulunan extent map ile haritaya ulaşabiliriz.
Oracle-Managed Files (OMF)
show parameter db_create_file_dest
bu parametre değer olarak neyi gösteriyorsa file yaratılacaksa ve ekstra bir durum yoksa +DATA disk grubunun içerisinde yaratılır. Bu parametre yaratılan file’lara otomatik olarak değerler atar ve yerini belirtir.
Eğer boş gösteriyorsa bütün işleri bize yaptırır kendi yapmaz.