*This section discusses logical storage structures: data blocks, extents, segments, and tablespaces. These logical storage structures enable Oracle Database to have fine-grained control of disk space use.
Oracle Database Data Blocks
At the finest level of granularity, Oracle Database data is stored in data blocks. One data block corresponds to a specific number of bytes of physical database space on disk. The standard block size is specified by theDB_BLOCK_SIZE
initialization parameter. In addition, you can specify up to four other block sizes. A database uses and allocates free database space in Oracle Database data blocks.Extents
The next level of logical database space is an extent. An extent is a specific number of contiguous data blocks, obtained in a single allocation, used to store a specific type of information.Segments
Above extents, the level of logical database storage is a segment. A segment is a set of extents allocated for a table, index, rollback segment, or for temporary use by a session, transaction, or SQL parser. In relation to physical database structures, all extents belonging to a segment exist in the same tablespace, but they may be in different data files.When the extents of a segment are full, Oracle Database dynamically allocates another extent for that segment. Because extents are allocated as needed, the extents of a segment may or may not be contiguous on disk.
Tablespaces
A database is divided into logical storage units called tablespaces, which group related data blocks, extents, and segments. For example, tablespaces commonly group together all application objects to simplify some administrative operations.Each database is logically divided into two or more tablespaces. One or more datafiles are explicitly created for each tablespace to physically store the data of all logical structures in a tablespace. The combined size of the datafiles in a tablespace is the total storage capacity of the tablespace.
Every Oracle database contains a
SYSTEM
tablespace and a SYSAUX
tablespace. Oracle Database creates them automatically when the database is created. The system default is to create a smallfile tablespace, which is the traditional type of Oracle tablespace. The SYSTEM
and SYSAUX
tablespaces are created as smallfile tablespaces.Oracle Database also lets you create bigfile tablespaces, which are made up of single large file rather than numerous smaller ones. Bigfile tablespaces let Oracle Database utilize the ability of 64-bit systems to create and manage ultralarge files. As a result, Oracle Database can scale up to 8 exabytes in size. With Oracle-Managed Files, bigfile tablespaces make datafiles completely transparent for users. In other words, you can perform operations on tablespaces, rather than the underlying datafiles.
Online and Offline Tablespaces
A tablespace can be online or offline. A tablespace is generally online, so that users can access the information in the tablespace. However, to simplify administration, sometimes a tablespace is taken offline to make a portion of the database unavailable while allowing normal access to the remainder of the database.Read-only Tablespaces
A tablespace can be read only, which means that data in the tablespace cannot be modified. The primary purpose of read-only tablespaces is to eliminate the need to perform backup and recovery of large, static portions of a database. Oracle Database never updates the files of a read-only tablespace, and therefore the files can reside on read-only media such as CD-ROMs or WORM drives.Türkçesi:
Mantıksal Veritabanı Yapısı
Mantıksal depolama yapıları:veri blokları, kapsam, segment ve tablespace'ler bu bölümde tartışıyor.Bu mantıksal depolama yapıları, disk alanı kullanımı ince taneli kontrol etmek için Oracle Veritabanı için sağlar.
Bu bölüm aşağıdaki başlıkları içerir:
- Oracle Database Data Blocks (Oracle Veritabanı Veri Blokları)
- Extents (Kapsamlar)
- Segments (Segmentler)
- Tablespaces (Tablo aralıkları)
Oracle Database Data Blocks
Taneciklik iyi düzeyde, Oracle Veritabanında veri, veri blokları halinde saklanır.Bir veri bloğu disk üzerindeki fiziksel veritabanı alanı belirli bir sayıda byte karşılık gelir.Standart blok boyutu DB_BLOCK_SIZE başlatma parametresi tarafından belirlenir.Buna ek olarak, diğer dört blok boyutları belirleyebilirsiniz. Bir veritabanı Oracle Veritabanın içindeki veri bloklarının boş veritabanı alanını kullanır ve ayırır.
Extents
Mantıksal veritabanı alanı bir sonraki seviyeyesi bir extent'tir.Bir kapsam, belirli bir tip bilgi depolamak için kullanılan tek bir tahsis olarak elde edilen bitişik veri bloklarının belirli bir sayısıdır.
Segments
Extents'in yukarısında, mantıksal bir veritabanı depolama düzeyi bir segment'tir.Bir segment, bir tablo,kapsamlar,bir dizi, indeks, geri alma segmenti veya bir oturum, işlem veya SQL ayrıştırıcı geçici kullanım için için ayrılmış bir settir.Fiziksel veritabanı yapıları ile ilgili olarak, bir segmente ait tüm extents aynı tablospace var, ama onlar farklı veri dosyaları olabilir.Bir segment extents dolduğunda, Oracle Veritabanın içindeki, bu segment için başka bir boyutu dinamik olarak ayırır. extents gerektiği gibi tahsis edilir, çünkü bir segmentin extent'leri ya da disk üzerinde bitişik olamaz ya da olabilir.
Tablespaces
Gruba bağlı veri bloklarının, extents ve segmentleri bir veritabanı tablespace'ler olarak adlandırılan mantıksal depolama ünitelere bölünmüştür.Örneğin, tablespace'ler birlikte yaygın olarak tüm uygulama nesneleri bazı idari işlemleri basitleştirmek için gruplandırılır.Her veritabanı mantıksal olarak iki veya daha fazla tablespace'ler ayrılmıştır. Bir veya daha fazla veri dosyaları açıkça her tablespace fiziksel olarak bir tablespace içerisinde tüm mantıksal yapıların verileri depolamak için oluşturulur.Bir tablespace içerisinde datafiles'lerin birleştirilmiş boyutu tablo toplam depolama kapasitesidir.
Her Oracle veritabanı bir SYSTEM tablespace ve SYSAUX tablo alanı içerir. Oracle Veritabanın içindeki, veritabanı oluşturulduğunda otomatik olarak oluşturur.sistem varsayılanı Oracle tablospace'ın geleneksel tipi bir smallfile tablo oluşturmaktır.SİSTEM ve SYSAUX tablespace'ler smallfile tablespace'ler olarak oluşturulur.
Oracle Veritabanın içindeki, ayrıca çok sayıda küçük olanları yerine tek bir büyük dosya oluşur bigfile tablespace'ler oluşturmanızı izin verir.Bigfile tablespace'ler Oracle Veritabanın içindeki ultralarge dosyaları oluşturmak ve yönetmek için 64-bit sistemlerde yeteneği kullanmasına izin verin. Sonuç olarak, Oracle Veritabanın içindeki boyutu 8 eksabayt kadar yükseltilebilir.Oracle Managed Files, bigfile tablespace'ler datafiles kullanıcılar için tamamen şeffaf hale getirir.Diğer bir deyişle, temel veri dosyaları daha ziyade, tablespace'ler işlemleri gerçekleştirebilirsiniz.
Online and Offline Tablespaces
Bir tablespace online ya da offline olabilir. Tablespace genellikle çevrimiçi kullanıcılar tablo bilgilere erişebilirsiniz.Ancak, yönetim kolaylaştırmak için, bazen bir tablespace içerisinde veritabanı geri kalanı normal erişim sağlayan veritabanının kullanılamaz bir kısmı çevrimdışı haline getirir.
Read-only Tablespaces
Bir tablespace tablo veri değişiklik olamayacağı, yani sadece okunabilir.salt okunur tablespace'ler birincil amacı, büyük bir veritabanı, statik bölümlerini yedekleme ve kurtarma gerçekleştirmek için gereksinimini ortadan kaldırmatır.Oracle Veritabanın içindeki dosyaları salt okunur bir tablospace'ın asla güncellemez ve bu nedenle örneğin, CD-ROM veya WORM sürücüleri gibi salt okunur medya dosyaları bulunabilir.
Daha Fazla Türkçe Kaynak Eklemek İstersek:
*Mantıksal Bölüm
Oracle veritabanının mantıksal yapısı tablo uzaylarını(tablespaces), şema nesnelerini(schema objects), veri bloklarını(data blocks), genişlemeleri(extents) ve parçaları(segments) içerir.Tablo Uzayı(TableSpace)
Bir veritabanı, ilişkili mantıksal yapıların gruplanmasını sağlayan ve tablo uzayı olarak bilinen mantıksal depolama ünitelerine bölünmüştür.Yukarıdaki şekil veritabanı, tablo uzayı ve veri dosyaları arasındaki ilişkiyi açıklamaktadır. Buna göre:
- Bir veritabanı bir ya da daha fazla tablo uzayına bölünmüştür.
- Tablo uzayı içerisindeki tüm mantıksal yapıları fiziksel olarak depolayabilmek için, her tablo uzayı bir ya da daha fazla veri dosyasına sahip olabilir.
- Tablo uzaylarının toplam kapasitesi, sahip oldukları veri dosyalarının toplam kapasitesine eşittir.(Yukarıdaki şekil için SYSTEM tablo uzayı 2MB, USERS tablo uzayı 4MB).
- Tablo uzaylarının toplam kapasitesi veritabanının toplam kapasitesini belirler.(6 MB)
Veri Blokları(Data Blocks), Genişlemeler(Extents),Parçalar(Segments)
Oracle veritabanında verilerin depolandığı en küçük birim veri bloğu olarak adlandırılır.Bir veri bloğu veritabanının depolama alanı üzerindeki belli bir byte uzunluğuna karşılık gelir. Veri bloğunun uzunluğu veritabanı oluşturulurken belirlenir.Veri bloklarının bir üst birimi genişleme olarak adlandırılır. Bir genişleme art arda olan belirli sayıda veri bloğundan oluşur.
Genişleme’lerin bir üst birimi de parça’lardır. Parçalar belli bir mantıksal yapı için ayrılmış bir dizi genişleme’den oluşurlar. Farklı amaçlar için kullanılan parçalar vardır. Bunlar veri parçaları(data segments), indeks parçaları(index segments), geri alma parçaları(rollback segments) ve geçici parçalardır(temporary segment).
Bir tablo bir veri parça’sından oluşur. Tablonun verileri bu parça içerisindeki genişlemelere kaydedilir.(Oracle8i ile birlikte gelen yeni bir özellik olan bölümlenmiş tablo yapısında her bölüm bir veri parça’sına karşılık gelir.). Yine bir küme(cluster)’de bir veri parça’sından oluşur ve küme içerisindeki tüm tablolar o kümenin veri parça’sında yer alır.
Her bir indeks’te bir indeks parçasından oluşur ve indeks’in bütün verileri indeks parça’sında yer alır. Bir veritabanında, veritabanı kurtarma işlemleri(database recovery) ve yapılan değişkilikleri geri alma işlemleri(rollback) için bir ya da daha fazla geri alma parça’ları yer alır. Geçici parça’lar Oracle tarafından SQL komutları işletilirken ihtiyaç olduğunda oluşturulur ve SQL komutu işlemini bitirdiğinde bu parça tekrar sistemin kullanımına bırakılır.
*Mantıksal Olarak Oracle Veritabanı
Mantıksal olarak veritabanı, en temel anlamda tablo boşlukları , tablolar , indeksle, görüntüler, sıralar veritabanı prosedür ve fonksiyonları gibi yapılardan oluşur.
Tablo Boşlukları (Tablespace)
Tablo boşluğu , kullanıcıların sahip olduğu nesnelerin , veritabanında mantıksal olarak tutulduğu yere verilen addır. Tablo boşlukları, veritabanını daha etkin kullanmak için yaratılır. Bir tablo boşluğu fiziksel olarak , birden fazla veri dosyasına sahip olabilir. Aynı şekilde bir veri dosyasında da , birden fazla tablo boşluğu olabilir. Bir veritabanı kurulduğunda 5 tane tablo boşluğu yaratılması idealdir. Bunlar:
1. System : Oracle ‘ın kendi kullandığı bir tablo boşluğudur. Veri sözlüğü (Data Dictionary),
saklı fonksiyon ve yordam tanımları bu tablo boşluğunda bulunur. Mutlaka yaratılması gerekir. System tablo boşluğunda kullanıcılara ait nesnelerin bulunmaması gerekir.
2. Temporary_data : Veritabanının , sorgu sonucu dönen kayıtları sıralarken veya indeks
yaratırken kullandığı geçici tablo boşluğudur.
3. Rollback_data : Geri alma parçalarının (rollback segment) bulunduğu tablo boşluğudur.
4. User_data : Kullanıcıya ait indeks dışındaki nesnelerin bulunduğu tablo boşluklarıdır.
5. User_index : Kullanıcıya ait indekslerin bulunduğu tablo boşluklarıdır.
Aslında User_data ve User_index tablo boşlukları yerine tüm nesneler tek bir tablo boşluğunda saklanabilir. İki tablo boşluğunun kullanılmasının sebebi , okuma ve yazma işlemleri sırasında hem verinin , hemde indeksin paralel okunmasını sağlayıp , performans kazanmaktır.
Mantıksal olarak veritabanı, en temel anlamda tablo boşlukları , tablolar , indeksle, görüntüler, sıralar veritabanı prosedür ve fonksiyonları gibi yapılardan oluşur.
Tablo Boşlukları (Tablespace)
Tablo boşluğu , kullanıcıların sahip olduğu nesnelerin , veritabanında mantıksal olarak tutulduğu yere verilen addır. Tablo boşlukları, veritabanını daha etkin kullanmak için yaratılır. Bir tablo boşluğu fiziksel olarak , birden fazla veri dosyasına sahip olabilir. Aynı şekilde bir veri dosyasında da , birden fazla tablo boşluğu olabilir. Bir veritabanı kurulduğunda 5 tane tablo boşluğu yaratılması idealdir. Bunlar:
1. System : Oracle ‘ın kendi kullandığı bir tablo boşluğudur. Veri sözlüğü (Data Dictionary),
saklı fonksiyon ve yordam tanımları bu tablo boşluğunda bulunur. Mutlaka yaratılması gerekir. System tablo boşluğunda kullanıcılara ait nesnelerin bulunmaması gerekir.
2. Temporary_data : Veritabanının , sorgu sonucu dönen kayıtları sıralarken veya indeks
yaratırken kullandığı geçici tablo boşluğudur.
3. Rollback_data : Geri alma parçalarının (rollback segment) bulunduğu tablo boşluğudur.
4. User_data : Kullanıcıya ait indeks dışındaki nesnelerin bulunduğu tablo boşluklarıdır.
5. User_index : Kullanıcıya ait indekslerin bulunduğu tablo boşluklarıdır.
Aslında User_data ve User_index tablo boşlukları yerine tüm nesneler tek bir tablo boşluğunda saklanabilir. İki tablo boşluğunun kullanılmasının sebebi , okuma ve yazma işlemleri sırasında hem verinin , hemde indeksin paralel okunmasını sağlayıp , performans kazanmaktır.
Blok , Genişleme ve Parça Kavramı (block,extents, segments)
Blok; Oracle veri tabanında verilerin tutulduğu en küçük birime veri bloğu denilmektedir. Bir veri bloğu , işletim sistemindeki veri dosyalarının , belirli bir sayıdaki byte’ı kadar uzunluğa sahiptir. Bu uzunluklar işletim sistemindeki blok uzunluklardan farklı olabilir. Bir tablo boşluğu yaratılırken , işletim sisteminde veri dosyalarının bulunduğu yer , Oracle tarafından kendi blok yapısına göre düzenlenir. Veri dosyasının tamamı dolu olmasa bile , işletim sistemi ayrılan yeri dolu olarak görür. Veriler, veri bloklarında tutulduğundan dolayı, veri tabanında nesneler için tutulan yer byte olarak görülebildiği gibi , blok sayısı olarak da görülebilmektedir.
Genişlemeler; Nesnelerin büyümek için aldıkları , birbirini takip eden bloklardan oluşan , mantıksal veri tabanı alanlarına “genişleme” adı verilir. Bir yada daha fazla genişleme parçayı(segment) oluşturur. Bir parça eğer tamamen dolarsa , Oracle bu parça için bir genişleme alır. Genişleme kavramı giriş bölümünde Oracle’ın tercih edilme nedenleri arasında gösterilmiştir. Çünkü parçaların genişleme alarak büyümesi , veri tabanındaki büyümenin kontrol altında tutulmasını sağlar. Yaratılan tüm mantıksal nesnelerin (tablo boşluğu , tablo , indeks vs.) ilk genişlemelerin (initial extent) ve sonraki genişlemelerin (next extenets) kaç megabyte olacağı ve en fazla kaç genişleme alabileceği (max extents) veri tabanı yöneticileri tarafından belirlenir ve sisteme tanımlanır.
Parçalar; Birbirini takip eden genişlemelerden oluşan ve bir nesne için ayrılmış mantıksal veri tabanı alanlarına parça adı verilir. Oracle parça oluşturabilmek amacıyla her tablo için veri parçasından, her indeks için de indeks parçasından bir veya daha fazla sayıda genişleme ayırır. Oracle veri tabanı 4 tip parça kullanır:
1. Veri parçaları
2. İndeks Parçaları
3. Geçici Parçalar
4. Geri Alma Parçaları
1. Veri Parçaları : Veri tabanındaki tüm tabloların, veriyi tutacak bir veri parçası vardır. bu veri parçası tablo yaratılırken oluşturulur veri tabanı tablo büyüdükçe belirlenen saklama parametreleri doğrultusunda genişleme alır.
2. İndeks Parçaları : Veri tabanındaki tüm indekslerin, indeks bilgilerini tutacak bir indeks parçası bulunur. Büyümeleri veri parçaları gibidir, indeks büyüdükçe indeks parçası genişleme alır.
3. Geçici Parçalar : Veri tabanında bir sorgulama yapıldığında, Oracle, SQL cümlesini çalıştırabilmek için geçici bir alana ihtiyaç duyar. Özellikle sıralama işlemlerinde veri tabanı indeks yaratılırken bu alan sıkça kullanılır. Geçici parçalar “Temporary”tablo boşluğunda bulunur veri tabanı genişleme alarak büyür. SQL cümleciğinin çalışması bittikten sonra bu parçalar otomatik olarak boşaltılır. Eğer veri tabanında bir geçici tablo boşluğu yaratılmamış ise, geçici parça sistem tablo boşluğunda genişleme alır. Eğer yapılan işlem büyükse ve sistem tablo boşluğunda yer kalmamışsa, işlem yarıda kesilir.
4. Geri Alma Parçaları : Geri alma parçalarında, işlemler sonucu değişen bilgilerin eski hali tutulur. Bu sayede kullanıcı bir güncelleme işlemi yaptıktan sonra “rollback” diyerek işlemi geri alabilmektedir. Geri alma parçaları “rollback” tablo boşluğuna yaratılır veri tabanı isimleri “init.ora” parametre dosyasında “rollback_segments” parametresinde verilir. Bir veri tabanı için aktif kullanıcı sayısı / 4 adet geri alma parçası yaratılmalıdır.
Eğer kullanıcı olarak bir SQL cümlesi yardımıyla bir tabloyu belirli bir kritere göre güncellerse, Oracle, okunan veri bloklarında yer alan değiştirilmiş bilgiyi tablodaki veri parçası bloklarına, bilginin eski hali de geri alma parçalarındaki bloklara yazar. Kullanıcı “commit” derse, geri alma parçalarındaki bilgiler boşaltılır. Eğer kullanıcı “rollback” derse, geri alma parçalarındaki bilgiler tablodaki veri parçası bloklarına tekrar yazılır. Geri alma parçaları, “commit” komutu gelene kadar büyümeye devam ederse, genişleme alır.
Blok; Oracle veri tabanında verilerin tutulduğu en küçük birime veri bloğu denilmektedir. Bir veri bloğu , işletim sistemindeki veri dosyalarının , belirli bir sayıdaki byte’ı kadar uzunluğa sahiptir. Bu uzunluklar işletim sistemindeki blok uzunluklardan farklı olabilir. Bir tablo boşluğu yaratılırken , işletim sisteminde veri dosyalarının bulunduğu yer , Oracle tarafından kendi blok yapısına göre düzenlenir. Veri dosyasının tamamı dolu olmasa bile , işletim sistemi ayrılan yeri dolu olarak görür. Veriler, veri bloklarında tutulduğundan dolayı, veri tabanında nesneler için tutulan yer byte olarak görülebildiği gibi , blok sayısı olarak da görülebilmektedir.
Genişlemeler; Nesnelerin büyümek için aldıkları , birbirini takip eden bloklardan oluşan , mantıksal veri tabanı alanlarına “genişleme” adı verilir. Bir yada daha fazla genişleme parçayı(segment) oluşturur. Bir parça eğer tamamen dolarsa , Oracle bu parça için bir genişleme alır. Genişleme kavramı giriş bölümünde Oracle’ın tercih edilme nedenleri arasında gösterilmiştir. Çünkü parçaların genişleme alarak büyümesi , veri tabanındaki büyümenin kontrol altında tutulmasını sağlar. Yaratılan tüm mantıksal nesnelerin (tablo boşluğu , tablo , indeks vs.) ilk genişlemelerin (initial extent) ve sonraki genişlemelerin (next extenets) kaç megabyte olacağı ve en fazla kaç genişleme alabileceği (max extents) veri tabanı yöneticileri tarafından belirlenir ve sisteme tanımlanır.
Parçalar; Birbirini takip eden genişlemelerden oluşan ve bir nesne için ayrılmış mantıksal veri tabanı alanlarına parça adı verilir. Oracle parça oluşturabilmek amacıyla her tablo için veri parçasından, her indeks için de indeks parçasından bir veya daha fazla sayıda genişleme ayırır. Oracle veri tabanı 4 tip parça kullanır:
1. Veri parçaları
2. İndeks Parçaları
3. Geçici Parçalar
4. Geri Alma Parçaları
1. Veri Parçaları : Veri tabanındaki tüm tabloların, veriyi tutacak bir veri parçası vardır. bu veri parçası tablo yaratılırken oluşturulur veri tabanı tablo büyüdükçe belirlenen saklama parametreleri doğrultusunda genişleme alır.
2. İndeks Parçaları : Veri tabanındaki tüm indekslerin, indeks bilgilerini tutacak bir indeks parçası bulunur. Büyümeleri veri parçaları gibidir, indeks büyüdükçe indeks parçası genişleme alır.
3. Geçici Parçalar : Veri tabanında bir sorgulama yapıldığında, Oracle, SQL cümlesini çalıştırabilmek için geçici bir alana ihtiyaç duyar. Özellikle sıralama işlemlerinde veri tabanı indeks yaratılırken bu alan sıkça kullanılır. Geçici parçalar “Temporary”tablo boşluğunda bulunur veri tabanı genişleme alarak büyür. SQL cümleciğinin çalışması bittikten sonra bu parçalar otomatik olarak boşaltılır. Eğer veri tabanında bir geçici tablo boşluğu yaratılmamış ise, geçici parça sistem tablo boşluğunda genişleme alır. Eğer yapılan işlem büyükse ve sistem tablo boşluğunda yer kalmamışsa, işlem yarıda kesilir.
4. Geri Alma Parçaları : Geri alma parçalarında, işlemler sonucu değişen bilgilerin eski hali tutulur. Bu sayede kullanıcı bir güncelleme işlemi yaptıktan sonra “rollback” diyerek işlemi geri alabilmektedir. Geri alma parçaları “rollback” tablo boşluğuna yaratılır veri tabanı isimleri “init.ora” parametre dosyasında “rollback_segments” parametresinde verilir. Bir veri tabanı için aktif kullanıcı sayısı / 4 adet geri alma parçası yaratılmalıdır.
Eğer kullanıcı olarak bir SQL cümlesi yardımıyla bir tabloyu belirli bir kritere göre güncellerse, Oracle, okunan veri bloklarında yer alan değiştirilmiş bilgiyi tablodaki veri parçası bloklarına, bilginin eski hali de geri alma parçalarındaki bloklara yazar. Kullanıcı “commit” derse, geri alma parçalarındaki bilgiler boşaltılır. Eğer kullanıcı “rollback” derse, geri alma parçalarındaki bilgiler tablodaki veri parçası bloklarına tekrar yazılır. Geri alma parçaları, “commit” komutu gelene kadar büyümeye devam ederse, genişleme alır.
(Excerpt from: http://www.csharpnedir.com/articles/read/?id=388&title=Oracle%20Ve%20%C4%B0li%C5%9Fkisel%20Veritaban%C4%B1%20Y%C3%B6netim%20Sistemleri%20%202 )
Hiç yorum yok:
Yorum Gönder