C#nedir?com
 
YAZAR HAKKINDA
Kubilay Kulaoğlu
Kubilay Kulaoğlu
http://www.csharpnedir.com/
İletişme geçmek için tıklayın.
9 Makalesi yayınlanmakta.
Yazar hakkında detaylı bilgi için tıklayın.
Yayınlanan diğer makaleleri için tıklayın.
İlgili etiketler: dosyalari dosyalarinin fiziksel genisleme hakkinda indeks kontrol kullanici mantiksal oracle tabani tabaninda tabanindaki tabaninin yapilan ADO.NET/SQL Kubilay Kulaoğlu
 
YAZI HAKKINDA
Türü : Makale
Serbest Köşede C#nedir?com üyelerinin hazırladıkları yazılar yayınlanır. Bu yazılar editör incelemesine girmeden yayınlanır.
Seviyesi : Başlangıç
Kategori : ADO.NET/SQL
Yayınlanma Tarihi : 21.10.2004
Okunma Sayısı : 43017
Yorum Sayısı : 0     yorum yaz
Site İçi AramaSİTE İÇİ ARAMA
Üye Girişini AçÜye GİRİŞİ
Üye girişi için tıklayın.
Kullanıcı Adı
Şifre
 
Beni her zaman hatırla
Bir hafta boyunca kullanıcı bilgilerinizi kullanıcı çıkışı yapana kadar hatırlar. (Paylaşılan bilgisayarlarda önerilmez.)
 
Şifremi / Kullanıcı Adımı unuttum.
 
.net TV RSS Serbest KÖŞE (?)
Serbest Köşede C#nedir?com üyelerinin hazırladıkları yazılar yayınlanır. Bu yazılar editör incelemesine girmeden yayınlanır.
emre TAŞ
XML - Deniz Kılınç
emre TAŞ
yazının devamı >
emre TAŞ
Decompiling and Reverse Engineering .Net Radyo
emre TAŞ
yazının devamı >
emre TAŞ
Masaüstü mü ? İnternet Mi? .Net Radyo
emre TAŞ
yazının devamı >
emre TAŞ
.Net Kavramları - .Net Radyo
emre TAŞ
yazının devamı >
emre TAŞ
Yeni Başlayanlar için - .Net Radyo
emre TAŞ
yazının devamı >
Makale Gönder Bende Yazmak İstiyorum
.net TV RSSBlogroll
Turhal Temizer 'in Blogu
Conda install environment.yml Package 12.12.2019
Turhal Temizer 'in Blogu
Mac OS/X Removing CUDA 12.12.2019
Burak Selim Şenyurt
Ruby Tarafından Redis(Docker Bazlı) Veritabanı ile Konuşmak 12.12.2019
Burak Selim Şenyurt
Bir React Uygulamasında En Ala SQL Veritabanını Kullanmak 12.12.2019
  Diğer Herşey
Sponsorlar
BT Akademi
Medya Portakal
Video Hosting Sponsoru
Csharpnedir.com bir Ineta üyesidir
Uzman Abi
Her Yönüyle C# - Sefer Algan
Oracle Ve İlişkisel Veritabanı Yönetim Sistemleri 2
 
Kapat
Sayfayı Yazdır Sık Kullanılanlara Ekle Arkadaşıma Gönder MySpace Del.Ico.Us Digg Facebook Google Mixx Reddit StumbleUpon
Oracle Veri Tabanı Oracle veri tabanının fiziksel veri tabanı mantıksal olmak üzere iki bölümü vardır. Kontrol dosyaları ( control files) , veri dosyaları (data files) , redo log dosyaları (redo log files) veri tabanı init.ora parametre dosyası fiziksel bölümü oluşturur. Mantıksal bölümü ise tablo boşlukları, tablolar, indeksler, program parçaları , görüntüler, kullanıcılar vs. oluşturur.

Fiziksel Olarak Oracle Veri tabanı


Fiziksel olarak bir veri tabanı ; veri dosyaları, kontrol dosyaları veri tabanı redo log dosyalarından oluşmaktadır.

Kontrol Dosyaları

Veri tabanının durumunu veri tabanı fiziksel yapısını tutan dosyalardır. Veri tabanı açılırken , kontrol dosyasını okuyarak , fiziksel olarak tüm veri dosyalarını , redo log dosyalarını kontrol eder. Eğer bu dosyalarda bir uyumsuzluk söz konusu ise veya kontrol dosyası bozulmuş ise veri tabanı açılmaz .
Bu nedenle kontrol dosyaları çok önemlidir veri tabanı en az iki kopya olarak ve iki farklı disk üzerine yaratılmalıdır. Kontrol dosyalarının isimleri “init.ora” parametre dosyasında “control_files” parametresinde verilmektedir.

