Home / MAKALELER / Veri Tabanı / Tablespace Yönetimi – 1

Tablespace Yönetimi – 1

Bu yazı dizisinde Database, Tablespace ,datafile, segment, extent kavramlarını birbiriyle ilişkilerini kullanımlarını öğreneceğiz. Yazı dizisinin ilkinde makalemizde kavramlarını tanıtmayı amaçlıyorum

Tablespace , fiziksel olarak tek bir datafile yada datafile’lardan oluşan mantıksal yapılardır. Oracle database’ deki veri yapılarının temeli datafile (veri dosylarına) dayanır. Datafile’ ler ise mantıksal anlamda bir yada birden fazla segment’den, segment’ler de extent’lerden oluşur. Extent’ lerde database bloklarından oluşur. Hiyerarşik olarak en küçük birim database bloklarıdır. Aşağıda bir tablespace içindeki datafile ve onlar içindeki nesneleri örneklendirmiştir.

logical logical1

 

 

Source:Oracle

 

Bir oracle server database’ inde standart tablespace’ ler ve amaçları yazılmıştır.

System Tablespace: Sys kullanıcısına ait bilgiler bulunan tablespace’dir. Oracle Server için olmazsa olmaz en önemli tablespace’lerdir.İçerisinde Data dictionary tabloları vardır. Package, store procedure , fonksiyon ve trigger gibi PLSQL birim yapıları bulunur. System tablespace’ silemeyiz ve ismini değiştiremeyiz.

Sysaux Tablespace:Automatic Workload Repository(otomatik iş yükü ambarı) raporlarının saklandığı, System tablespace’in yardımcı tablepace’dir.

Genel olarak içierisinde Oracle strams, Logical standby işlemleri, Logminer, Schedular yapısı bu tablespace’ de yapılır. Önceki sürümlerde bu işlerin tümü system tablespace içerisinde yürütülmekteydi.

Sysaux tablespace silemeyiz ve ismini değiştiremeyiz.

Users Tablespace: User’ lara ait data dosyalarının tutulduğu tablespace’ lerdir. İçerisinde kullanıcılara ait şema nesneleri bilgileri bulunur.

Temporary tablespace, temp (geçici) dosyalarının yer aldığı tablespace’dir. Genel olarak büyük oranda gruplama(group by) ve sorting(order by, joining) işlemleri kullanıcının PGA alanı yetersiz kaldığında bu işlemlerin yapılabilmesi için extra bir boş alana ihtiyaç vardır. Bu alanlar için System tablespace yerine temp tablespace içerisindeki tempfile kullanılmaktadır. Eğer system tablespace , local yönetimli oluşturulmuşsa default bir temporary tablespace oluşturmak zorundayız. Kullanıcıların default olarak bu temporary tablespace kullanması için default oalrak tanımlanmalıdır.

Undo tablespace , Undo bilgisini tutan ve yönetimini sağlayan tablespace’ dir. Kullanıcının yaptığı DML işlemleri önce Rollback segmentinde tutulur. Kullanıcı yaptığı işlemleri onaylayabilir yada vazgeçip transaction’ı geri almak isteyebilir. Şayet Commit işlemi yapmamışsa transaction geri alınacaktır. Rollback komutuyla transaction geri alınabilir. Commit işlemi ise transaction’ on onaylanma işlemidir. Rollback segmenti Undo Tablespace içerisinde yer alır. Veri tabanı için önemli bir tablespace’ dir.

Bir veritabanında birden fazla undo tablespace yer alır. Birden fazla olmamaktadır. İsteğe göre tek bir tane kalmak şartıyla yeniden oluşturulup eskinin silinmesi yada offline edilmesi şartıyla değiştirilebilir. Read Only durumuna getirilemezler.

Example tablespace: Opsiyonel bir tablespace ‘dir. Oracle database kurulumunda isteğe göre örnek sh ve hr şema bilgilerini içinde barındıran tablespace’ dir. Trainer amaçlıdır.

Aşağıdaki sorguda Veritabanında tüm tablespace’lerin boş alan miktarlarını öğrenebiliriz.

SQL> select sum(bytes), tablespace_name from dba_free_space group by tablespace_name;

 

SUM(BYTES) TABLESPACE_NAME
---------- ------------------------------
  73465856 EXAMPLE
  14745600 SYSAUX
  10354688 SYSTEM
    983040 TEMP
 175702016 UNDOTBS1
  53346304 USERS

6 rows selected.

 

CREATE DATABASE cümlesi ile yeni bir database oluşturma:

Manuel olarak ta aşağıdaki kodları çalıştırarakta database oluşturulabilir. Daha önceden “/u01/app/oracle/oradata/mydb”dzin yapısı oluşturulur ve okuma yazma hakkı verildiğini ve initmydb.oradosyasıiçinde db_name ve controlfile yeri ve sayısı belirtildiğinde aşağıdaki komutu çalıştırarak yeni bir database oluşturabiliriz.

