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 gereklidir.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 iletişim kurmasında kullanılan mekanizmalar olarak
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şlemlerine sahiptir.Şimdi bu arka plan işlemlerinin 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 veritabanı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
alma 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)
Yedekleyici 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) İş 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.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şlemleri de gerçekleştirilir.
Veri Tanımlama Dili Komutları 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
ifade2ALTER komutuyla tablolara yeni bir alan ve kısıtlama
eklenebilir, var olan alan ve kısıtlamaların durumu değiştirilebilir veya
tablodan kısı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_derstablosunun 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ıcını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, ik 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:
"WITH ADMIN OPTION" ile birlikte bütün sistem hakları
EXP_FULL_DATABASEEXP_FULL_DATABASE
SELECT ANY TABLE, BACKUP ANY TABLE, SYS.INCVID,SYS.INCFIL ve SYS.INCEXP
tablolarına INSERT,UPDATE veDELETE hakkıSELECT ANY TABLE,BACKUP ANY
TABLE,SYS.INCVID,SYS. INCFIL ve SYS.INCEXP tablolarına NSERT, UPDATE ve
DELETE hakkı
IMP_FULL_DATABASEIMP_FULL_DATABASE
BECOME USER, WRITEDOWNBECOME USER, WRITEDOWN
CREATE ROLECREATE 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:
GRANT 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ınması 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.