Veri Dosyaları

Veritabanındaki tablolar, indeksler gibi tüm mantıksal yapıların , fiziksel olarak saklandığı dosyalardır. Bir veri tabanının performanslı çalışabilmesi fiziksel olarak ayrı disklere yerleştirilecek minimum 5 veri dosyası olmalıdır. Bunlar:

1. Oracle’ın arka plandaki işlemleri için kullandığı sistem dosyası,
2. Sadece tablo kayıtlarının tutulduğu indeks dosyası,
3. Tabloların indekslerinin tutulduğu indeks dosyası ,
4. Sıralama işlemleri için veri tabanının geçici olarak kullanıldığı “temporary” dosyası,
5. Geri alma işlemlerinin tutulduğu “rollback” dosyası

Eğer bu dosyalar fiziksel olarak ayrı disk üzerinde tutulmaz ise paralel , okuma veri tabanı yazma yapılamayacağı için performansı negatif olarak etkiler. Veri tabanı çok büyükse , veri ve indeksler birden fazla veri dosyasında tutulabilir. Bazı işletim sistemlerinde , yaratılan veri dosyalarının boyu ile ilgili kısıtlamalar vardır. Örneğin Sun Solaris işletim sisteminde 2GB ‘dan daha büyük dosya yaratılamaz. Bu durumda datalarımız 9 GB’lık yer kaplıyor ise en az 5 tane veri dosyası yaratmamız gerekir. Yaratılabilecek maksimum veri dosyası sayısı “init.ora” parametresindeki “db_files” parametresi ile verilmelidir.

Redo Log Dosyaları


Veritabanındaki tüm “commit” olmuş değişikliklerin , kurtarma yapılırken kullanılmak üzere kaydedildiği dosyalardır. En az iki redo log grubu tanımlanır. Bu dosyaların boyu ve grup sayısı veri tabanı yaratılırken sisteme tanımlanır. Sonradan bu tanımlar değiştirilebilmektedir. Redo log dosyalarının boyu , ideal olarak yarım saatte bir değişecek (swich) şeklinde ayarlanmalıdır. Redo log dosyalarının çok küçük olması , sistemde beklemelere neden olur. Çok büyük olmasa da veri tabanı açılırken yapılan otomatik kurtarma işleminin çok uzun sürmesine yol açar ve aktif redo log dosyalarının silinmesi yada bozulması durumunda da daha fazla veri kaybı olmasına neden olur. Redo log dosyalarının boyunun iyi ayarlanamaması Oracle’ın dezavantajlarına bir örnek oluşturmaktadır.
Sistemin güvenliği açısından her gruptaki redo log’u iki kopya olarak veri tabanı farklı disketlerde yaratmak gerekir. Redo log’lar kesinlikle raid disk üzerine konulmamalıdır. Çünkü redo log dosyaları üzerine sürekli yazma yapılmaktadır ve raid diskler yazma işleminin yavaşlatır.
Redo log dosyaları bir döngü içersindedir. Bir gruptaki redo log dolduğunda otomatik olarak diğer gruba geçer ve işlem bu şekilde devam eder.
Eğer veri tabanı arşiv modda ise bu dolan redo log dosyasının bir kopyası arşiv.log olarak kopyalanır ve kurtarma amaçlı saklanır.

İnit.ora Parametre Dosyası

Parametre dosyası, bir instance başlığında okunan , konfigurasyon parametrelerinin tutulduğu bir text dosyasıdır. Bu dosyada kontrol dosyalarının isimleri ve yeri , veri tabanının adı , SGA da yer alan bellek yapılarının boyutları ve veri tabanındaki işlemler ile ilgili bazı ayarlar tutulur. Veri tabanın arşiv modta olup olmayacağı da yine bu dosyada bulunur.

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.

Tablolar (Tables)

Veritabanınında bilgilerin tutulduğu alanlar tablolardır. Tablolar belirli karakteristiklere sahip kolonlardan oluşur. Bilgiler satır satır tutulmaktadır. Bir tabloda sınırsız sayıda satır olabilir.

İndeksler (indexes)

Tablolarda aranan kaydı daha çabuk bulabilmek için tanımlanan nesnelere indeks denir. İndeksler daha çok kullanılan kolonlar üzerine tanımlanır. İndeksin seçiciliği ne kadar fazla ise sorgulama o kadar hızlı olur.

