Oracle'da Commit ve Rollback İşlemi

Oracle”da Commit ve Rollback İşlemi,

Datalar üzerinde işlem yapan insert,update,delete gibi DML cümleleri
Çalıştırıldığı zaman yapılan değişikliklerin kalıcı olması iÇin COMMIT
cümlesi Çalıştırılır. Yapılan bu değişiklikleri COMMIT cümlesi Çalıştırmadan
geri almak mümkündür. Bunu da ROLLBACK cümlesi ile yaparız.

Aşağıdaki durumlarda COMMIT komutu Çalıştırılır.

* COMMIT komutunu kendimiz Çalıştırdığımız zaman.
* Bir DDL cümlesi Çalıştırıldığı zaman.
* Oracle sunucularından disconnect oldugumuz zaman.

Aşağıdaki durumlarda ROLLBACK komutu Çalıştırılır.


*
ROLLBACK komutunu Çalıştırdığımız zaman.
* Sunucu anormal bir şekilde sonlandığı zaman.
* Bağlı olduğumuz oturum kill edildiği zaman.

ÜRNEK:

select adi,soyadi,adres from personel;

Yukarıdaki sorgu sonucu boş dönüyor.Yani tabloda herhangi bir kayıt yok.

insert into personel(adi,soyadi,adres) values (“tayfur”,'boler”,'istanbul”);

Yukarıdaki sorgu ile bir kayıt insert ettik.

COMMIT;

Yukarıdaki komut ile kayıtı kalıcı olarak

insert into personel(adi,soyadi,adres) values (“ali”,'bak”,'istanbul”);

Yukarıdaki sorgu ile bir kayıt insert ettik.

ROLLBACK;

Yukarıdaki komut ile yeni kaydımızı geri aldık.

insert into personel(adi,soyadi,adres) values (“ali”,'bak”,'istanbul”);

Yukarıdaki sql ile aynı kayıtı yeniden ekledik.

ALTER TABLE PERSONEL ADD (dogum_yeri VARCHAR2(20));

Yukarıdaki DDL ile personel tablomuza dogum_yeri kolonunu ekledik.

şimdi son eklediğimiz ‘ali’ kayıdını geri almak istiyoruz.

ROLLBACK;

Oracle ,yukarıdaki komutu Çalıştırdıgımızda geri alma işlemini yapamayacaktır.
Üünkü herhangi bir DDL ifade Çalıştırıldıgında otomatik olarak
COMMIT komutu Çalışmaktadır.

Bir sonraki makalelerde görüşmek dileğiyle,

Tayfur BÖLER
Database Administrator

Oracle'da SQL Cümlelerinin İşlenmesi

Oracle’da SQL Cümlelerinin İşlenmesi

Oracle veritabanında ve diğer veritabanlarında bulunan verileri
işlemek iÇin SQL cümlecikleri kullanılır. Kayıt eklemek, silmek, update etmek vs.
iÇin Veri İşleme Dili (DML) kullanılır. Mesala SELECT,UPDATE,INSERT
DELETE,EXPLAIN PLAN ve LOCK TABLE DML cümlecikleridir.

PARSE,EXECUTE ve FETCH:

Oracle SQL cümlecikleri 2 yada 3 aşamada işlenir. Tüm sqllerin işlenmesinde
parse ve execute işlemleri vardır. Bunlara ilaveten veritabanından
veri Çeken SELECT cümlelerinde birde FETCH aşaması vardır.

PARSE: Sql cümlelerinin işlenmesindeki ilk aşamadır.

* Sql cümlelerinin syntax olarak doğruluk kontrolu yapılır.
* Sql cümlelerinde bulunan tablo ve kolon isimleri veri sözlüğünden kontrol edilir.
* Sql cümlelerini Çalıştırmak isteyen kullanıcıların izni olup olmadığı kontrol edilir.
* Üalışma planı Çıkartılır.
* Sql cümlesi iÇin bellekte paylaşılmış sql alanı bulunur.
* Eğer ilgili sql daha önceden Çalıştırılmış ve parse aşamasından geÇmiş ise
ve ön ara bellekte bulunuyorsa yukarıdaki işlemler yapılmadan Oracle
direk olrak sql’i Çalıştırır.

EXECUTE: Oracle PARSE aşamasını geÇmiş olan SQL’i bu aşamada Çalıştırır.
Eğer sql cümleciği iÇinde LOCK işlemi gerektirecek delete veya update işlemi varsa
LOCK işlemi gerÇekleştirilir. Eğer LOCK işlemi gerektirecek herhangi bir sql yoksa
Oracle ön arabelleğe bakar eğer veriler arabellekte ise fiziksel dosyalardan bu
verileri tekrar okuma işlemi yapmaz.Bu şekilde işlem daha hızlı gerÇekleştirilir.

FETCH:
SQL select cümlelerinde ,execute aşamasını fetch aşaması yani
kayıt getirme işlemi takip eder. Bu aşamada execute aşamasında tespit edilen
kayıtlar eğer bir sıralama işlemi var ise sıralanarak yok ise normal şekilde
getirilir.

Böylece kısa bir şekilde Oracle da SQL cümleciklerinin nasıl bir mantıkla
işlendiğini öğrenmiş olduk.

Bir sonraki makalelerde görüşmek dileğiyle.

Tayfur BÖLER
Database Administrator

Mysql Update

Mysql Update,

Tablolarda data değişikliği yapmak iÇin kullanılır.

Syntax:

UPDATE tablo_ismi
SET kolonadi=yeniDeger
WHERE kosul

Ürnek:

*UPDATE personel
SET maas=100
WHERE adi=’tayfur’;

Bu query Çalıştırdığımız da adi tayfur olan personelin maaşi 100 olarak değiştirildi.

*UPDATE table1 SET table1field =
(SELECT MAX(table2.table2field) FROM table2
WHERE table1.table1field = table2.table2field)

*UPDATE personel
SET durum= case when maas<500 then 'Az Gelirli'
when maas>500 and maas<1500 then 'Orta Gelirli'
else ‘Yüksek Gelirli’ end ;

Bu query’i Çalıştırdığımızda personel tablosundaki durum kolonuna maas kolonundaki
değerin durumuna göre belli değerler atanmıştır.

Maas 500 den küÇükse Az Gelirli
Maas 500-1500 arası ise Orta Gelirli
Maas 1500 den büyükseYüksek Gelirli

Diğer makaleler de görüşmek dileğiyle,

Tayfur BÖLER
Database Administrator