CREATE DATABASE mydb
   USER SYS IDENTIFIED BY mhm
   USER SYSTEM IDENTIFIED BY mhm
   LOGFILE GROUP 1 ('/u01/app/oracle/oradata/mydb/redo01.log') SIZE 200M,
           GROUP 2 ('/u01/app/oracle/oradata/mydb/redo02.log') SIZE 200M,
           GROUP 3 ('/u01/app/oracle/oradata/mydb/redo03.log') SIZE 200M
   MAXLOGFILES 5
   MAXLOGMEMBERS 5
   MAXLOGHISTORY 1
   MAXDATAFILES 100
   CHARACTER SET US7ASCII
   NATIONAL CHARACTER SET AL16UTF16
   EXTENT MANAGEMENT LOCAL
   DATAFILE '/u01/app/oracle/oradata/mydb/system01.dbf' SIZE 325M REUSE
   SYSAUX DATAFILE '/u01/app/oracle/oradata/mydb/sysaux01.dbf' SIZE 325M REUSE
   DEFAULT TABLESPACE users
      DATAFILE '/u01/app/oracle/oradata/mydb/users01.dbf'
      SIZE 200M REUSE AUTOEXTEND ON MAXSIZE UNLIMITED
   DEFAULT TEMPORARY TABLESPACE temp
      TEMPFILE '/u01/app/oracle/oradata/mydb/temp01.dbf'
      SIZE 20M REUSE
   UNDO TABLESPACE undotbs
      DATAFILE '/u01/app/oracle/oradata/mydb/undotbs01.dbf'
      SIZE 200M REUSE AUTOEXTEND ON MAXSIZE UNLIMITED;

 

Yeni bir tablespace oluşturma:

Genellikle tüm Persistent(kalıcı) tablespace’ ler local olarak yönetilmektedir.

CREATE TABLESPACE test DATAFILE '/u02/oracle/oradata/test01.dbf' SIZE 200M
EXTENT MANAGEMENT LOCAL AUTOALLOCATE;
SEGMENT SPACE MANAGEMENT AUTO;

Table space oluştururken En az bir datafile girmemiz gerekiyor. Zaten tablespace mantıksal yapı olduğunu başta belirtmiştik . 

Şayet Tablespace içerisindeki extentlerin farklı değişken boyutta olunması isteniyorsa, Extent yönetimi AUTOALLOCATE belirtmemiz gerekir. Default Extent boyutu 64KB’dır. Eğer tablespace içerisindeki extent’ lerin aynıspesifik boyutta istiyorsak extent yönetimini UNIFORM olarak bildirmemiz gerekiyor.

Örnek:

Extent boyutu default 128KB olacak şekilde 200 mb boyutunda “test_uni”isminde bir tablespace oluşturduk. Size parametresini belirtmezsek o zaman default uniform size1M olacaktır.

CREATE TABLESPACE test_uni DATAFILE '/u02/oracle/oradata/test02.dbf' SIZE 200M
EXTENT MANAGEMENT LOCAL  UNIFORM SIZE 128KB;
SEGMENT SPACE MANAGEMENT AUTO;

Not: Extent yönetimi tamamen kullanacağımız veritabanı yönetim sistemine göre değişiklik gösterecektir. Datawarehouse sistemlerde extent ve db_block_size büyük seçilebilir. DML aktivasyonu çok içeren sistemlerde ise performans açısından Autoallocate seçilmesi daha uygundur. 

 

Yeni oluşturulan tüm permanent tablespace’ler default olarak segment yönetimi otomatiktir. Automatic segment Management ise segment içerisindeki free alanı otomatik koordinasyonun sağlar. Automatic Segment Management manual segment yönetimine göre oldukça verimlidir.Manuel Segment kendi içinde freelist algoritması kullanır.

ALTER TABLESPACE komutu ile de mevcut tablespace üzerinde değiştirmeler, eklemeler, silme gibi durum değiştirme işlemlerini yaparız.

Tablespace ‘büyümesi:

ALTER TABLESPACE test
    ADD DATAFILE '/u02/oracle/oradata/test03.dbf' SIZE 100M
      AUTOEXTEND ON
      NEXT 512K
      MAXSIZE 250M;

Yukarıdaki mevcut test tablespace için  ihtiyaç duyulduğunda datafile için  512 KB’ ar büyüyerek, maksimum 250 MB’a kadar otomatik büyüyecek şekilde oluşturulmuştur. Segment yönetimi otomatik ve autoallocate extent yönetimine sahiptir.

AUTOEXTENT ON Avantajı, datafile maximum alan sınırına eriştiğinde herhangi bir müdahaleye gerek kalmaz. Database ilgili datafile ‘i otomatik alan  belirtilen artışta kazandırır.

 

ALTER DATABASE DATAFILE '/u02/oracle/oradata/test03.dbf'  AUTOEXTEND OFF;

İle test03.dbf datafile’ ın otomatik büyümesi disable edilmiştir.

ALTER DATABASE DATAFILE ‘/u02/oracle/oradata/test03.dbf’ AUTOEXTEND ON NEXT 512K MAXSIZE 250M;

İle test03.dbf datafile’ ın otomatik büyümesi enable edilmiş ve büyümeye izin verilmiştir.

About Muhammet Ucar

2005 Selçuk Üniversitesi Teknik eğitim Fakültesi Bilgisayar Sistemleri Öğretmenliğinden mezun olduktan sonra İstanbul 'da yaşamaya başladım. 2009 yılından beri Oracle yönetimsel anlamda çalışıp makale paylaşımı yapmaktayım. OCP 11gR2 ve OCA 11gR2 sertifikalarına sahibim. Daha çok kişisel projelerde çalıştım. Free Veritabanı Danışmanlığı ve Eğitmenliği yapıyorum.

İlginizi Çekebilir

SQL Server ile Veri Şifreleme

Bilgi teknolojilerinde verinin güvenliği çok kritik bir öneme sahiptir. Önemli verileri korumak için ekstra bir …

Bir Cevap Yazın