Görüntüler (views)

Görüntüler bir anlamda saklanmış sorgulamalardır. Aynı veya farklı veri tabanları üzerinde bulunan bir veya birden fazla tablonun belirli kolonların , belirli bir kritere göre bir araya getirilmiş şeklidir, bu nedenle tablolarda herhangi bir değişiklik olduğunda görüntülerde buna bağlı olarak değişir. Görüntüler sorgulanabilir. Arkalarında tablo olduğu için giriş, güncelleme ve silme işlemleri de yapılabilmektedir. Sadece Oracle veri tabanında birden fazla tabloda oluşan görüntüler üzerinde veriler değiştirilebilmektedir. Örneğin informix sadece bir tablodan oluşan görüntüdeki değiştirilebilmesini desteklemektedir. DB2 ise farklı veri tabanları üzerindeki tablolardan görüntü yaratılmasına olanak vermez. Görüntüler bir veya birden fazla tablonun bir kritere göre bir araya getirilmiş şekli olduğundan performansı çok iyi değildir.

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.

Sıralar (Sequences)

Sıra, veri tabanındaki bir tablonun sayısal bir kolonuna tek (unique) bir sayı listesi üretir. bu sayı listesi olarak bir havuz düşünülebilir. Eğer oracle kolona bir sayı girilecekse kullanıcı oracle havuzdan sıradaki numarayı seçer. Bu durum, çok kullanıcı ortamlarda, sıralı gitmesi gereken veri tabanı asla çakışmaması gereken kolonlarda çok işe yaramaktadır.

Kaydedilmiş Fonksiyon Veri Tabanı Yordamlar

Oracle veri tabanında kullanıcılara ait fonksiyon ve yordamlar, uygulamalarda sıkça kullanılacaksa veri tabanına kaydedilebilmektedir. Eğer bu fonksiyon ve yordamlara kullanım hakkı verilirse, tüm kullanıcılar tarafından çalıştırılabilir. Veri tabanı üzerinde saklanan bu program parçaları, uygulama tarafında yazılan program parçalarından daha hızlı çalışır.

Kullanıcılar

Veri tabanındaki nesne sahiplerine kullanıcı adı verilir. Kullanıcılar, nesne yaratır, kullanır veri tabanı silerler. Veri tabanı ilk kurulduğunda, en yetkili kullanıcılar olan SYS veri tabanı SYSTEM otomatik olarak yaratılır. Diğer kullanıcılar SYS tarafında sonra yaratılırlar.

SYS: Sistem kullanıcısıdır. Veri sözlüğünün sahibidir. Tablo boşluğu, kullanıcı, rol yaratma, yedek alma, kurtarma, veri tabanını açıp, kapama haklarına sahiptir. Veri tabanındaki tüm nesneleri kullanabilir. En yetkili kullanıcıdır.
SYSTEM: SYS ile hemen hemen aynı haklara sahip olan sistem kullanıcısıdır. SYS’den farklı olarak yedek alma veri tabanı kurtarma hakkı yoktur.


Veri Sözlüğü

