Oracle Tablespace
Merhaba arkadaşlar
Öncelikle tablespace veritabında mantıksal saklama birimlerine bölünür ; aralarında bir ilişki olan mantıksal yapıların gruplanmasında kullanılır . Tablespace’ler sıfır ya da sıfırdan fazla segment’e sahip olabilirler.
Hatırlayalım arkadaşlar
Sistemi Blokları –> Oracle Blokları –> Oracle Extent’leri –> Oracle Segment’leri
Tablespace’ler arkadaşlar kullanıcıların sahip olduğu nesnelerin mantıksal olarak tutulduğu yerlerdir . Oracle kurulduğunda ,standart olarak 4 tane tablespace oluşturur.
System : Sistem nesnlerinin saklandığı alandır.
Temporar_Data : Veritabanı parçalarının geçici olarak saklandığı yerdir.
Rollback_Data : Her alanın yedeklerinin saklandığı geri alma parçalarının bulunduğu yerdir.
User_Data : Kullanıcıların nesneleri için oluşturulan tablespace’dir.
Bir tablespace online (erisilebilir) ya da offline (erisilemez) olabilir. Normalde tablespace‘ler üzerlerindeki bilgiye erisimin yapilabilmesi için online konumundadir. Fakat bazi özel amaçlarla tablespace‘ler offline konumuna alinabilirler.
Tablespace nasıl oluşturulur bir bakalım .
SQL>create tablespace memo_tbs datafile ‘/u01/app/oracle/product/11.2.0/dbhome_1/my_datafile/memo_tbs01.dbf’ size 10M autoextend on maxsize 50M extent management local uniform size 64K;
Biraz açıklıcak olursak memo_tbs isimli bir tablespace oluşturduk oluşturacağımız dizini yazdık . Daha sonra Datafile’in başlangıç boyutunu belirledik size 10M diyerek datafile’in maximum boyutunu belirledik daha sonra Extent’lerin local olarakmı yoksa dictionary tarafındanmı yönetilmesini belirledik ve datafile’nin başlangıç boyutu dolduğunda ne kadar ebatlarda büyütüleceğini belirledik .
Arkadaşlar boyutlatla ilgili önemli bir noktaya var tablespace’in boyutu yoktur yani tablespace’ler genişletilemezler çünkü mantıksaldır bu boyutlarda nerden çıktı diyecek olursanız biz orada tablespace’lerin içersindeki veri dosyalarının boyutunu belirliyoruz ve bu veri dosyalarının boyutlarının büyütülmesi ile tablespace’ler büyür.
Geçici (Temporary) Tablespace Oluşturmak
Oracle 11g veritabanı temporary tablespace’i kullanarak sıralama (sort) işlemlerini yaparız . Temporary tablespace, temporary segment’leri için kullanılmaktadır ve gerektiği takdirde veritabanı tarafından yönetilmektedir. Bu tipte temporary segment’leri genelde aşağıdaki işlemler için kullanılmaktadır
GROUP BY , ORDER BY , CREATE INDEX , Hash Join (Yığın birleşimi) , Insert into cümleciği
Bir örneklede Temporary Tablespace oluşturalım.
SQL>create temporary tablespace memo_temp01 tempfile ‘/u01/app/oracle/product/11.2.0/dbhome_1/my_datafile/memo_temp01.dbf’ size 16M autoextend on next 4M maxsize 100M extent management local;
Undo Tablespace
Undo Tablespace’ler temporary de olduğu gibi bir çeşit segmentler topluluğudur. İçerisindeki bulunduğu segmentlere ungo segmentler deniliyor ve bu segmentlerin amacı ;
1) Bir transaction’ı ROLLBACK yapmak (rollback komutu ile, başarısız olmadan).
2) Bir transaction’ı ROLLBACK yapmak (başarısız olduktan sonra yapılacak rollback).
3) Okuma tutarlılığını sağlamak.
4) Mantıksal bozulmaları kurtarmak.
Bir Undo Tablespace oluşturalım;
create undo tablespace memo_undo datafile ‘/u01/app/oracle/product/11.2.0/dbhome_1/my_datafile/memo_undo01.dbf’ size 20M;
Bigfile ve Smallfile Tablespace Oluşturmak
Bir bigfile tablespace yalnız bir veri (geçici) dosyadan (datafile veya tempfile) oluşmaktadır ve boyut olarak 2 üzeri 32 veri bloğundan oluşabilir. 32KB blok boyutu kullanmakta olan bir bigfile tablespace’in çıkabileceği (içerisindeki tek datafile’ın boyutu) toplam boyut 128TB’dir.
Bu tipte tablespace’ler çok büyük veritabanları için tasarlanmıştır. Eğer datafile adedini düşürürseniz checkpoint’in datafile başlıklarını güncellemesi kısmen daha hızlı olacaktır. Bir bigfile tablespace yaratmak için yapılması gereken tek şey “BIGFILE” özel kelimesini eklemektir;
SQL> CREATE BIGFILE TABLESPACE ogan_tbs DATAFILE ‘/db/memo/mydf_01.dbf’ SIZE 20G;
Tablespace created.
Smallfile tablespace olarak adlandırdığımız tipte ise bir tablespace’e ait birden çok veri dosyası olabilmektedir. Örneğin 8KB blok boyutu kullanmakta olan bir tablespace’e ait veri dosyalarının azami boyutu 32GB olabilmektedir. Bir smallfile tablespace yaratabilmek için BIGFILE özel kelimesini gözardı edebilir veya isteye bağlı olarak SMALLFILE ekleyebiliriz;
SQL> CREATE [SMALLFILE] TABLESPACE ogan_tbs DATAFILE ‘/db/memo/mydf_01.dbf’ SIZE 20M;
Tablespace created.
Temporary tablespace’yi offline mode yapmak için
SQL>alter tablespace memo_temp tempfile offline;
Tablespace altered.
Tablespace’imize yeni bir datafile eklemek için ;
SQL> alter tablespace memo_tbs add datafile ‘/u01/app/oracle/product/11.2.0/dbhome_1/my_datafile/memo_tbs02.dbf’ size 10M;
Tablespace altered.
Gelin yeni bir user oluşturalım ve userimizin hangi tablespace ile çalışacağını belirleyelim
SQL> create user turkishh identified by turkishh default tablespace memo_tbs temporary tablespace memo_temp01;
User created.
Umarım yararlı olmuştur
İyi çalışmalar 😉