Oracle 2
Salı, 06 Kasım 2007ORACLE. 2
Oracle Ürünleri2
Oracle RDBMS. 2
Oracle Uygulama Geliştirme Araçları2
SQL*Plus. 3
PL/SQL. 3
Net8. 3
SQL*Net4
Oracle8i Enterprise Edition ve Gerekli Donanım.. 4
Oracle8i Enterprise Edition(Windows NT). 4
Oracle8i Client(Windows NT ve Windows 95/98). 5
Oracle Programmer(Windows NT ve Windows 95/98). 5
Oracle8i Enterprise Edition Kurulumu.. 5
Oracle8i Enterprise Edition Ürününü Kaldırma.. 7
Oracle Veritabanı Yapısı7
Fiziksel Bölüm.. 8
Veri Dosyaları(Data Files)8
Kontrol Dosyaları(Control Files)8
Log Dosyaları(Log Files)8
Mantıksal Bölüm.. 8
Tablo Uzayı(TableSpace)8
Veri Tabanı Şema Nesneleri9
Küme(CLUSTER)9
İndeks(INDEX)9
Rol(ROLE)9
Geri Alma Parçası(ROLLBACK SEGMENT)9
Sıra(SEQUENCE)9
Kayıtlı Fonksiyonlar(STORED FUNCTION) ve Kayıtlı Prosedürler(STORED PROCEDURE)10
EÅŸanlam(SYNONYM)10
Tablo(TABLE)10
Görüntü(VIEW)10
Veri Blokları(Data Blocks), Genişlemeler(Extents),Parçalar(Segments)10
Bellek Yapısı(Memory Structure) ve Arka Plan İşlemleri(Background Processes). 11
Bellek Yapıları12
SGA(System Global Area)12
Program Genel Alanı(PGA)13
İşlem Yapısı(Process Architecture)13
Kullanıcı İşlemleri(User(Client) Processes)13
Oracle İşlemleri(Oracle Processes)13
Oracle’ın Çalışmasına Bir Örnek. 14
Veri Tanımlama Dili Komutları15
Veri Sözlüğü. 15
Veritabanı Nesneleriyle İlgili Komutlar. 15
CREATE TABLE. 15
ALTER TABLE. 16
DROP TABLE. 16
CREATE VIEW… 16
CREATE TABLESPACE. 17
CREATE USER.. 17
CREATE ROLE. 17
CREATE INDEX.. 18
CREATE SEQUENCE. 18
CREATE ROLLBACK SEGMENT.. 18
GRANT.. 18
REVOKE. 18
Yedek Alma ve Geri Getirme. 18
Fiziksel Yedek Alma. 18
NOARCHIVELOG Modunda Yedek Alma. 18
ARCHIVELOG Modunda Yedek Alma. 19
Mantıksal Yedek Alma. 20
Export20
Import20
SQL( Structured Query Language )20
PL/SQL.. 30
PL/SQL Bloklarının Yapısı30
PL/SQL Akış Kontrolü.. 30
IF Kontrol Yapısı31
LOOP Kontrol Yapısı31
İmleçler. 31
Hata Durumları32
PL/SQL Prosedürleri33
PL/SQL Fonksiyonları34
Kayıtlı Alt Programlar. 35
Parametre Modları35
PL/SQL Paketleri35
PL/SQL Tetiklemeleri36
ORACLE
İlişkisel Veritabanı Yönetim Sistemleri (Relational Database Management Systems - RDBMS) büyük miktarlardaki verilerin güvenli bir şekilde tutulabildiği, bilgilere hızlı erişim imkanlarının sağlandığı, bilgilerin bütünlük içerisinde tutulabildiği ve birden fazla kullanıcıya aynı anda bilgiye erişim imkanının sağlandığı programlardır. Oracle veritabanı da bir ilişkisel veri tabanı yönetim sistemidir.
Oracle veritabanının özellikleri ÅŸunlardır: Büyük miktarda veri tutabilmekte ve verilerin depolandığı alanları ayarlama imkanı vermektedir.Aynı anda çok sayıda kullanıcıya verilerin bütünlüğünü bozmadan hizmet verebilmektedir. Oracle 8 sürümü ile birlikte on binlerce kullanıcıya hizmet verebilmektedir.Günün 24 saati ve haftalar boyu hiç kapatılmadan çalışabilmektedir.İşletim sistemi, veri eriÅŸim dilleri ve aÄŸ iletiÅŸim protokolleri standartlarıyla uyumludur.Yetkisiz eriÅŸimleri engelleme ve kontrol edebilme imkanı saÄŸlamaktadır.Bütünlüğü veritabanı düzeyinde saÄŸlayabilmektedir, böylece daha az kod yazılmaktadır.İstemci/Sunucu mimarisinin bütün avantajlarını kullanabilmektedir.Oracle ile ilk defa karşılaÅŸan kullanıcılar genellikle Delphi, Visual Basic gibi görsel programlama dillerine benzeyen uygulamalarla karşılaÅŸmayı umarlar. Oysa ki yukarıda da belirttiÄŸimiz gibi Oracle bir iliÅŸkisel veritabanı yönetim sistemidir. Yani bir programlama dili deÄŸildir. Fakat Oracle tarafından geliÅŸtirilen ve Oracle’ın kendi uygulama geliÅŸtirme araçları içerisinde kullanılan bir programlama dili vardır. Oracle ürünleri genellikle büyük çaplı veri kontrolünü gerektiren uygulamalarda kullanılır. Öncelikle bir aÄŸda Oracle veritabanı sadece sunucu olarak adlandırılan bilgisayara yüklenir. Bu sunucu Oracle’ın desteklediÄŸi herhangi bir iÅŸletim sistemiyle çalışıyor olabilir. Yani Oracle’ın faklı iÅŸletim sistemleri için farklı sürümleri vardır. Bu sunucu bilgisayara kurulan veritabanı üzerinde tablolar, indeksler, eÅŸanlamlar,tablo uzayları ve ihtiyaç duyulan kayıtlı prosedürler oluÅŸturulur. Bunlar raporun sonraki bölümlerinde anlatılmaktadır. Oracle’ın bu veritabanına eriÅŸerek uygulama programı geliÅŸtirmeye yarayan diÄŸer ürünleri de istemci bilgisayarlara kurulur. Tabi sunucu bilgisayara da isteÄŸe baÄŸlı olarak bu ürünler kurulabilir. Åžimdi Oracle ürünlerini daha ayrıntılı olarak inceleyelim.
Oracle Ürünleri
Aşağıda şu an kullanımı en güncel olan değişik Oracle ürünleri tanıtılımıştır.
Oracle RDBMS
Oracle iliÅŸkisel veritabanı yönetim sistemi Oracle ÅŸirketinin ana ürünüdür. Bu ürünün ÅŸu an en yeni sürümü Oracle9i RDBMS’dir. Biz bu çalışmada bir önceki sürüm olan Oracle8i’yi esas alacağız. Oracle 8i’den bir önceki sürüm Oracle 7 ve onun bir önceki sürümü de Oracle 6’dır.
Oracle Uygulama Geliştirme Araçları
Oracle’ın veritabanı uygulamaları geliÅŸtirmek için görsel ürünleri bu grupta yer alır. Oracle’ın program geliÅŸtirmek için kullanılan bu ürünlerinin eski adı Oracle Power Objects idi. Daha sonra Oracle Developer 2000 ve sonra da Oracle Developer 6 ürünleri geliÅŸtirildi. Developer 2000 ve Developer 6 içerisinde Form Builder, Report Builder, Graphics Builder, Procedure Builder ve Schema Builder ürünlerini içerir. Form Builder kullanıcıya sunulacak arayüzlerin geliÅŸtirildiÄŸi programdır. İşte bu uygulama görsel bir programlama dilinin uygulama geliÅŸtirme ortamına benzer. Report Builder ürünü veritabanından elde edilen bilgiler ile raporlar hazırlamaya yarar. Özellikle banka ve kamu kuruluÅŸlarının ihtiyacı olan fatura, evrak gibi belgelerin hazırlanıp, çıktı alınması için geliÅŸtirilmiÅŸ bir programdır. Procedure Builder sürekli kullanılacak kodların prosedürler halinde oluÅŸturulup, kütüphaneler olarak kaydedilmesi iÅŸlemine yarayan bir programdır. Schema Builder ise veritabanı nesnelerinin görsel olarak oluÅŸturulabilmesi için geliÅŸtirilmiÅŸ bir uygulamadır. Burada tablo, görüntü, eÅŸanlam oluÅŸturma, tablolar arası iliÅŸki kurma,tablo kısıtlamaları oluÅŸturma iÅŸlemleri görsel olarak yapılabilir.
SQL*Plus
SQL*Plus, Oracle veritabanında sorgulama yapmak ve SQL komutlarını çalıştırmak için kullanılan bir araçtır. SQL*Plus’da SQL komutlarının yanısıra PL/SQL komutları da kullanılabilmektedir. Bu çalışmanın diÄŸer bölümlerinde anlatılan SQL komutları SQL*Plus kullanılarak hazırlanmıştır.
PL/SQL
PL/SQL (Procedural Language/SQL), yapısal dillere ait özelliklerin standart SQL’e eklenmesiyle ortaya çıkan Oracle’a has bir dildir. PL/SQL Oracle firmasının piyasaya sürdüğü her üründe önemli bir yere sahiptir. Kullanıcılar PL/SQL’i kullanarak programlarına bir çok yeni özellikler katmaktadırlar. Bunlar arasında;PL/SQL tabanlı kaydedilmiÅŸ yordamlar(stored procedures) ve veritabanı tetiklemeleri(triggers) ile önemli iÅŸ kurallarını programlamakOracle Developer ürünleri ile güçlü ve kolay kullanılabilir görsel ortamlarla programları detaylandırmak ve daha rahat kontrol etmekOracle tabanlı uygulamalarda nesne-tabanlı(object-oriented) tasarımlar yapma Web sayfalarından Oracle veritabanlarına link yapmaPL/SQL’in belki de en önemli özelliÄŸi istemci-sunucu ortamları tasarlama ile aÄŸ üzerinde dağıtık iÅŸlemler yapma ve bir çok sorguyu çalıştırma imkanı sunmasıdır. PL/SQL dili Ada dilinden sonra tasarlanmıştır. PL/SQL’de en geliÅŸmiÅŸ yordamsal dillerde olan veri tipleri, blok yapısı, ÅŸartlara baÄŸlı ve baÄŸlı olmayan kontrol cümleleri, bir çok döngü tipi, hata durumlarında kullanılacak yordamlar ve kullanıcı tarafından tanımlanabilecek nesneler yer almaktadır.
Net8
Net8 Oracle’ın bir aÄŸ ürünüdür. Farklı bilgisayarların veritabanına baÄŸlantı kurması ve ve istemci-sunucu arasında veri alışveriÅŸinin saÄŸlanabilmesi Net8’in ana görevidir. Net8 aÄŸdaki her bilgisayara kurulur. AÄŸ baÄŸlantısı saÄŸlandığında NET8 istemci ile sunucu arasında bir veri taşıyıcısı gibi iÅŸlem görür.
[IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image001.gif[/IMG]
Ağ üzerinde bir istemcinin sunucudaki veritabanına erişebilmesi için, sunucuda bir ağ servis adının(Net Service Name) ve bir dinleyicinin(LISTENER) oluşturulması gerekir. Oracle Enterprise Edition ile birlikte gelen Net8 Assistant ile bu gerçekleştirilebilir. Ağ servis adları, veritabanı gibi bir servisi ağda tanımlamak amacıyla basit bir yöntem olarak kullanılır. Bir kullanıcı ağ servis adını kullanarak bağlantısını şöyle sağlar:
Connect kullanıcı_adı/şifre@ağ_servis_adı
AÅŸağıda Ne8 Assistant görüntüsü verilmiÅŸtir. Verilen ÅŸekilde aÄŸ eriÅŸimi oluÅŸturmak için gereken iÅŸlemler oldukça basittir. Bir aÄŸ servis adı oluÅŸturmak için “AÄŸ Servis Adları” dizininin üzerine gelip, yandaki artı iÅŸaretini tıklamak gerekir. Bundan sonra bazı bilgiler girmemiz istenir. Önce kullancağımız aÄŸ servis adı bilgisi girilir, sonra iletiÅŸimde kullanılacak TCP/IP, SPX gibi protokollerden uygun olanın seçilmesi iÅŸlemi tamamlanır. Bundan sonra ana bilgisayar adı ve port numarası girilir. Ana bilgisayar adı veritabanının yüklü olduÄŸu bilgisayarın adıdır. Port numarası ise Oracle’ın veritabanları için kullandığı standart numara olarak 1521 girilir. Bu iÅŸlemden sonra veritabanın sürümü seçilir ve veritabanı oluÅŸturulurken girilen SID adı bilgisi verilir. Girilecek tüm bilgiler bu kadardır. EriÅŸimin saÄŸlanıp saÄŸlanmadığını anlamak için “Test” butonu ile baÄŸlantı denemesi yapılır. AÄŸ servis adları TNSNAMES.ORA adlı dosyaya haydedilir. Bu dosyada yaptığımız bir kayıt ÅŸu ÅŸekilde yer alır.
OGR =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = bavenoglu)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = ogr)
) )
Ağ erişimi dinleyici(LISTENER) adı verilen bir yardımcı programla sağlanır. Net8 Assistant içerisinde bir dinleyici oluşturulabilir. Bir istemci sunucuya bağlanmak istediğinde bu isteği dinleyici karşılar ve istemcinin konfigürasyon bilgileri ile kendi bilgilerini karşılaştırır eğer uygunsa bağlantı sağlanır. Dinleyicinin konfigürasyonu ile ilgili bilgiler LISTENER.ORA dosyasında saklanır.
[IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image003.jpg[/IMG]
SQL*Net
SQL*Net Net8’in yardımcı programıdır. Bir istemci bilgisayara Oracle Forms ürününün yüklendiÄŸini düşünelim. Bunun için istemci bilgisayar SQL*Net ile oluÅŸturulan veritabanı takma adını(alias) kullanır. Yukarıda Net8 konfigürasyonunun istemci bilgisayarlarda da yapılması gerektiÄŸini söylemiÅŸtik. İşte bu konfigürasyon istemci bilgisayarlarda SQL*Net sayesinde yapılır. Burada veritabanına verilecek takma isim, protokol adı, ana bilgisayar adı(veritabanının bulunduÄŸu) ve veritabanının SID olarak girilen ismi bilgileri girilerek düzenleme yapılır.
Oracle8i Enterprise Edition ve Gerekli Donanım
Bu rapor Oracle8i Enterprise Edition for Windows NT Release 8.1.5 sürümü üzerine düzenlenmiÅŸtir. Oracle8i Enterprise Edition CD’sinde üç farklı ürün yer almaktadır:Oracle8i Enterprise Edition (Server)Oracle8i ClientOracle Programmer Oracle8i Enterprise Edition(Windows NT)
Yükleme Türü
Açıklama
Typical
Tam anlamıyla bir veritabanı kullanmak isteyenler için tavsiye edilen yükleme türüdür. Bir baÅŸlangıç veritabanı, aÄŸ servisleri, Oracle yardımcı ürünleri ve yardım dokümanları yüklenir.720 MB yer kaplar. Pentium 133 ya da Pentium 166 iÅŸlemci ile kurulabilir. Önerilen iÅŸlemci Pentium 200 dür. 96 MB RAM ile çalışabilir. Tavsiye edilen bellek ise 128 MB ‘tır.
Minimal
Minimum veritabanı paketi kullanmak isteyenler için önerilir. Bir baÅŸlangıç veritabanı, aÄŸ servisleri ve bazı yardımcı ürünleri içerir. 520 MB yer kaplar. Pentium 133 ya da Pentium 166 iÅŸlemci ile kurulabilir. Önerilen iÅŸlemci Pentium 200 dür. 64 MB RAM ile çalışabilir. Tavsiye edilen bellek ise 96 MB ‘tır.
Oracle8i Client(Windows NT ve Windows 95/98)
Yükleme Türü
Açıklama
Typical
Veritabanı yöneticileri için veritabanına baÄŸlanma ve veritabanı yönetim iÅŸlerini gerçekleÅŸtirme araçlarını yükler. 299 MB yer kaplar. Intel 80486 iÅŸlemci ile çalıştırılabilir. Tavsiye edilen Pentium 133 ya da Pentium 166 dır. En az 32 MB RAM ile çalıştırılabilir. Önerilen 64 MB’tır.
Oracle Programmer(Windows NT ve Windows 95/98)
Yükleme Türü
Açıklama
Typical
Veritabanına eriÅŸebilen geliÅŸtirme araçları ve ara yüzlerini yükler. Bu paket, ön derleyicileri(precompilers), aÄŸ servislerini ve yardım dokümanlarını içerir. 267 MB yer kaplar. Intel 80486 iÅŸlemci ile çalıştırılabilir. Tavsiye edilen Pentium 133 ya da Pentium 166 dır. En az 32 MB RAM ile çalıştırılabilir. Önerilen 64 MB’tır.
Oracle8i Enterprise Edition Kurulumu
1.Kuruluma baÅŸlamadan önce Windows NT sistemine “Administrator” olarak girin.EÄŸer sistemde Oracle’ın daha önceki sürümleri varsa Startà Control Panelà Services içerisinde tüm Oracle ile baÅŸlayan servisleri seçip, saÄŸ tıklayın ve açılan menüden “Stop” seçeneÄŸini seçin.CD-Rom’u takın ve otomatik olarak çalışmasını bekleyin. EÄŸer çalışmazsa cd-rom sürücü dizinine geçip Setup.Exe dosyasını çalıştırın.Åžimdi “Oracle Universal Installer“ olarak adlandırılan ürün yükleme sihirbazının çalışmış olması gerekir. Bu ana pencerede “Install/Deinstall Products” seçeneÄŸini tıklayın.İlk karşınıza gelen tanıtım penceresidir. Burada daha önce yüklenmiÅŸ ürünlerin listesi görülebilir. Yeni yükleme için “İleri” butonunu tıklayın.“Dosya YerleÅŸimleri” penceresinde kaynak ve hedef dizin ve dosya adları belirtilir. Kaynak dizin E:\STAGE\PRODUCTS.JAR ÅŸeklinde otomatik olarak belirtilir. Bu dizin adı deÄŸiÅŸtirilmemelidir.Hedef olarak bir Oracle giriÅŸ dizini adı ve yolu girmeniz beklenir. Otomatik olarak giriÅŸ dizini adı için “OraHome81” ve yolu içinde “C:\Oracle\Ora81” belirtilir. Bu alanlar deÄŸiÅŸtirilmeden “İleri” butonu tıklanabilir.[IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image005.jpg[/IMG]
8.Ürün bilgileri listesinin yüklenmekte olduÄŸunu belirten bir pencere geldikten sonra karşınıza “Yüklenebilecek Ürünler” penceresi gelir. Yukarıda da anlattığımız gibi burada üç ürün vardır. Oracle8i Enterprise Edition seçeneÄŸini iÅŸaretleyerek “İleri” butonuna basın.“Yükleme Türleri” penceresinde tipik, minimum ya da özel seçeneklerinden biri seçilerek “İleri” butonuna basılır.EÄŸer tipik yükleme, ya da özel yükleme seçildiyse burada Oracle yardım dosyalarını diskten ya da CD-Rom’dan çalıştırma seçeneklerinden birini seçmeniz beklenir. EÄŸer diskte yaklaşık 133MB boÅŸ yeriniz varsa diske yükleme seçeneÄŸini seçebilirsiniz.Bilgisayarınızda daha önceden yüklü bir Oracle veritabanı varsa bu kısımda bunu güncellemek isteyip istemediÄŸinizi soran bir pencere gelir. “Migrate an Existing Database” kutusunu iÅŸaretlerseniz yüklemeden hemen sonra “Oracle Data Migration Assistant” programı çalışır ve eski veritabanınızı yeni sürüme terfi ettirir.“İleri” butonunu tıkladığınızda karşınıza “Database Identification” penceresi gelir. Burada “Global Database Name” ve “SID” alanlarını doldurmanız istenir. Buraya vereceÄŸiniz isim veritabanının adı olacaktır. Bu alanlardan birini doldurduÄŸunuzda diÄŸeri de aynı deÄŸeri otomatik olarak alır.[IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image007.jpg[/IMG]“İleri” butonunu tıkladığınızda genel ayarlar, ürün dilleri, alan gereksinimleri ve yeni yüklenecek ürünleri kapsayan bir liste gelir. Listede deÄŸiÅŸiklik yapılamaz. Sadece bildiri amaçlı bir listedir.“İleri” butonunu tıkladığınızda ürünler yüklenmeye baÅŸlar. Oracle8i Enterprise Edition sürümünün tipik olarak yüklenmesi minimum donanım ayarlarında yaklaşık yarım saat sürer.Dosyaların kopyalanması bittikten sonra “Konfigürasyon Penceresi” gelir.Veritabanının oluÅŸturulması, baÅŸlatılması ve aÄŸ ayarlarının yapılması burada otomatik olarak yapılır. Veritabanı oluÅŸturma iÅŸlemleri bittikten sonra karşınıza giriÅŸ ÅŸifrelerinin ve veritabanı ile ilgili bazı bilgilerin verildiÄŸi bir pencere gelir. Buradaki ÅŸifreler daha sonra veritabanı yönetimi için kullanılacak ÅŸifreler olduÄŸundan, önemlidir.[IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image009.jpg[/IMG]Bu iÅŸlemler tamamlandıktan sonra “Universal Installer” kapatılabilir.Oracle8i Enterprise Edition Ürününü Kaldırma
Bu ürünü kaldırmadan önce Startà Control Panelà Services seçilerek çalışan tüm Oracle servisleri kapatılmalıdır.(“Oracle” kelimesi ile baÅŸlayan tüm servisler)“Start > Programs > Oracle Installation Products > Universal Installer” seçilerek yükleme asistanı çalıştırılmalıdır.Burada “Yüklü Ürünler” butonu tıklanır.Kaldırmak istenilen ürünlerin solundaki kutular tıklanarak boÅŸaltılır ve “Kaldır” butonuna basılır.Ekrana bu kaldırılacak ürünlerin listesi gelir ve kaldırmak için son kez onay istenir.“Evet” butonuna tıklanırsa seçili ürünler kaldırılır. Sonra “Universal Installer” kapatılabilir.Oracle Veritabanı Yapısı
Oracle veritabanının, iÅŸletim sistemi tarafından bakıldığında, biri fiziksel diÄŸeri mantıksal olmak üzere iki bölümü vardır. Fiziksel bölüm, iÅŸletim sisteminden görünen kısımdır. Bunlar Data File(Veri Dosyası), Control File(Kontrol Dosyası) ve Log File(Log Dosyası) ‘dan oluÅŸmaktadır. Mantıksal Bölüm, bir ya da daha fazla tablo uzayı(Tablespace) ve tablolar(table), görüntüler(view), sıralar(sequence), eÅŸanlamlar(synonym), indeksler(index), kümeler(cluster), veritabanı baÄŸlantıları (database link), prosedürler(procedure), fonksiyonlar(function), ve paketlerden(package) oluÅŸan ÅŸema nesnelerinden oluÅŸmaktadır. Fiziksel bölüm iÅŸletim sistemi tarafından görülebilmesine raÄŸmen, mantıksal bölüm ancak Oracle’a baÄŸlanıp, SQL komutları çalıştırılarak görülebilmektedir. Yani, Oracle kurulu herhangi bir makinede, SQL bilgisi olmayan bir insan, Oracle’ın sadece fiziksel bölümünü görebilmektedir.
Oracle veritabanındaki her nesnenin bir sahibi(kullanıcı olarak bahsedilir) vardır. Her kullanıcı bir veya daha fazla tablo uzayına sahip olabilir. Her nesne, ait olduğu kullanıcının herhangi bir tablo uzayında (mantıksal olarak) bulunur. Her tablo uzayı da, kendisine sahip olan kullanıcının nesnelerini tutmak için işletim sisteminde bir veya daha fazla veri dosyasına sahip olabilmektedir.
Sonuç itibariyle, veritabanındaki her nesnenin bir kullanıcısı vardır ve bu nesneler mantıksal olarak o kullanıcının sahip olduÄŸu tablo uzaylarının herhangi birinin (hangisi olduÄŸu komutlarla öğrenilebilir) içerisinde, fiziksel olarak da o kullanıcının sahip olduÄŸu tablo uzayının herhangi bir veri dosyasında bulunur. Fakat, o veri dosyasının içerisine iÅŸletim sisteminden bu nesneyi bulmak için bakılamaz. Bu nesnenin sahibi ve mantıksal yeri “DML”(veri iÅŸleme dili) komutları ile bulunabilmektedir.
Fiziksel Bölüm
Fiziksel bölüm veritabanını oluşturan işletim sistemi dosyalarıdır. Bir Oracle veritabanı fiziksel olarak bir ya da daha fazla veri dosyası, iki ya da daha fazla log dosyası, bir ya da daha fazla kontrol dosyasından oluşur.
Veri Dosyaları(Data Files)
Veri dosyaları veri tabanındaki tüm verileri tutan dosyalardır. Tablo, indeks gibi mantıksal veritabanı yapılarının içerisindeki veriler fiziksel olarak veri dosyalarında tutulurlar. Bir veri dosyası kendisi için ayrılan alan dolduğunda, kendi sahip olduğu alanı artırabilecek özelliklere sahiptir. Bir ya da daha fazla veri dosyası mantıksal bir veritabanı depolama ünitesi olan bir tablo uzayını oluşturular.
Normal veritabanı işlemleri boyunca bir veri dosyası içerisindeki veriler okunur ve Oracle için ayrılan belleğe getirilirler. Örneğin bir kullanıcının veritabanındaki bir tablonun verilerine erişmek istediğini varsayalım. Eğer istenilen veriler bellekte yer almıyorsa, ancak o zaman uygun veri dosyasından okunur ve belleğe getirilirler.
Değişikliğe uğrayan veriler ya da yeni eklenen veriler veri dosyalarına hemen yazılmazlar. Sabit diske erişimi azaltmak ve böylece sistemin performansını artırmak için veriler bellek havuzunda tutulur ve gerektiğinde hepsi birden uygun veri dosyalarına kaydedilirler. Bunu Oracle artalan işlemleri belirler.
Kontrol Dosyaları(Control Files)
Tüm Oracle veritabanları kontrol dosyasına sahiptir. Bir kontrol dosyası veritabanı adı, veri dosyaları ve log dosyalarının adı ve diskteki yeri, veritabanının oluşturulma tarihi vb. veritabanı ile ilgili bilgileri tutar.
Her veritabanı oturumu açıldığında Oracle bu dosyayı kontrol ederek gerekli bilgileri alır. Eğer veritabanında fiziksel bir değişme olursa(yeni bir log dosyası ya da veri dosyası oluşturulması gibi), yapılan değişiklikler Oracle tarafından otomatik olarak kontrol dosyalarına yansıtılır.
Log Dosyaları(Log Files)
Redo Log dosyaları olarak bilinen bu dosyaların amacı veriler üzerinde yapılan tüm değişiklikleri kaydetmektir. Eğer veri dosyalarına kalıcı olarak kaydedilmiş olan, değişikliğe uğramış kayıtlarda bir bozukluk olursa yapılan değişiklikler redo log dosyalarından sağlanabilir ve işlemler kaybolmaz. Birden fazla tekrarlanan bozukluk durumlarında redo log dosyalarının da bozulmasını engellemek için Oracle farklı diskler üzerinde redo log dosyalarının birden fazla kopyasının alınmasına olanak sağlar.
Bir veritabanı işlemi sırasında elektrik kesilirse, bellekteki veriler veri dosyalarına kaydedilmeyecek ve verilerin kaybolması durumuyla karşılaşılacaktır. Oracle veritabanı tekrar açıldığında redo log dosyalarında yapılan son değişiklikler veri dosyalarına yansıtılarak verilerin kaybolması engellenir.
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.
[IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image010.gif[/IMG]
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)
Bir tablo uzayı açık ya da kapalı olabilir. Tablo uzayı kapalı olduğunda bu tablo uzayının içerisindeki nesnelere erişilemez. Bir tablo uzayı yönetim amaçlı olarak kapalı duruma alınabilir.
Veri Tabanı Şema Nesneleri
Şema nesneleri mantıksal veri depolama yapıları olarak bilinir. Veritabanı üzerinde kullanıcının belirli işleri yapabilmesi için tanımlanan bu yapılar tablolar, görüntüler, sıralar, eşanlamlar, indeksler, kümeler, veritabanı bağlantıları, prosedürler, fonksiyonlar, ve paketlerdir. Bir şema ise bu nesnelerin oluşturduğu gruptur.
Küme(CLUSTER)
Aynı anda sorgulanan birden fazla tablonun bir arada kaydedilmesine “cluster” denir. Bu yapı, beraber sorgulanan tablolarda hız kazanmak için çok önemlidir. ÖrneÄŸin “isci” tablosu ile “bolum” tablosunun(bu tabloların yapısı için SQL bölümüne bkz.) her ikisi de ortak olarak “bolum” ve “bolumno” alanlarını içermekte. Yani “isci” tablosundaki “bolum”, “bolum” tablosundaki “bolumno” alanına karşılık geliyor. Burada oluÅŸturulacak bir cluster’da her iki tablo veritabanında yan yana getirilerek aynı veri bloÄŸu içerisine kaydedilir.Böylece daha hızlı eriÅŸim saÄŸlanır.
İndeks(INDEX)
İndeksler tablo ve cluster’lar için kullanılan veri tabanı nesneleridir. Burada amaç aranılan bir kayda daha hızlı eriÅŸimdir. Özellikle üzerinde çok arama yapılan alan veya alanlar üzerinde indeks oluÅŸturmak çok etkilidir. İndeks oluÅŸturulduÄŸunda ilgili tablonun kayıtları yer deÄŸiÅŸtirmez. Sadece ilgili kayıtların kayıt numaraları olarak adlandırılan “rowid” ‘ler alınarak sıralama yapılır.
Bir tablo üzerinde oluşturulabilecek indeks sayısı sütunların kombinasyonları farklı olduğu müddetçe sınırsızdır. Bir sütun diğer sütunlarla değişik kombinasyonlarda kullanıldığı müddetçe birden fazla indeks içerisinde yer alabilir. Aynı sütun kombinasyonlarının indeksi, faklı indeks ismi kullanarak oluşturulmaya çalışılsa bile gerçekleştirilemez.
İndeksleme iÅŸleminin gerçekleÅŸtirilmesinde Oracle çoÄŸunlukla B-tree indeksleme metodunu kullanır. Bunun yanında “hash cluster indexes”, “reverse key indexes”, ve “bitmap indexes” yöntemlerini de kullandığı bilinmektedir.
İndeksler mantıksal ve fiziksel olarak oluşturuldukları tablodan bağımsızdırlar. Eğer bir indeks silinirse, ilgili tablo zarar görmez, çalışmaya devam eder. Fakat indeks olmadığı için veri erişim süresi artacaktır.
Oracle bir indeks oluşturulduğunda onu otomatik olarak kullanmaya başlar ve indeksin oluşturulduğu tablodaki silme, güncelleme ve ekleme işlemleri indekse otomatik olarak yansıtılır.
Rol(ROLE)
Oracle veritabanında her nesnenin ait olduğu bir kullanıcı vardır. Bir kullanıcı bir başka kullanıcının nesneleri üzerinde işlem yapmak isterse buna hakkı olması gerekir. Bir nesne üzerinde işlem yapabilme yetkisine hak denir. Örneğin veritabanına bağlanma, tablo oluşturma, bir başkasına ait tablodan kayıt listeleme, bir başkasının prosedürünü çalıştırma birer haktır. Bu haklar kullanıcılara atanmak suretiyle kullanıcıların bu işlemeleri gerçekleştirmeleri sağlanır. Hakların kullanıcılara atanması iki şekilde olabilir. Birinci olarak bir tabloya kayıt ekleme, kayıt silme vb. haklar bir kullanıcıya ya da kullanıcılara ayrı ayrı atanır. İkinci şekilde ise verilmek istenen haklar bir rol altında birleştirilir ve bu rol istenen kullanıcılara aktarılır.
Haklar “sistem hakları” ve “nesne hakları” olmak üzere ikiye ayrılır. Sistem hakları veritabanı ile ilgili olarak önceden tanımlanmış rollerdir. Oracle’da 60’tan fazla sistem hakkı tanımlanmıştır. Nesne hakları ise veri tabanı nesneleri üzerinde iÅŸlem yapma haklarıdır. “Create Table”, “Create TableSpace”, “Drop Any Index” gibi haklar sistem haklarına örnek olarak verilebilir. Nesne hakları ise 8 çeÅŸittir. “Select”, “Insert”, “Update”, “Delete”, “Alter”, “Index”, “Execute”, “References”, “All” çeÅŸittir. “All” ayrı bir hak olarak adlandırılmaz. DiÄŸer tüm hakları kapsar. Bu haklar sırayla kayıt seçme, kayıt güncelleme, kayıt silme, nesnelerin yapısını deÄŸiÅŸtirme, indeks oluÅŸturma, alt program çalıştırma, yabancı anahtar tanımlayabilme iÅŸlemlerini içerirler. Rol tanımlama ve hak verme komutları ileride ayrıntılı olarak iÅŸlenecektir.
Geri Alma Parçası(ROLLBACK SEGMENT)
Oracle veritabanının güvenliÄŸi açısından “Select”, “Insert”, “Update”, “Delete” gibi iÅŸlemlerin yedeÄŸini almaktadır. Alınan bu yedeklerin konulduÄŸu yerlere geri alma parçası denir. Kullanıcı bu tip iÅŸlemleri yaptıktan sonra “Rollback” komutunu uygularsa, yaptığı deÄŸiÅŸiklikler geri alma parçalarından getirilir ve böylece kayıtlar eski haline dönmüş olur. Kullanıcı “Commit” komutunu verirse yaptığı deÄŸiÅŸiklikler geri alma parçalarından geri getirilemez. Her veritabanında bir ya da birkaç tane geri alma parçası olabilir.
Sıra(SEQUENCE)
Tablolardaki kayıtlar için otomatik sıra numarası verilmesi isteniyorsa sıra nesnesi kullanılabilir. Bu sıra numarası veritabanı tarafından otomatik olarak üretilir. Özellikle çok kullanıcılı ortamlarda tekil olarak numara üretilmek istendiğinde çok kullanışlıdır. Birden fazla kullanıcı aynı anda böyle bir sayı üretmek isterse bunun program koduyla yapılması işlem hızını yavaşlatır. Çünkü bir kullanıcı diğeri işini bitirene kadar beklemek zorundadır. Sıra nesnesi bu işi otomatik olarak ve çok seri bir şekilde başarır.
Sıra numaraları Oracle’da tanımlı 38 rakama kadar tamsayılardan oluÅŸur. Bir sıra tanımlaması sıranın adını, artan ya da azalan olacağını, iki sayı arasındaki fark miktarını içerir. Oracle tüm sıra numarası tanımlarını SYSTEM tablo uzayının içerisindeki bir veri sözlüğü tablosuna kaydeder. SYSTEM tablo uzayı sürekli çalışır durumda olduÄŸu için tüm sıra numaraları da aktiftir. Sıra numaraları tablolardan bağımsız olarak üretilir. Yani bir sıra numarası bir ya da daha çok tablo için kullanılabilir.
Kayıtlı Fonksiyonlar(STORED FUNCTION) ve Kayıtlı Prosedürler(STORED PROCEDURE)
Bir grup SQL ya da PL/SQL komutunun belli bir işi gerçekleştirmek için bir araya getirilip veritabanına kaydedilmesi kayıtlı prosedürler ve fonksiyonlar sayesinde olur. Birden fazla uygulama programı içerisinde aynı işi yapan kodları sürekli yazmak yerine kayıtlı prosedür ve fonksiyonlar bir kere yazılır ve tüm uygulamalar tarafından kullanılır. SQL*Plus, Oracle Forms ya da Oracle Reports içerisinden bu prosedürler çağrılabilir. Prosedürler geriye birden fazla değer döndürebilirken, fonksiyonlar sadece bir değer döndürürler.
EÅŸanlam(SYNONYM)
EÅŸanlam bir tablo, görüntü, sıra, prosedür, fonksiyon ya da paket için “alias” olarak adlandırılan bir takma isimdir. EÅŸanlam bir takma isim olduÄŸu için veri sözlüğü içerisindeki tanımının kapladığı yer haricinde, veritabanında yer kaplamaz. EÅŸanlamlar güvenlik ve daha rahat kod yazma amacıyla kullanılırlar. Bir eÅŸanlam kullanıldığında ilgili nesnenin adı ve sahibi gizlenir ve SQL komutu içerisinde kullanımı kolaylaşır.
EÅŸanlamlar genel(Public) ve özel(Private) olarak tanımlanabilirler. “Genel” olarak tanımlanan eÅŸanlamlara tüm veritabanı kullanıcıları eriÅŸebilir. “Özel” olarak tanımlanan eÅŸanlamlara sadece ilgili nesnenin sahibi ve sahibi tarafından hak verilmiÅŸ bir baÅŸka kullanıcı eriÅŸebilir.
Bir nesnenin adı değiştirilmek istendiğinde ya da silinmek istendiğinde, bu nesneyi kullanan tüm uygulama programları değiştirilmek zorundadır. Oysa ki bu nesnenin bir eşanlamı oluşturulursa ve uygulama programları bu eşanlamı kullanırsa, eşanlam üzerinde yapılacak değişikliklerle bu silme vb. işlemlerden uygulama programlarının etkilenmesi önlenebilir.
Bir kullanıcı bir baÅŸka kullanıcının nesnesini kullanmak istediÄŸinde “kullanıcı_adı.nesne_adı” ÅŸeklinde bir yazım kuralına uymak zorundadır. EÄŸer bir “genel” olarak bir eÅŸanlam tanımı yapılırsa tüm kullanıcılar direk eÅŸanlam ismini kullanarak iÅŸlemlerini gerçekleÅŸtirebilirler.
Tablo(TABLE)
İliÅŸkisel Veri Tabanı Yönetim Sistemleri’nde veriler tablolar içerisinde yer alır. Her tablo bir isimle tanımlanır ve her biri bir “kayıt” olarak adlandırılan satırlar ile bu kayıtlardaki verilerin özelliklerini belirleyen sütunlardan oluÅŸur. Her tablo bir ya da daha fazla sütuna sahip olabilir. Her sütunun bir adı ve veri tipi vardır.
Bir tablo oluşturulduğunda Oracle verileri depolamak için bir tablo uzayı içerisinde bir veri segmenti ayırır. Veri segmentinin değerleri değiştirilerek bir tablo için ayrılacak yer miktarı da değiştirilebilir.
Görüntü(VIEW)
Görüntü bir ya da birkaç tablodan istenilen alanların alınmasıyla oluşturulan sanal bir tablodur. Görüntü bu tablolar üzerinde gerçekleştirilen bir sorgu sonucu oluşturulur. Bir görüntü üzerinde silme, güncelleme gibi işlemler yapılamaz. Çünkü görüntü oluşturulduğu tabloların sadece o anlık görüntüsüdür ve veritabanında kendi tanımının kapladığı yer haricinde yer kaplamaz.
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.
Aşağıda veri blokları, genişlemeler ve parça ilişkisini gösteren bir şekil yer almaktadır.
[IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image011.gif[/IMG]
Bellek Yapısı(Memory Structure) ve Arka Plan İşlemleri(Background Processes)
Bu bölüm Oracle veritabanının yönetiminin sağlanmasında kullanılan işlemleri ve bellek yapılarını içermektedir. Tüm bellek yapıları veritabanının oluşturulduğu bilgisayarın ana belleğinde yer almaktadır. Bu bölüm birden fazla kullanıcının aynı anda veritabanına erişip işlemlerini gerçekleştirmesinin nasıl olduğunu anlamak açısından önemlidir. Aşağıdaki şekil bu bölüm için temel alınacaktır.
[IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image012.gif[/IMG]
Bellek Yapıları
Oracle iÅŸlemlerini gerçekleÅŸtirmek için bellek yapıları oluÅŸturur ve bunları kullanır. ÖrneÄŸin bellek çalışan program kodlarını ve kullanıcılar arasında paylaşılan verileri depolar. Oracle’da birkaç adet bellek yapısı mevcuttur: SGA(System Global Area), veritabanı tamponları(database buffers), redo log tamponları(redo log buffers) ve paylaşım havuzunu(shared pool) içerir.
SGA(System Global Area)
SGA bir oracle veritabanı oturumu için gerekli verileri ve kontrol bilgilerini içeren paylaşımlı bellek bölgesidir. SGA ve Oracle arka plan iÅŸlemleri bir Oracle veritabanı oturumunu oluÅŸturur. Veritabanı oturumu baÅŸladığında Oracle SGA’yı oluÅŸturur ve veritabanı kapatıldığında yok eder. Her bir veritabanı oturumunun kendine ait bir SGA ‘sı vardır. Oracle’a baÄŸlanan kullanıcılar SGA içerisinde verileri paylaşımlı olarak kullanırlar. Yüksek performansın saÄŸlanabilmesi için SGA’nın olabildiÄŸince büyük olması gerekir. SGA büyük olursa bu alanda daha fazla bilgi depolanabilir ve sabit diske eriÅŸim sayısı azalır. SGA içerisinde depolanan bilgi veritabanı tamponları, redo log tamponları ve paylaşım havuzunu içeren birkaç tip bellek yapısına bölünmüştür. Bu alanlar sabit büyüklüktedir ve veritabanı açılırken oluÅŸturulurlar.
Veritabanı Tampon Belleği(Database Buffer Cache)
En son kullanılan veri blokları SGA içerisinde veritabanı tamponu denilen yerde depolanır. Bu veritabanı tamponlarının hepsi veritabanı tampon belleğini oluşturur. Veritabanı tampon belleği değiştirilmiş ve değiştirilmemiş bilgileri içerir. Son kullanılan verilerin ya da çok kullanılan verilerin bellekte depolanması sayesinde sabit disk erişim işlemleri azalır.
Redo Log Tamponu(Redo Log Buffer)
SGA’nın redo log tamponu veritabanı verileri üzerinde yapılan son deÄŸiÅŸiklikleri depolar. Redo log tamponunda depolanan deÄŸiÅŸiklik bilgileri veritabanı kurtarma iÅŸlemlerinde gerekli olan redo log dosyalarına kaydedilirler.
Paylaşım Havuzu(Shared Pool)
Paylaşım havuzu SGA’nın paylaşımlı SQL alanları gibi bellek yapılarını içeren kısmıdır. Paylaşımlı SQL alanı veritabanına girilen her farklı SQL komutunu iÅŸlemek için gerklidir. Her bir paylaşımlı SQL alanı aynı komutu iÅŸleyen birden fazla uygulama tarafından kullanılır. Burada amaç diÄŸer kullanıcılar için daha fazla paylaşımlı bellek alanı bırakabilmektir.
GeniÅŸ Havuz(Large Pool)
Geniş havuz SGA içerisinde isteğe bağlı bir alandır. Bu alan yedekleme, yapılan işlemleri geri yükleme, sunucunun giriş/çıkış işlemleri vb. işlemlerde daha geniş bellek ihtiyacı için kullanılan alandır.
Program Genel Alanı(PGA)
PGA sunucu iÅŸlemleri için veri ve kontrol bilgilerini içeren bellek tamponudur. Bir sunucu iÅŸlemi baÅŸlatıldığında PGA Oracle tarafından otomatik olarak baÅŸlatılır. Genellikle PGA bir kullanıcı ya da baÄŸlantı için ayrılan belleÄŸe denir. Bu bellek üç bölümü içerir: Birincisi yığın uzayı’dır(Stack Space). Yığın bir her bir baÄŸlantıya ait deÄŸiÅŸkenleri, dizileri vb. yapıları tutan bellektir. İkincisi baÄŸlantı bilgisi’dir(Session Information). BaÄŸlantı bilgisi, “multitheraeded” sunucu olarak adlandırılan bir bilgisayarda çalışılmıyorsa PGA alanında, aksi halde SGA da depolanır.(“multithreaded” uygulamalar aynı kod ve data segmenti kullanıp, farklı program sayacı, kayıtlık ve yığın kullanan uygulamalar için kullanılır.) Üçüncüsü Özel SQL alanıdır. Bu alanda farklı amaçla kulanılan bazı deÄŸiÅŸkenleri tutmak için kullanılır.
İşlem Yapısı(Process Architecture)
İşlem, iÅŸletim sistemlerinde, belli bir iÅŸi yapmak için bir adımlar dizisinin çalıştırılması olarak adlandırılmaktadır. Normalde her iÅŸlemin çalışabilmesi için bellekte kendine özel bir yeri vardır. Oracle’da da iki tür iÅŸlem vardır. Kullanıcı iÅŸlemleri(User Processes) ve Oracle İşlemleri(Oracle Processes).
Kullanıcı İşlemleri(User(Client) Processes)
Bir kullanıcı işlemi bir uygulama ya da yazılımın çalıştırlmasını sağlamak için oluşturulur. Kullanıcı işlemleri program arayüzü(program interface) yoluyla sunucuyla iletişim işlemlerini sağlar.
Program arayüzü bir kullanıcı işlemlerinin sunucu ile ileitişim kurmasında kullanılan mekanizmalar olark bilinir. Program arayüzü veritabanı ile bir Oracle Forms ya da Reports programı arasında iletişim standartlarını sağlar.
Oracle İşlemleri(Oracle Processes)
Oracle işlemleri diğer işlemler tarafından işlemin belli adımlarını gerçekleştirmesi için çağrılırlar. Oracle işlemleri de sunucu işlemleri(Server Processes) ve arka plan işlemleri(Background Processes) olarak ikiye ayrılır.
Sunucu İşlemleri(Server Processes)
Oracle, veritabanına baÄŸlanan bir kullanıcının isteklerini gerçekleÅŸtirebilmek için sunucu iÅŸlemlerini baÅŸlatır. ÖrneÄŸin bir kullanıcının, o an SGA’nın veritabanı belleÄŸi’nde yer almayan bir bilgiyi sorgulaması, veri bloklarının veri dosyalarından okunup SGA’ya getirilmesini saÄŸlayan sunucu iÅŸlemini baÅŸlatır. İstemci/Sunucu mimarili sistemlerde kullanıcı iÅŸlemleri ve sunucu iÅŸlemleri ayrı bilgisayarlarda çalıştırılır.
Arka Plan İşlemleri(Background Processes)
Oracle her veritabanı için ayrı olarak bir dizi arka plan iÅŸlemleri oluÅŸturur. Oracle veritabanına bir anda birden fazla kullanıcının baÄŸlandığını ve belli programları çalıştırdığını düşünelim. Oracle programlar tarafından oluÅŸturulan bu kullanıcı iÅŸlemleri’ni gerçekleÅŸtirmek için arka planda bazı iÅŸlemler gerçekleÅŸtirir. Her bir veritabanı kendi arka plan iÅŸlmelerine sahiptir. Åžimdi bu arka plan iÅŸlmelerinin neler olduÄŸuna bakalım:
Veritabanı Yazıcısı(Database Writer- DBWn)
Veritabanı yazıcısı, veritabanı tampon belleÄŸindeki deÄŸiÅŸtirilmiÅŸ veri bloklarını veri dosyalarına yazmakla görevlidir. Normalde tek bir veritabanı yazım iÅŸlemi bir çok sistemde yeterli olmasına raÄŸmen, birden fazla yazım iÅŸlemi tanımlanabilir. Bu iÅŸlemlere DBW0…DBW9 ÅŸeklinde isim verilir. Veritabanı açılırken bu DB_WRITER_PROCESSES parametresi ile veritabına bildirilir.
Bir kullanıcı yaptığı deÄŸiÅŸiklikleri “commit” komutuyla onayladığında veritabanı yazıcısı bu deÄŸiÅŸiklikleri hemen veri dosyalarına kaydetmez. Veritabanı yazıcısı veri dosyalarına yazma iÅŸlemini kendi belirler ve ya SGA içerisine çok miktarda baÅŸka verilerin alınması gerektiÄŸi zaman ya da çok az veritabanı tamponu kaldığı zaman yazma iÅŸlemini gerçekleÅŸtirir. Veri dosyalarına yazım iÅŸlemi en son kullanılan verilerden baÅŸlanarak gerçekleÅŸtirilir.
Log Yazıcısı(Log Writer LGWR)
Log yazıcısı SGA’nın redo log tamponundaki bilgileri diske kaydetmek için kullanılır. LGWR tampondaki bilgileri o an kullanımda olan bir redo log dosyasına sıra ile yazar. Bu yazma iÅŸlemi veritabanının sahip olduÄŸu birden fazla redo log dosyasına da yapılabilir.
Değişme Noktası(Checkpoint- CKPT)
Belirli zamanlarda SGA içerisindeki deÄŸiÅŸikliÄŸe uÄŸramış veritabanı tamponları DBWn tarafından belleÄŸe yazılır. Bu iÅŸlem deÄŸiÅŸme noktası iÅŸlemi olarak adlandırılır. DeÄŸiÅŸme noktası iÅŸlemi DBWn’e deÄŸiÅŸme anlarını haber vermekten ve veritabanındaki bütün veri dosyalarını ve kontrol dosyalarını yeni deÄŸiÅŸme noktasından haberdar etmek için güncellemekten sorumludur.
Sistem Analizi(System Monitor-SMON)
Sistem Analizi veritabanı oturumu açılırken oturum için kurtarma yapar, yani kontrol dosyalarını kontrol ederek geri alınması gereken bir işlemin olup olmadığına bakar, eğer varsa geri allma işlemini gerçekleştirir. Birden fazla veritabanı oturumunun olduğu ortamlarda SMON aynı zamanda bozulan sistemler içinde ayrı ayrı kurtarma yapar. SMON aynı zamanda kullanılmayan geçici parçaları(temporary segment) temizlemekte ve herhangi bir problemden dolayı bozulan işlemleri kurtarmaktadır. Bozulan işlemlerin sorgu komutları SMON tarafından tablo uzayı ve veri dosyası tekrar aktif hale getirildikten sonra kurtarılır. Son olarak SMON veritabanında daha fazla boş yer açılsın diye boş genişlemeleri birleştirmektedir.
İşlem analizi(Process Monitor-PMON)
İşlem Analizi herhangi bir kullanıcı işlemi bozulduğunda o işlemin kurtarılmasını yapmaktadır. PMON işlemin kullandığı belleği ve kaynakları temizlemekten sorumludur. PMON aynı zamanda dispatcher(ileride anlatılıyor) ve sunucu işlemlerini kontrol eder ve kapandıklarında yeniden çalıştırır.
Yedekleyici(Archiver-ARCn)
Yeekleyici o an kullanılmakta olan redo log dosyalarını, doldukları zaman yedek depolama ünitelerine kopyalar. Tüm sistemler için bir ARC0 işleminin olması yeterli olsa da birden fazla işlem gerçekleştirilebilir. Bu LOG_ARCHIVE_MAX_PROCESSES parametrsei ile belirlenir. ARCn işlemi veritabanı ARCHIVELOG modda çalışırken kullanılır.
Geri Kurtarıcı(Recoverer-RECO)
Geri kurtarıcı dağıtık veritabanında sistem veya aÄŸ hatalarından dolayı bekleyen iÅŸlemleri düzenler. Belli aralıklarla, yerel RECO uzaktaki veritabanına baÄŸlanıp yereldeki dağıtık iÅŸlemlerle ilgili “commit” ve “rollback” iÅŸlemlerini yapmaktadır.
Dispatcer(Dnnn)
Dispatcher’lar çoklu ortamlarda isteÄŸe baÄŸlı olarak çalıştırılmaktadırlar. Her iletiÅŸim protokolü için en az bir dispatcher iÅŸlemi (D000,….,Dnnn) oluÅŸturulmaktadır. Her dispatcher iÅŸlemi kullanıcı iÅŸlemlerinden gelen istekleri sunucu iÅŸlemlerine yönlendirmekte ve gelen cevapları da uygun kullanıcılara tekrar döndürmekten sorumludur.
Kilit(Lock-LCKO)
Kilit işlemleri birden fazla veritabanı oturumunun çalıştığı sistemlerde veritabanları arasında gereken bir takım kilitleme işlemlerini gerçekleştirir.
İş Kuyruğu(Job Queue-SNPn)
Dağıtık veri tabanı uygulamalarında 38 adetten fazla (SNP0,…,SNP9,SNPA,….SNPZ) iÅŸ kuyruÄŸu iÅŸlemi tablo snapshot’larını otomatik olarak güncelleyebilir. Bu iÅŸlemler periyodik olarak baÅŸlatılır.
Oracle’ın Çalışmasına Bir Örnek
AÅŸağıdaki örnek bir istemcinin aÄŸ üzerinden sunucudaki veritabanına eriÅŸip bir sorgulama yapmasının adımlarını içermektedir.Oracle veritabanı “host” ya da “database server” olarak adlandırılan bilgisayarda çalışıyor vaziyettedir.Bir kullanıcı istemci bilgisayarda kullanıcı iÅŸlemlerini gerçekleÅŸtiren bir uygulama programını çalıştırmaktadır. İstemci bilgisayar sunucu bilgisayar ile baÄŸlantısını uygun Net8 sürücüsünü kullanarak gerçekleÅŸtirir.Sunucu bilgisayarda da uygun bir Net8 sürücüsü çalışıyor vaziyettedir. Sunucu uygulama programından gelen baÄŸlantı isteÄŸini tespit eder ve kullanıcı iÅŸlemine karşılık gelen sunucu iÅŸlemini oluÅŸturur.Kullanıcı bir SQL komutu çalıştırır ve yaptığı deÄŸiÅŸikliÄŸi “commit” eder, yani onaylar.ÖrneÄŸin kullanıcı bir tablo içerisindeki bir kaydı deÄŸiÅŸtirir.Sunucu iÅŸlemi komutu alır ve paylaşım havuzunda bu SQL komutuna benzeyen bir paylaşımlı SQL alanı olup olmadığına bakar. EÄŸer böyle bir alan bulunursa sunucu iÅŸlemi kullanıcının bu SQL cümlesini çalıştırma haklarını kontrol eder. EÄŸer böyle bir alan yoksa yeni bir paylaşımlı SQL alanı oluÅŸturulur ve SQL komutu çalıştırılır.Sunucu iÅŸlemi bu SQL komutu için gerekli verilerin SGA’da olup olmadığına bakar. EÄŸer burada yoksa ilgili veri dosyasından verileri alıp SGA’ya getirir.Sunucu iÅŸlemleri komutun gereklerine göre SGA’daki verileri deÄŸiÅŸtirir. DBWn deÄŸiÅŸtirilmiÅŸ veri bloklarını gerekli olduÄŸu zaman kalıcı olarak diske kaydeder. SQL komutu onaylandığı için LGWR iÅŸlemi yapılan SQL iÅŸlemini redo log dosyalarına kaydeder.8.EÄŸer SQL komutunun çalıştırılması baÅŸarılı olduysa sunucu iÅŸlemi aÄŸ üzerinden istemcideki uygulamaya mesaj gönderir. EÄŸer baÅŸarılı olmadıysa uygun hata mesajını gönderir.Tüm bu iÅŸlemler yapılırken veritabanı sunucusu diÄŸer kullanıcıların aynı ya da farklı veriler üzerindeki iÅŸlemlerini de yürütür. Bu iÅŸlemlerin yapılabilmesi ve performansın artırılması için örneÄŸimiz içerisinde anlatılmayan baÅŸka arka plan iÅŸlemleride gerçekleÅŸtirilir.Veri Tanımlama Dili Komutları
SQL’de veritabanı nesnelerini oluÅŸturma, silme, yapısını deÄŸiÅŸtirme iÅŸlemleri için kullanılan komutlara veri tanımlama dili komutları denir. Bu komutlar “create”, “alter”, “drop”, “grant”, “revoke”, “analyze”, “audit”, “comment” komutlarıdır. Åžimdi bu komutları kullanarak veritabanı nesneleri ile iÅŸlemler yapacağız.
Veri Sözlüğü
Veri sözlüğü, Oracle veritabanı ile ilgili bilgilerin yine Oracle veritabanında tablolar ve görüntüler halinde saklanmasıyla oluşur. Veritabanı ile ilgili bu bilgiler kullanıcılar, haklar, veritabanı nesneleri, tablo kısıtlamaları vb. bilgilerinden oluşur. Veri sözlüğü Oracle veritabanın en önemli bölümüdür. Veritabanı hakkındaki tüm bilgiler veri sözlüğünden SQL komutları yazarak öğrenilebilir.
Veri sözlüğü, veritabanı kurulurken standart olarak oluşturulur ve yapılan değişiklikler otomatik olarak veri sözlüğüne yansıtılır. Örneğin bir kullanıcı bir tabloya bir alan eklerse, veri sözlüğünde o tabloya ilişkin yapı kullanıcı farketmeden değiştirilir böylece veri sözlüğünden veritabanı hakkında sürekli olarak güncel ve sağlıklı bilgi almak mümkün olur. Veri sözlüğü içerisindeki bilgiler SQL komutlarıyla sorgulanıp görülebilir. Fakat hiçbir kullanıcı veri sözlüğünü değiştiremez, ekleme yapamaz ve kayıt silemez. Veritabanı oluşturulurken oluşturulan veri sözlüğü tabloları SYS adlı kullanıcıya aittir. Veri sözlüğü tabloları için görüntüler oluşturulmuştur. Tüm kullanıcılar hakları olduğu müddetçe bu görüntülerden bir ya da birkaçını sorgulayabilirler. Veri sözlüğü görüntüleri, başlarındaki ön eklerine göre üç gruba ayrılır:USER_xxx : Veritabanına o an bağlı olan kullanıcının sahip olduğu nesneler ile ilgili görüntülerdir.ALL_xxx : Veritabanına o an bağlı olan kullanıcının sahip olduğu ve başkalarına ait olan ve kendisine kullanma hakkı verilmiş olan tüm nesnelerle ilgili görüntülerdir.DBA_xxx : DBA(veritabanı yöneticisi) veya DBA hakkına sahip kullanıcıların görebileceği görüntülerdir. Görüntü İsimleri
Açıklama
USER_TABLES
Kullanıcıların sahip olduğu tabloların yapısını gösteren 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_VİEWS
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 bütün nesneler hakkında bilgi içeren görüntüdür.
DBA_USERS
Veritabanındaki bütün kullanıcılar hakkında bilgi içeren görüntüdür.
DBA_TABLESPACES
Veritabanındaki bütün tablo uzayları hakkında bilgi içeren görüntüdür.
SCOTT kullanıcısının bütün nesnelerini görmesi
SELECT * FROM USER_OBJECTS
Bir kullanıcın kendine ait bütün tabloların adlarını listelemesi
SELECT TABLE_NAME FROM USER_TABLES
Bir kullanıcının tüm indeks bilgilerini listelemesi
SELECT INDEX_NAME,TABLE_NAME,TABLESPACE_NAME FROM ALL_INDEXES
Veritabanı Nesneleriyle İlgili Komutlar
CREATE TABLE
Tablo oluşturma komutunu anlatırken bir örnekle başlayalım.
CREATE table tbl_ogr
(OgrNum NUMBER(11) NOT NULL,
Ad VARCHAR2(15),
Soyad VARCHAR2(15),
Dogyer NUMBER(2),
CONSTRAINT cst_OgrNum PRIMARY KEY(OgrNum)
CONSTRAINT cst_dogyer FOREING key(dogyer) REFERENCES il(ilkod))
Bu komut “tbl_ogr” adında bir tablo oluÅŸturuyor. Tablonun dört alanı var. Bunlardan biri özel anahtar(Primary Key) olarak tanımlanmış. Bu alanın deÄŸeri boÅŸ olamaz ve tabloda aynı iki deÄŸer bulunamaz.. Bir tablo ile baÅŸka bir tablo arasında iliÅŸki kurulacaksa bu ana tabloda PRIMARY KEY tanımıyla, diÄŸer tabloda FOREIGN KEY tanımıyla yapılır. Yani doÄŸum yeri alanı için buradaki tablomuz ana tablo deÄŸil. Çünkü aynı yerde doÄŸmuÅŸ kiÅŸilerin kaydı tablomuzda olabilir. Böylece aynı il kodu birden fazla kayıtta yer alabilir. İliÅŸki kurulan diÄŸer tablonun adını yukarıdan çıkarabiliriz. Bu tablo “il” isminde. Her il bu tabloda kayıtlı ve her birinin bir kodu var. Bu tabloda bir ilin kaydı iki sütunda yer alamaz. Bu yüzden “ilkodu” alanı “il” tablosu için PRIMARY KEY olarak tanımlanmış.
PRIMARY KEY, NOT NULL gibi bildirimler kısıtlamalar olarak tanımlanır. Bir tabloda farklı şekilde kısıtlamalar yapılabilir. Kısıtlama için kullanılan bildirimler 5 adettir.NOT NULL : Bu kısıtlamanın konulduğu bir alanın mutlaka bir değeri olmak zorundadır.UNIQUE : Bu kısıtlamanın konulduğu bir alan bir değerden sadece bir adet içerebilir. Bu kısıtlamaya sahip alan NOT NULL ile tanımlanmadıysa NULL değer alabilir.PRIMARY : Bu kısıtlama bu alanın özel anahtar olmasını sağlar. Bu alan boş geçilemez ve yine tablo içerisinde bir değer iki kayıtta bulunamaz.FOREIGN KEY : Bu kısıtlama başka bir tablonun PRIMARY KEY olan alanıyla ilişki kurmak için gerekir.CHECK : Bu kısıtlama ile birlikte bir şart kullanılır. Tabloya kayıt girilirken değerlerin bu şarta uyması beklenir. ALTER TABLE
Daha önceden oluşturulmuş bir tablonun yapısını değiştirmek için ALTER TABLE komutu kullanılır.
ALTER TABLE tablo_adı
ADD | MODIFY | DROP (<sütun ismi> veri tipi <sütun kısıtlaması>)
ENABLE ifade1
DISABLE ifade2
ALTER komutuyla tablolara yeni bir alan ve kısıtlama eklenebilir, var olan alan ve kısıtlamaların durumu değiştirilebilir veya tablodan ksıtlamalar düşürülebilir. Fakat ALTER komutuyla var olan sütunlar düşürülemez. Bir alanın değeri büyültülebilir, fakat küçültülemez.
ALTER TABLE tbl_ogr
ADD CONSTRAINT cst_Bolum
FOREIGN KEY(Bolum)
REFERENCES usr_gazi.tbl_bol(BolKod);
Yukarıdaki örnekte tbl_ogr adlı tablonun yapısı değiştiriliyor. Bir başka kullanıcının bir tablosu ile ilişki kuruluyor.
ALTER TABLE tbl_ders
MODIFY dersad varchar2(40);
Bu örnekte de tbl_ders tablosunun bir alanının uzunluğu değiştiriliyor.
DROP TABLE
Daha önceden oluşturulmuş bir tablonun düşürülmesi için kullanılan komuttur. Kullanımı:
DROP TABLE <tablo_ismi> [CASCADE CONSTRAINTS]
Köşeli parantez içerisindeki tanım kullanılırsa master-detay ilişkili tablolarda master tablo düşürülünce detay tabloların da otomatik olarak düşürülmesi sağlanır. Eğer bu seçenek kullanılmazsa diğer tablolarla ilişkisi bulunan bir tablo silinemez. Ancak bu ilişkiler kaldırıldıktan sonra tablo silinebilir.
DROP TABLE tbl_ogr CASCADE CONSTRAINT
CREATE VIEW
Görüntü oluşturmak için bir SELECT cümlesi kullanmak gerekir. Bir görüntü bir ya da daha fazla tablodan oluşturulabileceği gibi, bir başka görüntüden de oluşturulabilir.Aşağıdaki örnekte üç farklı kullanıcnın aynı yapıdaki tabloları birleştirilip bir görüntü oluşturuluyor.
CREATE VIEW vi_ogr
AS SELECT * from usr_esef.tbl_ogr
UNION ALL SELECT * FROM usr_tef.tbl_ogr
UNION ALL
SELECT * FROM usr_gef.tbl_ogr;
CREATE TABLESPACE
Tablo uzayı kullanıcılara ait olan nesnelerin veritabanında mantıksal olarak tutulduğu yere denmektedir. Bir tablo uzayı oluştururken, bu tablo uzayının verilerinin hangi veri dosyasına konulacağı ve bu dosyanın dizini ile büyüklüğü bildirilmelidir.
CREATE TABLESPACE tbs_esef
DATAFILE ‘c:\orasql\tbs_esef.dat’ SIZE 10M
DEFAULT STORAGE (INITIAL 10K NEXT 50K MINEXTENTS 1 MAXEXTENTS 999)
ONLINE;
SIZE bildirisi veri dosyasının diskte kaplayacağı yeri belirler. Burada 10M, 5K gibi deÄŸerler girilebilir. INITIAL bildirisi tablo uzayı oluÅŸturulduÄŸunda, ilk alacağı geniÅŸleme’nin büyüklüğünü belirler. Next tablo uzayı oluÅŸturulduktan sonra alacağı geniÅŸlemelerin büyüklüğünü belirler. MINEXTENTS tablo uzayı oluÅŸturulduÄŸunda ilk olarak alacağı minimum geniÅŸleme sayısının belirtildiÄŸi bölümdür. MAXEXTENTS bir tablo uzayının ilk olarak aldığı geniÅŸleme de dahil olmak üzere alabileceÄŸi maksimum geniÅŸleme sayısının belirtildiÄŸi bölümdür.
CREATE USER
Kullanıcı veritabanı nesnelerinin sahibidir. Kullanıcılar, nesneleri oluÅŸturur, kullanır ve silerler. Oracle veritabanı ilk kurulduÄŸunda standart olarak üç kullanıcı tanımlanır. Bunlardan bir SYS kullanıcısıdır. SYS kullanıcısı veri sözlüğünün sahibi olan kullanıcıdır. Tüm nesneleri oluÅŸturma hakkına sahiptir ve diÄŸer bütün kullanıcların nesnelerine eriÅŸebilir. SYS kullanıcısının ilk ÅŸifresi “change_on_install” olarak belirlenmiÅŸtir. İkinci kullanıcı SYSTEM kullanıcısıdır. SYSTEM kullanıcısı veri sözlüğünü kullanma hakkına sahiptir. Önemli nesneleri oluÅŸturma hakkına da sahiptir. İlk ÅŸifresi “manager” olarak belirlenmiÅŸtir. DiÄŸer kullanıcıların nesnelerine eriÅŸme hakkına da sahiptir. Üçüncü kullanıcı SCOTT kullanıcısıdır. SCOTT kullanıcısı veritabanına baÅŸlangıçta yüklenen demo tabloların sahibidir. Bu kullanıcının nesneleri kullanılarak SQL denemeleri yapılabilir.
“CREATE USER” komutunu SYS ve SYSTEM kullanıcıları standart olarak kullanabilir. Bu hak diÄŸer kullanıcılara da verilebilir. Her kullanıcının nesnelerini tutmak için bir tablo uzayı oluÅŸturmak sistemin performansı açısından gerklidir. Kullanıcı oluÅŸturulurken bu tablo uzayı o kullanıcıya atanır.
CREATE USER usr_esef
IDENTIFIED BY esef
DEFAULT TABLESPACE tbs_esef
QUOTA UNLIMITED ON tbs_esef
Yukarıdaki örnekte usr_esef adında bir kullanıcı oluÅŸturuluyor. Kullanıcının ÅŸifresi IDENTIFIED BY ile “esef” olarak bildiriliyor. Kullanıcının kendi nesnelerini oluÅŸturacağı tablo uzayı için ise “tbs_esef” tablo uzayı bildiriliyor. Kullanıcının bu tablo uzayındaki tüm alanı kullanabileceÄŸi QUOTA UNLIMITED ile belirleniyor.
CREATE ROLE
Rol veritabanındaki hakların toplanmış haline denir. Veritabanı yöneticisi rolleri kullanarak sistemin güvenliğini daha kolay sağlayabilir. Roller Oracle tarafından önceden tanımlanmış roller ve kullanıcı tanımlı roller olarak iki şekilde düşünülebilir. Oracle tarafından önceden tanımlanan roller beş tanedir:
Rol Atanmış Haklar
CONNECT
ALTER SESSION,CREATE CLUSTER, CREATE DATABASE LINK, CREATE SEQUENCE, CREATE SESION, CREATE SYNONYM, CREATE TABLE, CREATE VIEW
RESOURCE
CREATE CLUSTER, CREATE PROCEDURE, CREATE SEQUENCE, CREATE TABLE, CREATE TRIGGER
DBA
“WITH ADMIN OPTION” ile birlikte bütün sistem hakları
EXP_FULL_DATABASE
SELECT ANY TABLE, BACKUP ANY TABLE, SYS.INCVID, SYS.INCFIL ve SYS.INCEXP tablolarına INSERT, UPDATE veDELETE hakkı
IMP_FULL_DATABASE
BECOME USER, WRITEDOWN
CREATE ROLE tabloma_bak
GRANT SELECT ON tbl_ogr TO tabloma_bak Yukarıdaki örnekte tabloma_bak adında bir rol oluÅŸturuluyor. Daha sonra bu role tbl_ogr tablosu üzerinde listeleme iÅŸlemi yapma hakkı veriliyor. Böylece bu rolün atandığı kullanıcı tbl_ogr tablosu üzerinde “SELECT” komutunu çalıştırabilecek.
CREATE INDEX
Daha öncede bahsedildiÄŸi gibi indeks tablodaki kayıtlara daha hızlı eriÅŸim için kullanılan nesnelerdir. Bir indeks oluÅŸturabilmek için “CREATE ANY INDEX” sistem hakkına sahip olmak gerekir. İndeks bir tablonun bir alanı üzerinde tanımlanabileceÄŸi gibi birden fazla alan üzerinde de tanımlanabilir.
CREATE INDEX indeks1 ON tbl_ogr(ogrnum,ad)
CREATE SEQUENCE
Sıra, sıralı olarak artan alanlar için veritabanında tutulan nesnedir. Örneğin birden başlayan ve birer birer artan bir sıra yaratmak için:
CREATE SEQUENCE sira1 START WITH 1 INCREMENT BY 1
CREATE ROLLBACK SEGMENT
Geri alma parçaları SELECT, INSERT, DELETE, UPDATE gibi komutlarla yapılan iÅŸlemlerin gerektiÄŸinde geri alınabilmesi için veritabanında ayrılan alanlara denir. “tbsp_esef” tablo uzayını kullanan, kayıt parametrelerinden ilk parçanın büyüklüğü 10M, sonraki geniÅŸlemelerin büyüklüğü 1M, minimum geniÅŸleme sayısı 2, maksimum geniÅŸleme sayısı 121 ve ortalama deÄŸeri 30M olan ve ismi “rol_seg” olan bir geri alma parçası şöyle oluÅŸturulabilir:
CREATE ROLLBACK SEGMENT rol_seg
TABLESPCE “tbsp_esef”
STORAGE( INITIAL 10M
NEXT 1M
MINEXTENTS 2
MAXEXTENTS 121
OPTIMAL 30M)
GRANT
Sistem ya da nesne haklarının kullanıcılara veya rollere atanması için kullanılan komuttur.
GRANT DELETE ON tbl_ogr TO usr_gef
Yukarıdaki örnekte usr_gef kullanıcısına tbl_ogr tablosunda silme yapma yetkisi verilir.
REVOKE
Sistem ya da nesne haklarının kullanıcılardan veya rollerden geri alınnması için kullanılan komuttur.
REVOKE DELETE ON tbl_ogr FROM usr_gef
Yukarıdaki örnekte usr_gef kullanıcısından tbl_ogr tablosunda silme yapma yetkisi geri alınır.
** Veritabanı nesnelerinin yönetilmesiyle ilgili daha bir çok veri tanımlama dili komutu vardır. Bu komutların diÄŸerleri burada anlatılmayacaktır. Bir nesneyi oluÅŸturmak için “CREATE”, silmek için “DROP”, deÄŸiÅŸtirmek için “ALTER” komutlarının kullanıldığının bilinmesi diÄŸer komutlar için bir temel teÅŸkil edecektir. Komutlar içerisinde kullanılan parametreler Oracle yardım dokümanlarında ayrıntılı olarak verilmektedir.
Yedek Alma ve Geri Getirme
Oracle, verileri her ne kadar güvenli tutsa da, fiziksel sebeplerden(disk hataları), kullanıcı hatalarından veya benzer durumlardan dolayı yedeklere ihtiyaç duyulmaktadır. Yedek alma, veritabanı yöneticisinin yapacağı önemli işlerden birisidir.
Oracle’da, yedek almayla ilgili deÄŸiÅŸik yöntemler vardır. Veritabanı yöneticisi, kendi veritabanının durumuna göre, yedek almayla ilgili bir veya birden fazla yöntemi kullanmaya karar vermelidir. Bu kararı vermede, yönetici, yedeÄŸi kimin alacağı, hangi tür depolama ünitesine alınacağı, ne kadar sıklıkla alınacağı, alınan yedeklerin büyüklüğü, veritabanında küçük de olsa bir kayıba tahammül olup olmadığı gibi çok deÄŸiÅŸik sebepleri gözönünde bulundurmak zorundadır.
Fiziksel Yedek Alma
Fiziksel yedek alma veri dosyalarının, redo log dosyalarının ve kontrol dosyalarının yedeklerinin alınması işlemidir. Bir veritabanı ARCHIVELOG ve NOARCHIVELOG olmak üzere iki farklı modda çalışabil