Veri sözlüğü, veri tabanındaki kullanıcılar, kullanıcıların nesneleri, tabloların özellikleri gibi veri tabanı hakkındaki sadece okunabilir bilgilerin bulunduğu tablo ve görüntüler kümesidir. Oracle veri tabanının en önemli bölümüdür. Bir Oracle veri tabanı hakkındaki tüm bilgiler, veri sözlüğünden SQL cümlecikleri yazılarak öğrenilebilir.
Veri sözlüğü, veri tabanı kurulurken otomatik olarak yaratılır ve veri tabanında yapılan her türlü değişiklik otomatik olarak yansıtılır. Örneğin, kullanıcı tarafından bir tabloya bir alan eklenirse ya da kullanıcı bir uygulama çalıştırırsa, veri sözcüğü de o tabloya ait olan yapı kullanıcı fark etmeden değiştirilmektedir. Sistemde hangi işlemlerin aktif olduğu, kimlerin çalıştığı, hangi makineden ne kadar süre ile bağlandıkları, oluşan sistem problemlerini veri sözlüğünü değiştiremez, ekleme ve silme yapamaz; çünkü veri tabanının bütünlüğü bozulur.
Veri sözlüğündeki nesneleri sahibi SYS kullanıcısıdır. En çok kullanılan veri sözlüğü görüntüleri ve açıklamaları şunlardır.
DIST: Veri sözlüğünde bulunan bütün görüntülerin isim ve açıklamalarını içeren görüntüdür.
USER_TABLES: Kullanıcıların sahip olduğu tabloların yapısını gösteren bir görüntüdür.
USER_SEQUENCES: Kullanıcının sahip olduğu sıralar hakkında bilgi içeren görüntüdür.
USER_VIEWS: Kullanıcının sahip olduğu görüntüler hakkında bilgi içeren görüntüdür.
ALL_OBJECTS: Kullanıcının erişebileceği tüm nesneler hakkında bilgi içeren görüntüdür.
DBA_USERS: Veri tabanındaki tüm kullanıcılar hakkında bilgi içeren görüntüdür.
DBA_TABLESPAPECES : Veri tabanındaki bütün tablo boşlukları hakkında bilgi içeren görüntüdür.
USER_INDEXES: Veri tabanında bulunan tüm indeksler hakkında bilgi içeren görüntüdür.
V$DATAFILE: Veri tabanında bulunan tüm veri dosyaları hakkında bilgi içeren bir görüntüdür.
V$SESSION: Veri tabanı üzerinde aktif olan işlemlerin numaralarını, hangi kullanıcı, hangi makine ve hangi program tarafından çalıştırıldığını ve çalıştırdığı SQL hakkında detaylı bilgileri içeren görüntüdür.
V$SYSTAT: Veri tabanı açıldığından beri yapılan toplam fiziksel okuma sayısı, sıralanan kayıt sayısı, bu sıralanan kayıtların kaç tanesinin bellekte kaç tanesinin disk üzerinde yapıldığı, toplam okunan blok sayısı, redo log yapılan giriş sayısı, redo log dosyalarında boş yer arama gibi bilgileri dinamik olarak veren görüntüdür.
Eğer 1-( physical reads / (db block gets + consistens gets)) yani disk üzerinde yapılan okuma sayısının toplam okuma sayısına oranı 1’den farklı %90’dan düşük çıkarsa okunan veri bloklarının büyüklüğü yeterli değil demektir. Gereksiz I/O’dan kurtulmak için bu değerin büyütülmesi gerekir.
Eğer redo log dosyalarında yazmak iççin yapılan boş yer arama sayısının bu dosyalara yapılan giriş sayısına oranı (redo log space request / redo entries ) 1 / 5000’den büyük çıkarsa değişiklikler ara belleğinin yeterince büyük olmadığının anlaşılması gerekir.
V$LIBRARYCACHE : Paylaşımlı bellek alanının performansını değerlendirmek amacıyla kullanılan bir görüntüdür. Bu görüntüde yer alan “get hit ratio” değeri %90’aın altında çıkarsa, SGA’ın büyülüğü yeterli olmadığı sonucu çıkar ve bu parametrenin tekrar gözden geçirilmesi gerekir. “Get hit ratio”değeri kullanılan SQL sayısı / paylaşımlı bellek alanında aradıkça bulunan SQL sayısıdır.
V$ROWCACHE : Paylaşımlı bellek alanının performansını değerlendirmek amacıyla kullanılan diğer bir görüntüdür. Bu görüntüdeki nesne tanımlarının (object definition) “ gets / getsmisses” oranı %10’dan büyük çıkarsa, paylaşımlı bellek alanının büyüklüğü yeterli değil ve nesne tanımları için I/0 yapılıyor demektir.
V$PROCESS: Veri tabanı üzerinde aktif olan işlemlerin, hangi kullanıcı, hangi makine ve hangi program tarafından çalıştırıldığını ve herhangi bir beklemenin olup olmadığını gösteren görüntüdür.
V$SQL: Veri tabanı üzerinde çalışan aktif SQL cümleleri hakkında detaylı bilgi içeren bir görüntüdür


Makale:
Oracle Ve İlişkisel Veritabanı Yönetim Sistemleri 2 ADO.NET ve SQL Kubilay Kulaoğlu
  • Yazılan Yorumlar
  • Yorum Yaz
Bu konu hakkında yayınlanan yorum bulunmamaktadır.
"Yorum Yaz" tabını kullanarak sizde yorumlarınızı yazabilirsiniz.
Yorum yazabilmek için üye girişi yapmalısınız. Üye girişi için tıklayın.
Üye değilseniz Üyel Ol linkine tıklayarak üyeliğinizi hemen başlatabilirisniz.
 
  • Bu Konuda Son 10
  • Eklenen Son 10
  • Bu Konuda Geçmiş 10
Bu Konuda Yazılmış Yazılmış 10 Makale Yükleniyor
Son Eklenen 10 Makale Yükleniyor
Bu Konuda Yazılmış Geçmiş Makaleler Yükleniyor