1 Eylül 2008 Pazartesi

İlişkisel Veritabanı, Oracle ve SQL

ORACLE KURULUMU
Oracle veritabanının kurulumu ile yazılarımıza başlıyoruz. Yapılacak örnekler Oracle 10g üzerinde olacaktır ve Windows XP (32 bit) kullanılacaktır.

OTN (Oracle Technology Network) adresinden Win32 Database'i indirelim. Java tabanlı olan Oracle Universal Installer (OUI) başlatılmadan önce, bölgesel dil ayarlarımızın İngilizce'de olduğundan emin olalım. Türkçe olarak ayarlı ise kurulum sırasında problem yaşayabilirsiniz.

OUI çalıştırdıktan sonra Oracle kurulum dizinini seçiniz. Veritabanınız buraya kurulacaktır. Kurulum tipleri arasında Enterprise (bütün özellikleri), Standard (belirli bir kısmı kurulmaz) ve Personal (tek kullanıcı) vardır.

Install dedikten sonra ilk önce yazılımı, ardından veritabanını kuracaktır. Yükleme tamamlandıktan sonra Exit diyerek OUI'dan çıkıyoruz.

Oracle veritabanı 3 aşamada açılmaktadır. Bunlardan ilki "nomount" aşamasıdır. Bu aşamada veritabanı açılmaz, sadece init.ora dediğimiz Oracle'ın parametrelerinin bulunduğu dosya okunur. Startup nomount diyerek bu aşamaya geçebiliriz. Bir sonraki aşama olan "mount" aşamasına ise, alter database mount diyerek geçebiliriz. Eğer veritabanı kapalıyken "mount" aşamasına geçmek istersek, startup mount yazmamız gerekmektedir. Bütün startup komutlarının sonuna "quiet" yazarsak bize ilk açılıştaki SGA ve diğer birimlerin toplam boyutlarını göstermez. Sadece startup yazılırsa, veritabanı önce nomount aşamasına, ardından mount aşamasına ve son olarak open aşamasına geçecektir. Startup force yazılırsa, veritabanı açıksa shutdown abort ile kapatılır ve startup komutu verilir. Bu komutu veritabanını normal şekilde kapatamıyorsak kullanabiliriz.

Veritabanımızı açtık, şimdide kapatalım. Veritabanını kapatmak için uygulanan bir kaç değişik komut vardır. Bunlardan ilki shutdown ya da shutdown normal'dır. Bu kapatma yönetimde, bütün bağlı kullanıcıların sistemden çıkmaları beklenir. Bu işlem sürerken Oracle yeni kullanıcı kabul etmez. Shutdown immediate diyerek kapattıysak, Tüm kullanıcıların bağlantıları kesilir ve işlemi süren kullanıcılara rollback yapılır yani, commit işlemi yapılmamış bütün kayıtlar rollback edilir. Bu esnada yeni kullanıcı kabul edilmez ve veritabanı kapatılır. Shutdown transactional komutu işlenirse, kullanıcılardan commit (işlemlerini onaylamak için) ya da rollback (işlemlerini onaylamamak için) yazmaları beklenir. Bu sırada yine yeni kullanıcılara ve yeni işlemlere izin verilmez. Kullanıcılardan commit veya rollback komutu geldiğinde kullanıcılar atılır ve veritabanı kapanır. Shutdown abort ile ise, tüm tamamlanmamış işlemler geri alınır, yeni kullanıcılara izin verilmez ve bağlı olan bütün kullanıcılar derhal atılır. Ardından veritabanı direk kapatılır. Bu kapatılma tarzı çok önemli durumlar haricinde kullanılmamalıdır ve Oracle tekrar açıldığında SMON ve PMON gibi bir takım Oracle veritabanını ait background process'lerin recovery işlemini gerçekleştirmesi gerekir.

SQL (STRUCTURED QUERY LANGUAGE)
Bir veritabanına ait ve depolanmış olan verileri sorgulamamıza yarayan gerece SQL denir. SQL sorguları (query) ile veritabanımızdan istenilen düzeyde ve şekilde verileri ekranımıza getirebiliriz. SQL sorgularının içinde bir takım kategoriler bulunmaktadır. DDL (Data Definition Language) ve DML (Data Manipulation Language) dediğimiz kategorilere göre ayrılabilirler.
DDL: Create, Drop, Alter, Truncate, Grant, Revoke, Audit vs.
DML: Select, Update, Insert, Delete, Merge vs.
DDL komutları veritabanının şeklini ve genel yapısını değiştirdikleri için kullanıldıkları anda commit edilirler ve schemaya bağlı her kullanıcı (session) için geçerli kılınır. Ancak DML komutları sadece veri ile ilgili olduğu için kullanıldıkları anda commit edilmezler.
SQL sorgusuna bir örnek vermek gerekirse;
SQL> select * from employees; --> Employees tablosundaki bütün sütünlara ait verileri ekranımıza getirir. Buradaki "*" bütün anlamına gelmektedir ve bütün sütünları temsil etmektedir. Kaç tane olursa olsun. Bir başka şekilde yazma yöntemi ise;
SQL> select e.* from employees e; --> Employees tablosuna "e" ismini taktık ve e'nin bütün sütünları getirmesi için yine "*" işaretini kullandık.
Select sorguları ile verileri görebilir ve sınırlandırmalarını yardımcı komutları ile gerçekleştirebiliriz. Ancak şu aşamada sadece verilerinin tümünü çekebilmeyi gösteriyor olacağım.
SQL> desc employees; --> Employees tablosunu desc eder yani açıklar.
Bugünkü konularımız bu kadardır. Bir sonraki yazıda Oracle veri tiplerini ve aritmetik operatörleri işleyeceğiz. Buraya kadar biraz hızlandırılmış geçtim, kafanıza takılan sorular olursa lütfen e-posta gönderiniz.

İyi akşamlar ve Ramazan ayınız mübarek olsun.
Takip et: @oganozdogan